ACPI: Make _OSI(Linux) a special case
authorLen Brown <len.brown@intel.com>
Wed, 30 May 2007 04:10:38 +0000 (00:10 -0400)
committerLen Brown <len.brown@intel.com>
Wed, 30 May 2007 04:10:38 +0000 (00:10 -0400)
commitf507654d450d329c81a70eec0096d5dfe67802ec
treebdc34cda973fac170cc90d5b6aa61d27ac558949
parentae00d812436dc968f4a5dea7757b6a94910b6dc4
ACPI: Make _OSI(Linux) a special case

_OSI("Linux") is like _OS("Linux"), it is ill-defined and
virtually no BIOS vendors test interaction with it.
As a result, it can do more damage than good because
it causes the BIOS to follow un-tested paths.

Recently, several machines have turned up that erroneously
test this string in a way which causes them to _not_ test other
compatibility strings, including the ZI9 and Toshiba.
So it appears that this bad code has made it into
a BIOS vendor's reference BIOS.

Linux has no choice but to stop advertising compatibility
with _OSI string "Linux" - as there are an unbounded
number of possible incompatibilities going forward.

But some BIOSes have already shipped which do use it
for things like conditionally re-enabling video on resume
from S3.  (Too bad they didn't do that unconditionally)

Add special case code for _OSI(Linux)
Squawk to dmesg if _OSI(Linux) is requested
Add DMI list both to enable and disable _OSI(Linux)
But for now, keep the default enabled via
#define OSI_LINUX_ENABLED.

http://bugzilla.kernel.org/show_bug.cgi?id=7787

Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/osl.c
drivers/acpi/utilities/uteval.c