[PATCH] apci: checksum: RSDT and XSDT checksum failures should not be critical (LP: #1013168)

Colin Ian King colin.king at canonical.com
Mon Jun 18 08:01:17 UTC 2012


On 18/06/12 03:38, Alex Hung wrote:
> On 06/14/2012 10:06 PM, Colin King wrote:
>> From: Colin Ian King<colin.king at canonical.com>
>>
>> It seems that the kernel is quite happy to handle RSDT and XSDT tables
>> that
>> fail on their checksum checks, so lets not fail these as critical
>> failures
>> anymore.
>>
>> Signed-off-by: Colin Ian King<colin.king at canonical.com>
>> ---
>>   src/acpi/checksum/checksum.c |   41
>> +++++++----------------------------------
>>   1 file changed, 7 insertions(+), 34 deletions(-)
>>
>> diff --git a/src/acpi/checksum/checksum.c b/src/acpi/checksum/checksum.c
>> index 264e7d0..2c41cce 100644
>> --- a/src/acpi/checksum/checksum.c
>> +++ b/src/acpi/checksum/checksum.c
>> @@ -89,16 +89,6 @@ static void checksum_rsdp(fwts_framework *fw,
>> fwts_acpi_table_info *table)
>>
>>   }
>>
>> -/*
>> - *  The following tables the kernel requires the checksum to be valid
>> otherwise
>> - *  it will not load them, so checksum failures here are considered
>> critical errors.
>> - */
>> -static char *critical_checksum[] = {
>> -    "RSDT",
>> -    "XSDT",
>> -    NULL
>> -};
>> -
>>   static int checksum_scan_tables(fwts_framework *fw)
>>   {
>>       int i;
>> @@ -131,35 +121,18 @@ static int checksum_scan_tables(fwts_framework *fw)
>>               fwts_passed(fw, "Table %s has correct checksum 0x%x.",
>>                   table->name, hdr->checksum);
>>           else {
>> -            int i;
>> -            int log_level = LOG_LEVEL_LOW;
>> -
>> -            for (i = 0; critical_checksum[i]; i++) {
>> -                if (!strcmp(table->name, critical_checksum[i])) {
>> -                    log_level = LOG_LEVEL_CRITICAL;
>> -                    break;
>> -                }
>> -            }
>> -
>> -            fwts_failed(fw, log_level, "ACPITableChecksum",
>> +            fwts_failed(fw, LOG_LEVEL_LOW, "ACPITableChecksum",
>>                   "Table %s has incorrect checksum, "
>>                   "expected 0x%2.2x, got 0x%2.2x.",
>>                   table->name, (uint8_t)(hdr->checksum-checksum),
>>                   hdr->checksum);
>>
>> -            /* Give some contextual explanation of the error */
>> -            if (log_level == LOG_LEVEL_CRITICAL)
>> -                fwts_advice(fw,
>> -                    "The kernel requires this table to have a "
>> -                    "valid checksum and will not load it. This "
>> -                    "will lead to ACPI not working correctly.");
>> -            else
>> -                fwts_advice(fw,
>> -                    "The kernel will warn that this table has "
>> -                    "an invalid checksum but will ignore the "
>> -                    "error and still load it. This is not a "
>> -                    "critical issue, but should be fixed if "
>> -                    "possible to avoid the warning messages.");
>> +            fwts_advice(fw,
>> +                "The kernel will warn that this table has "
>> +                "an invalid checksum but will ignore the "
>> +                "error and still load it. This is not a "
>> +                "critical issue, but should be fixed if "
>> +                "possible to avoid the warning messages.");
>>
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_TABLE_CHECKSUM);
>>           }
>
> If checksum is incorrect, that means it cannot be determined whether the
> table is still trustworthy. It is known that kernel will ignore the
> error and therefore it is not critical; however, will it be better to
> make the level to high or medium so the bug will be highlighted and fixed?
>
> After all, the error means a system does not meet ACPI specification.

Well, I'm OK with HIGH, or MEDIUM, I suspect MEDIUM is better because it 
isn't a show-stopper of a bug, but it still need some attention.  I can 
re-send with this level increased if you think that is better.

Colin
>
> Best Regards,
> Alex Hung
>





More information about the fwts-devel mailing list