Linked by Eugenia Loli 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).
Thread beginning with 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 ;)

Reply Score: 5

RE: Blaim the MS DSDT compiler
by Doc Pain on Fri 13th Apr 2007 18:18 in reply to "Blaim the MS DSDT compiler"
Doc Pain Member since:
2006-10-08

"One can load a custom fixed DSDT table into the kernel at boot time [...] 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."

FreeBSD allows loading a custom dsdt since... version 5? Simply insert

acpi_dsdt_load="YES"
acpi_dsdt_type="acpi_dsdt"
acpi_dsdt_name="/boot/my_custom_dsdt.aml"

into /boot/loader.conf and test.

"I got my laptop with ACPI working that way ;) "

I was lucky to disable ACPI loading on my "old" laptop and have APM running instead. Impossible today, because APM does not exist anymore.

Reply Parent Score: 2

flav2000 Member since:
2006-02-08

I remember that, when I got my Toshiba Centrino laptop in 2003, I had to make a custom DSDT in order to have any sort of ACPI working in Linux.

Later on, I just have to add a workaround in the kernel. Guess what that was?

The trick was to change the Operating System string in the Linux acpi.h to be "Windows XX". As long as it's a 10-letter phrase with the starting word "Windows" on it the laptop would happy comply with the Linux ACPI implementation.

Coincidence? I don't think so.

Reply Parent Score: 4