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.

Important

This article is for programmers. If you're a customer who has received a blue screen error code while using your computer, see Troubleshoot blue screen errors.

ACPI_BIOS_ERROR Parameters

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

A pointer 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

A pointer 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.

0x1000C

Revision ID

Function Index

0

_DSM method for interrupts returned malformed data.

0x1000D

The ACPI Extension for the device

Value 0 : _PRW specified with no wake-capable interrupts and at least one GPIO interrupt Value 1 : Since there are wake-capable interrupts, _PRW should specify a GpeInfo value of 0xffffffff

0

A device used both GPE and GPIO interrupts, which is not supported.

0x1000E

The Status returned by the validation function.

Pointer to the ACPI namespace path UNICODE_STRING.

Pointer to the resource list compared against the SDEV.

A secure device's SDEV resources do not match its corresponding _CRS or _PRS entry.

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.

This table describes memory usage issues where the following parameters are used.

Parameter 1 Parameter 2 Parameter 3 Parameter 4 Cause

0x1000

The high portion of the physical address of the memory region.

The low portion of the physical address of the memory region.

The length of memory being mapped.

ACPI had a fatal error when processing a memory operation region. The memory operation region tried to map memory that has been allocated for OS usage.

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

A pointer 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.

Resolution

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.

Remarks

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.

See Also

Bug Check Code Reference