Debugging Tools for Windows

Bug Check 0xA5: ACPI_BIOS_ERROR

The ACPI_BIOS_ERROR bug check has a value of 0x000000A5. This bug check indicates that the Advanced Configuration and Power Interface (ACPI) BIOS of the computer is not fully compliant with the ACPI specification.

Parameters

Four bug check parameters appear on the blue screen. Parameter 1 indicates the kind of the incompatibility. The meaning of the other parameters depends on the value of Parameter 1.

If the BIOS incompatibility is related to Plug and Play (PnP) or power management, the following parameters are used.

Parameter 1 Parameter 2 Parameter 3 Parameter 4 Cause
0x01 ACPI's deviceExtension ACPI's ResourceList 0: No resource list is found

1: No IRQ resource is found in list

ACPI cannot find the System Control Interrupt (SCI) vector in the resources that are handed to it when ACPI is started.
0x02 (See the table later on this page)
0x03 The ACPI object that was being run The return value from the interpreter The name of the control method (in ULONG format) ACPI tried to run a control method while creating device extensions to represent the ACPI namespace, but this control method failed.
0x04 The ACPI extension that _PRW belongs to A pointer to the method The DataType returned (see Amli.h) ACPI evaluated a _PRW and expected to find an integer as a package element.
0x05 The ACPI extension that _PRW belongs to Aointer to the _PRW The number of elements in the _PRW ACPI evaluated a _PRW, and the package that came back failed to contain at least two elements. The ACPI specification requires that two elements always be present in a _PRW.
0x06 The ACPI extension that _PRx belongs to A pointer to the _PRx A pointer to the name of the object to look for ACPI tried to find a named object, but it could not find the object.
0x07 The ACPI extension that the method belongs to A pointer to the method The DataType returned (see Amli.h) ACPI evaluated a method and expected to receive a buffer in return. However, the method returned some other data type.
0x08 The ACPI extension that the method belongs to A pointer to the method The DataType returned (see Amli.h) ACPI evaluated a method and expected to receive an integer in return. However, the method returned some other data type.
0x09 The ACPI extension that the method belongs to A pointer to the method The DataType returned (see Amli.h) ACPI evaluated a method and expected to receive a package in return. However, the method returned some other data type.
0x0A The ACPI extension that the method belongs to A pointer to the method The DataType returned (see Amli.h) ACPI evaluated a method and expected to receive a string in return. However, the method returned some other data type.
0x0B The ACPI extension that _EJD belongs to The status that the interpreter returns The name of the object that ACPI is trying to find ACPI cannot find the object that an _EJD string references.
0x0C The ACPI extension that ACPI found a dock device for A pointer to the _EJD method 0: BIOS does not claim system is dockage

1: Duplicate device extensions for dock device

ACPI provides faulty or insufficient information for dock support.
0x0D The ACPI extension that ACPI needs the object for The (ULONG) name of the method that ACPI looked for 0: Base case

1: Conflict

ACPI could not find a required method or object in the namespace This bug check code is used if there is no _HID or _ADR present.
0x0E The NS PowerResource that ACPI needs the object for The (ULONG) name of the method that ACPI looked for 0: Base case ACPI could not find a required method or object in the namespace for a power resource (or entity other than a "device"). This bug check code is used if there is no _ON, _OFF, or _STA present for a power resource.
0x0F The current buffer that ACPI was parsing The buffer's tag The specified length of the buffer ACPI could not parse the resource descriptor.
0x10 (See the table later on this page)
0x11 (See the table later on this page)
0x14 The current buffer that ACPI was parsing The buffer's tag A pointer to a variable that contains the ULONGLONG length of the buffer ACPI could not parse the resource descriptor. The length exceeds MAXULONG.
0x15 The ACPI Machine Language (AML) context 1: Failed to load table

2: The Parameter Path String Object was not found

3: Failed to insert Parameter Data into the ParameterPath String Object

4: Out of system memory

The NT status code ACPI had a fatal error when attempting to load a table.
0x16 A pointer to the parent NSOBJ A pointer to the illegal child ACPI namespace object Reserved ACPI had a fatal error when processing an xSDT. An object was declared as a child of a parent that cannot have children.

If an interrupt routing failure or incompatibility has occurred, the following parameters are used.

Parameter 1 Parameter 2 Parameter 3 Parameter 4 Cause
0x2001 InterruptModel (integer) The return value from the interpreter Apointer to the PIC control method ACPI tried to evaluate the PIC control method but failed.
0x10001 A pointer to the device object A pointer to the parent of the device object Apointer to the _PRT object

(See the following Comments section)

ACPI tried to do interrupt routing, but failed.
0x10002 A pointer to the device object A pointer to the string name that ACPI was looking for but could not find A pointer to the _PRT object

(See the following Comments section)

ACPI could not find the link node referenced in a _PRT.
0x10003 A pointer to the device object The device ID or function number.

This DWORD is encoded as follows: bits 5:0 are the PCI device number, and bits 8:6 are the PCI function number

A pointer to the _PRT object

(See the following Comments section)

ACPI could not find a mapping in the _PRT package for a device.
0x10005 A pointer to the _PRT object

(See the following Comments section)

A pointer to the current _PRT element.

(This pointer is an index into the _PRT.)

The device ID or function number.

This DWORD is encoded as follows: bits 15:0 are the PCI function number, and bits 31:16 are the PCI device number

ACPI found an entry in the _PRT that the function ID is not all F's for.

(The generic format for a _PRT entry is that the device number is specified, but the function number is not.)

0x10006 A pointer to the link node.

(This device is missing the _DIS method.)

0 0 ACPI found a link node, but it cannot disable the node.

(Link nodes must be disabled to allow for reprogramming.)

0x10007 The vector that could not be found 0 0 The _PRT contained a reference to a vector that is not described in the I/O APIC entry's MAPIC table.
0x10008 The invalid interrupt level. 0 0 The ACPI SCI interrupt level is invalid.



0x10009 0 0 0 The Fixed ACPI Description Table (FADT) could not be located.
0x1000A 0 0 0 The Root System Description Pointer (RSDP) or Extended System Description Table (XSDT) could not be located



0x1000B The ACPI table signature A pointer to the ACPI table 0 The length of the ACPI table is not consistent with the table revision.
0x20000 The I/O port in the Fixed Table 0 0 The PM_TMR_BLK entry in the Fixed ACPI Description Table doesn't point to a working ACPI timer block.

If a miscellaneous failure or incompatibility has occurred, the following parameters are used.

Parameter 1 Parameter 2 Parameter 3 Parameter 4 Cause
0x20000 The I/O port in the Fixed Table 0 0 The PM_TMR_BLK entry in the Fixed ACPI Description Table does not point to a working ACPI timer block.

If Parameter 1 equals 0x02, the ACPI BIOS could not process the resource list for the PCI root buses. In this case, Parameter 3 specifies the exact problem, and the remaining parameters have the following definitions.

Parameter 2 Parameter 3 Parameter 4 Cause
The ACPI extension for the PCI bus 0x0 A pointer to the QUERY_RESOURCES IRP ACPI cannot convert the BIOS' resource list into the proper format. This probably represents an error in the BIOS' list encoding procedure.
The ACPI extension for the PCI bus 0x1 A pointer to the QUERY_RESOURCE_REQUIREMENTS IRP ACPI cannot convert the BIOS' resource list into the proper format. This probably represents an error in the BIOS' list encoding procedure.
The ACPI extension for the PCI bus 0x2 0 ACPI found an empty resource list.
The ACPI extension for the PCI bus 0x3 A pointer to the PNP CRS descriptor ACPI could not find the current bus number in the CRS.
The ACPI extension for the PCI bus A pointer to the resource list for PCI A pointer to the E820 memory table The list of resources that PCI claims to decode overlaps with the list of memory regions that the E820 BIOS interface reports. (This kind of conflict is never permitted.)

If Parameter 1 equals 0x10, the ACPI BIOS could not determine the system-to-device-state mapping correctly. In this situation, Parameter 3 specifies the exact problem, and the remaining parameters have the following definitions.

Parameter 2 Parameter 3 Parameter 4 Cause
The ACPI extension whose mapping is needed 0x0 The DEVICE_POWER_STATE (this is "x+1") _PRx was mapped back to a non-supported S-state.
The ACPI extension whose mapping is needed 0x1 The SYSTEM_POWER_STATE that cannot be mapped ACPI cannot find a D-state to associate with the S-state.
The ACPI extension whose mapping is needed 0x2 The SYSTEM_POWER_STATE that cannot be mapped The device claims to be able to wake the system when the system is in this S-state, but the system does not actually support this S-state.

If Parameter 1 equals 0x11, the system could not enter ACPI mode. In this situation, Parameter 2 specifies the exact problem, and the remaining parameters have the following definitions.

Parameter 2 Parameter 3 Parameter 4 Cause
0x0 0 0 The system could not initialize the AML interpreter.
0x1 0 0 The system could not find RSDT.
0x2 0 0 The system could not allocate critical driver structures.
0x3 0 0 The system could not load RSDT.
0x4 0 0 The system could not load DDBs.
0x5 0 0 The system cannot connect the Interrupt vector.
0x6 0 0 SCI_EN never becomes set in PM1 Control Register.
0x7 A pointer to the table that had a bad checksum Creator revision The table checksum is incorrect.
0x8 Apointer to the table that ACPI failed to load Creator revision ACPI failed to load DDB.
0x9 FADT version 0 Unsupported firmware version.
0xA 0 0 The system could not find MADT.
0xB 0 0 The system could not find any valid Local SAPIC structures in the MADT.

Cause

The value of Parameter 1 indicates the error.

Resolving the Problem

If you are debugging this error, use the !analyze -v extension. This extension displays all the relevant data (device extensions, nsobjects, or whatever is appropriate to the specific error).

If you are not performing debugging, this error indicates that you have to obtain a new BIOS. Contact your vendor or visit the internet to get a new BIOS.

If you cannot obtain an updated BIOS, or the latest BIOS is still not ACPI compliant, you can turn off ACPI mode during text-mode setup. To turn off ACPI mode, press the F7 key when you are prompted to install storage drivers. The system does not notify you that the F7 key was pressed, but it silently disables ACPI and enables you to continue your installation.

Comments

A PCI routing table (_PRT) is the ACPI BIOS object that specifies how all the PCI devices are connected to the interrupt controllers. A computer with multiple PCI buses might have multiple _PRTs.

You can display a _PRT in the debugger by using the !acpikd.nsobj extension together with the address of the _PRT object as its argument.

Build machine: CAPEBUILD