ACPI device initialization order
Posted: Thu Nov 19, 2020 5:20 am
The ACPI specification states that a device's _STA method is executed before executing the _INI method, which is in turn executed before _ADR, _CID, _HID, _UID and _SUN.
In Bochs, the _STA method of \_SB.PCI0.ISA.LPT accesses a PCI_Config operation region belonging to \_SB.PCI0.PX13, which is defined later. Also, the _STA method of \_SB.LNKA accesses a PCI_Config operation region belonging to \_SB.PCI0.ISA.P40C. Therefore, the devices containing those operation regions would have to have already had their _ADR object evaluated, right? So there is a specific order in which the devices have to be examined, but how does one know this? Is it just another Bochs bug? The specification specifically warns you not to access operation regions until the OS indicates they are ready.
In Bochs, the _STA method of \_SB.PCI0.ISA.LPT accesses a PCI_Config operation region belonging to \_SB.PCI0.PX13, which is defined later. Also, the _STA method of \_SB.LNKA accesses a PCI_Config operation region belonging to \_SB.PCI0.ISA.P40C. Therefore, the devices containing those operation regions would have to have already had their _ADR object evaluated, right? So there is a specific order in which the devices have to be examined, but how does one know this? Is it just another Bochs bug? The specification specifically warns you not to access operation regions until the OS indicates they are ready.