Linked by Eugenia Loli-Queru on Fri 13th Apr 2007 11:19 UTC
Microsoft "It seems unfortunate if we do this work and get our partners to do the work and the result is that Linux works great without having to do the work" said Bill Gates in 1999 (pdf). While we don't know if he actually managed to do just that (creating problems to other OSes to work well with ACPI), but if he did, it is a good explanation why ACPI has been flaky on the majority of x86 computers with anything else other than Windows (the older, APM standard, seemed more compatible with alternative OSes).
Permalink for comment 230516
To read all comments associated with this story, please click here.
Blaim the MS DSDT compiler
by subspawn on Fri 13th Apr 2007 13:25 UTC
subspawn
Member since:
2006-04-28

The reason most ACPI-implementations are horrible and don't work well with non-MS OS's is that Microsoft has been so friendly to create an easy DSDT compiler (easy because it doesn't complain about bugs & warnings, perfect for lazy programmers).

The DSDT (Differentiated System Description Table) is like the index of the a BIOS's ACPI functions. Now it so happens to be that MS's DSDT compiler generates non-100%-ACPI compliant & bugged code which only Windows can understand and work with.

Intel has a free DSDT compiler that does work 100% compliant, why are the OEM manufacturers so bloody stupid,you get one for free, why buy MS's?

One can load a custom fixed DSDT table into the kernel at boot time (see http://acpi.sourceforge.net/dsdt/index.php) for more info. They have several fixed DSDT's available as well and there's plenty of documentation to learn the AML language for fixing your own table.
I got my laptop with ACPI working that way ;)