Brendan wrote:
I only suggested "some kind of enumeration mechanism", which could be as simple as an static ACPI table that says things like (e.g.) "there's a fan and temperature controller at <location> that complies with <hardware_standard>"; combined with competent design of those hardware standards (e.g. including a way to identify fans and temperature sensors in the relevant hardware standard, in the same way that USB controllers have a standard way to determine the number of USB ports, or HPET has a standard way to determine capabilities, etc); such that an OS can have a small number of generic drivers without any AML nonsense needed (and without the risk of relying on potentially buggy firmware, etc).
The problem with that solution is that while the table tells you what hardware is available, you still need to have a driver for each possible device. If someone comes out with a new device (e.g. a new kind of fan contoller), you can't do anything with it until the OS has a new driver, even if it's a new "standard" device.
We've seen this happen with USB (OHCI, UHCI, EHCI, xHCI), but at least with those the worst that happens is that the USB devices connected to the new controller don't work. With power management, having "partial" control isn't safe; not being able to control certain fans or monitor certain temperatures could easily lead to hardware damage (or in reasonably well-designed hardware, the system powering off without warning when it overheats). Personally, I believe any piece of hardware that can be physically damaged by software means is inherently defective and should be returned to place of purchase immediately for refund, but unfortunately such garbage exists and isn't even extremely rare.
If the system can't boot up and remain stable (e.g. because some of the fans cooling essential hardware don't work), how can the user install the necessary updates/drivers? While it's much easier now with readily available high-speed Internet, in the time when ACPI was designed, it wasn't reasonable to require a new OS install disk to be issued every time a new piece of hardware was released.
Of course, ACPI doesn't always work as well as it should and systems do still sometimes overheat (or sound like a jet taking off and wear out their fan motors due to "fail-safe mode"; max-speed fans running at all times), but for the most part, they'll work well-enough to get an OS and drivers installed.
Brendan wrote:
From my perspective at the time (which was relatively common in the late 1990s), the original design goal was to ensure that it's extremely difficult (due to both complexity and the "OS name" problem) for alternative OSs (e.g. Linux, FreeBSD, etc) to compete against Windows.
I prefer not to assign to malice what can adequately be explained by incompetence and naivety. While there are plenty of examples of systems shipping with obviously broken and untested non-Windows AML, I see this more as incompetence by vendors who are too cheap to care about non-mainstream platforms, rather than a deliberate attempt to stifle alternative operating systems. Intel were obviously pretty naive to not expect this to happen, but I expect there were pressing reasons for it at the time (e.g. Windows 9x and NT having different ACPI compatibility levels).
Still, there were plenty of distasteful practices by software and hardware vendors at the time, so you're right to be suspicious.