Re: [GIT PULL] x86 setup BIOS workarounds

From: H. Peter Anvin
Date: Thu Apr 02 2009 - 16:23:50 EST


Len Brown wrote:

At the risk of rushing to the defense of the ACPI spec...

This does not look like a backwards incompatible change to me.

In ACPI 2.0, size of 20 is always returned, and it would
be a Linux bug if we examined the undefined values after byte 19.

In ACPI 3.0, byte 20 is now defined. So if the BIOS returns
a size >= 21, we are permitted to examine byte 20.

So I agree with the test above, but I do not agree with the comment.


If you look at the details of the ACPI spec, this flag is explicitly specified so that the BIOS can always return a fixed number of entries. Now, a clever BIOS could of course skip these entries if the OS only requests 20 bytes -- but if it can do that, it could just equally well have *always* skipped those entries! So the flag is useless.

However, the ACPI 3 spec is written so to actively lead people into implement things this way, and given BIOS developer track records, they would simply truncate the result to 20 bytes if the size passed in is 20. This, of course, means that it is now reporting an invalid entry, without retaining the information that it is invalid...

-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/