Search code examples
operating-systembiosfirmwareuefiacpi

What does these ACPI names mean?


I dumped the ACPI tables on my laptop with the RW Everything. But I don't know what all these strange abbreviations mean.

I can guess _PR stands for processor, but where can I look up the others?

enter image description here

ADD 1

I have a feeling that these names are arbitrary. They are just variables. Variable names can be anything. It is their values that matter. And the values are assigned in operation regions to indicate addresses.


Solution

  • The ACPI Specification lists many predefined names. Yes, _PR is for the Processor Namespace, but it is depreciated.

    PNTF and XWMB are not defined in the specification. You can read Section 5.3 ACPI Namespace for the rules for naming. The important thing is that these 32-bit identifiers must be globally unique so that they can be referenced. The manufacturer will have defined these, and without more context it will be hard to guess their use.

    _SB (System Bus) is another pre-defined root namespace, see 5.3.1 Predefined Root Namespaces. All Device/Bus Objects are defined under this (_SB) namespace.

    6.5.1 _INI (Init): _INI is a device initialization object that performs device specific initialization. This control method is located under a device object and is run only when OSPM loads a description table.

    6.2.11 _OSC (Operating System Capabilities) This optional object is a control method that is used by OSPM to communicate to the platform the feature support or capabilities provided by a device’s driver.

    LNKA-LNKH have to do with PCI interrupt routing.

    And so forth. Go through the ones you are interested in and search in the ACPI specification. If it isn't in the specification you might be able to guess, but without more information it will be difficult.

    The main thing to note about these labels is that they are used in other blocks to reference data or methods or to coordinate events. This is how the OS can go from something happening to taking the correct device specific actions, e.g. putting a device into a low power mode when a timer expires to indicate no user activity for some length of time specified by an OS power scheme. These labels are not just variables though, they often have methods (like that _INI one) associated with them. Those methods can get called from the OS directly or from other blocks.