解决方法
如果我们正在调试此错误,请使用 !analyze -v 扩展名。
此扩展显示所有相关数据(设备扩展、nsobjects 或者任何适合特定错误的数据)。
如果我们不执行调试,此错误表明我们必须获得新的 BIOS。
请联系供应商或者访问 Internet 以获取新的 BIOS。
如果我们无法获得更新的 BIOS,或者最新的 BIOS 仍然不符合 ACPI,我们可以在文本模式设置期间关闭 ACPI 模式。
要关闭 ACPI 模式,请在系统提示我们安装存储驱动程序时按 F7 键。
系统不会通知我们按下了 F7 键,但它会以静默方式禁用 ACPI 并使我们能够继续安装。
注释
PCI 路由表 (_PRT) 是 ACPI BIOS 对象,它指定所有 PCI 设备如何连接到中断控制器。
具有多个 PCI 总线的计算机可能有多个 _PRT。
通过使用 !acpikd.nsobj 扩展名以及 _PRT 对象的地址作为其参数,我们可以在调试器中显示 _PRT。
ACPI_BIOS_ERROR 错误检查的值为 0x000000A5.
此错误检查表明计算机的高级配置和电源接口 (ACPI) BIOS 不完全符合 ACPI 规范。
ACPI_BIOS_ERROR 参数
参数 1 表示不兼容的类型。
其他参数的含义取决于参数 1 的值。
如果 BIOS 不兼容与即插即用 (PnP) 或者电源管理有关,则使用以下参数。
参数 1 | 参数 2 | 参数 3 | 参数 4 | 原因 |
---|---|---|---|---|
0x01 | ACPI 的 deviceExtension | ACPI 的 ResourceList | 0:未找到资源列表 1: | 未在列表中找到 IRQ 资源ACPI 在启动 ACPI 时传递给它的资源中找不到系统控制中断 (SCI) 向量. |
0x02 | (请参阅本页后面的表格) | |||
0x03 | 正在运行的 ACPI 对象 | 解释器的返回值 | 控制方法的名称(ULONG 格式) | ACPI 在创建设备扩展以表示 ACPI 命名空间时尝试运行控制方法,但此控制方法失败。 |
0x04 | _PRW 所属的 ACPI 扩展 | 指向方法 | The DataType 返回的指针(参见 Amli.h) | ACPI 评估_PRW 并期望找到一个整数作为包元素。 |
0x05 | _PRW 所属的 ACPI 扩展 _PRW | 的 Aointer | _PRW | ACPI 中的元素数量评估了一个 _PRW,返回的包至少包含两个元素失败。ACPI 规范要求 _PRW 中始终存在两个元素。 |
0x06 | _PRx 所属的 ACPI 扩展 | 指向_PRx | 的指针 指向要查找的对象名称的指针 | ACPI 尝试查找命名对象,但找不到该对象。 |
0x07 | 该方法所属的 ACPI 扩展 | 指向该方法 | 返回的 DataType 的指针(参见 Amli.h) | ACPI 评估一个方法并期望接收一个缓冲区作为回报。但是,该方法返回了一些其他数据类型。 |
0x08 | 该方法所属的 ACPI 扩展 | 指向该方法 | 返回的 DataType 的指针(参见 Amli.h) | ACPI 评估一个方法并期望接收一个整数作为回报。但是,该方法返回了一些其他数据类型。 |
0x09 | 方法所属的 ACPI 扩展 | 指向方法的指针 | 返回的数据类型(参见 Amli.h) | ACPI 评估了一个方法并期望收到一个包作为回报。但是,该方法返回了一些其他数据类型。 |
0x0A | 方法所属的 ACPI 扩展 | 指向方法 | 的指针返回的数据类型(参见 Amli.h) | ACPI 评估一个方法并期望收到一个字符串作为回报。但是,该方法返回了一些其他数据类型。 |
0x0B | _EJD 所属的 ACPI 扩展 | 解释器返回的状态 | ACPI 试图查找的对象的名称 | ACPI 找不到 _EJD 字符串引用的对象。 |
0x0C | ACPI 为 | _EJD 方法找到一个扩展坞设备的 ACPI 扩展 | 0:BIOS 未声明系统是 扩展坞 1:扩展坞设备的重复设备扩展 | ACPI 为扩展坞支持提供了错误或者不足的信息。 |
0x0D | ACPI 需要对象的 ACPI 扩展 | ACPI 查找的方法的 (ULONG) 名称 | 0: Base case 1: Conflict | ACPI 在命名空间中找不到所需的方法或者对象 如果不存在 _HID 或者 _ADR,则使用此错误检查代码。 |
0x0E | ACPI 需要对象的 NS PowerResource | ACPI 查找的方法的 (ULONG) 名称 | 0:基本情况 | ACPI 在电源资源(或者“设备”以外的实体)的命名空间中找不到所需的方法或者对象)。如果电源资源不存在 _ON、_OFF 或者 _STA,则使用此错误检查代码。 |
0x0F | ACPI 正在解析的当前缓冲区 | 缓冲区的标记 缓冲区的 | 指定长度 | ACPI 无法解析资源描述符。 |
0x10 | (参见本页后面的表格) | |||
0x11 | (参见本页后面的表格) | |||
0x14 | ACPI 正在解析的当前缓冲区 | 缓冲区的标记 | 指向包含缓冲区 ULONGLONG 长度的变量的指针 | ACPI 无法解析资源描述符。长度超过MAXULONG。 |
0x15 | ACPI 机器语言 (AML) 上下文 | 1:无法加载表 2:找不到参数路径字符串对象 3:无法将参数数据插入到 ParameterPath 字符串对象 4:系统内存不足 | NT 状态代码 | ACPI 有一个致命的尝试加载表时出错。 |
0x16 | 指向父 NSOBJ | 的指针 指向非法子 ACPI 命名空间对象的指针 | 保留 | ACPI 在处理 xSDT 时出现致命错误。一个对象被声明为不能有子对象的父对象的子对象。 |
如果发生中断路由失败或者不兼容,则使用以下参数。
参数 1 | 参数 2 | 参数 3 | 参数 4 | 原因 |
---|---|---|---|---|
0x2001 | InterruptModel (integer) | 解释器的返回值 | A 指向 PIC 控制方法的指针 | ACPI 尝试评估 PIC 控制方法但失败。 |
0x10001 | 指向设备对象 | 的指针指向设备对象的父对象 | 的指针指向_PRT 对象的指针 (请参阅以下注释部分) | ACPI 尝试进行中断路由,但失败了。 |
0x10002 | 指向设备对象 | 的指针 指向 ACPI 正在寻找但找不到的字符串名称 | 的指针 指向 _PRT 对象的指针 (请参阅以下注释部分) | ACPI 找不到 _PRT 中引用的链接节点。 |
0x10003 | 指向设备对象的指针 | 设备 ID 或者功能编号。 此 DWORD 编码如下:位 5:0 是 PCI 设备号,位 8:6 是 PCI 功能号 | 指向 _PRT 对象的指针 (请参阅以下注释部分) | ACPI 在 _PRT 包中找不到映射对于一个设备。 |
0x10005 | 指向 _PRT 对象的指针 (请参阅以下注释部分) | 指向当前 _PRT 元素的指针。 (该指针是 _PRT 的索引。) | 设备 ID 或者功能编号。 该 DWORD 的编码如下:位 15:0 是 PCI 功能编号,位 31:16 是 PCI 设备编号 | ACPI 在 _PRT 中发现功能 ID 并非全为 F 的条目。 (_PRT 条目的通用格式是指定了设备编号,但未指定功能编号。) |
0x10006 | 指向链接节点的指针。 (此设备缺少 _DIS 方法。) | 0 | 0 | ACPI 找到链接节点,但无法禁用该节点。 (必须禁用链接节点以允许重新编程。) |
0x10007 | 找不到的向量 | 0 | 0 | _PRT 包含对未在 I/O APIC 条目的 MAPIC 表中描述的向量的引用。 |
0x10008 | 无效的中断级别。 | 0 | 0 | ACPI SCI 中断级别无效。 |
0x10009 | 0 | 0 | 0 | 无法定位固定 ACPI 描述表 (FADT)。 |
0x1000A | 0 | 0 | 0 | 无法找到根系统描述指针 (RSDP) 或者扩展系统描述表 (XSDT) |
0x1000B | ACPI 表签名 | 指向ACPI 表的指针 | 0 | ACPI 表的长度与表修订版不一致。 |
0x1000C | 修订 ID | 功能索引 | 0 | _DSM 方法用于中断返回格式错误的数据。 |
0x1000D | 设备的 ACPI 扩展 | 值 0:_PRW 指定没有可唤醒中断和至少一个 GPIO 中断值 1:由于存在可唤醒中断,_PRW 应指定 GpeInfo 值 0xffffffff | 0 | 设备使用 GPE 和 GPIO中断,不支持。 |
0x1000E | 验证函数返回的状态。 | 指向 ACPI 命名空间路径 UNICODE_STRING 的指针。 | 指向与 SDEV 比较的资源列表的指针。 | 安全设备的 SDEV 资源与其对应的 _CRS 或者 _PRS 条目不匹配。 |
如果发生其他故障或者不兼容,则使用以下参数。
参数 1 | 参数2 | 参数3 | 参数4 | 原因 |
---|---|---|---|---|
0x20000 | 中的I / O端口固定台 | 0 | 0 | 在固定ACPI描述表条目PM_TMR_BLK不指向工作ACPI定时器块。 |
此表描述了使用以下参数时的内存使用问题。
参数 1 | 参数 2 | 参数 3 | 参数 4 | 原因 |
---|---|---|---|---|
0x1000 | 内存区域物理地址的高位部分。 | 内存区域物理地址的低位部分。 | 被映射的内存长度。 | ACPI 在处理内存操作区域时出现致命错误。内存操作区域尝试映射已分配给操作系统使用的内存。 |
如果参数 1 等于 0x02 ,则 ACPI BIOS 无法处理 PCI 根总线的资源列表。
在这种情况下,参数 3 指定了确切的问题,其余参数具有以下定义。
参数 2 | 参数 3 | 参数 4 | 原因 |
---|---|---|---|
The ACPI extension for the PCI bus | 0x0 | 指向 QUERY_RESOURCES IRP 的指针 | ACPI 无法将 BIOS 的资源列表转换为正确的格式。这可能表示 BIOS 的列表编码过程中存在错误。 |
The ACPI extension for the PCI bus | 0x1 | 指向 QUERY_RESOURCE_REQUIREMENTS IRP | ACPI 的指针无法将 BIOS 的资源列表转换为正确的格式。这可能表示 BIOS 的列表编码过程中存在错误。 |
The ACPI extension for the PCI bus | 0x2 | 0 | ACPI 发现一个空的资源列表。 |
The ACPI extension for the PCI bus | 0x3 | 指向 PNP CRS 描述符 | ACPI 的指针在 CRS 中找不到当前总线编号。 |
The ACPI extension for the PCI bus | 指向 PCI 资源列表 | 的指针 指向 E820 内存表的指针 | PCI 声称要解码的资源列表与 E820 BIOS 接口报告的内存区域列表重叠。(这种冲突是永远不允许的。) |
如果参数 1 等于 0x10 ,则 ACPI BIOS 无法正确确定系统到设备状态的映射。
在这种情况下,参数 3 指定了确切的问题,其余参数具有以下定义。
参数 2 | 参数 3 | 参数 4 | 原因 |
---|---|---|---|
The ACPI extension whose mapping is needed | 0x0 | DEVICE_POWER_STATE(这是“x+1”) | _PRx 被映射回不受支持的 S 状态。 |
The ACPI extension whose mapping is needed | 0x1 | 无法映射的 SYSTEM_POWER_STATE | ACPI 找不到 D-state 与 S-state 关联。 |
The ACPI extension whose mapping is needed | 0x2 | 无法映射的 SYSTEM_POWER_STATE | 设备声称可以在系统处于此 S 状态时唤醒系统,但系统实际上并不支持此 S 状态。 |
如果参数 1 等于 0x11 ,则系统无法进入 ACPI 模式。
在这种情况下,参数 2 指定了确切的问题,其余参数具有以下定义。
参数 2 | 参数 3 | 参数 4 | 原因 |
---|---|---|---|
0x0 | 0 | 0 | 系统无法初始化 AML 解释器。 |
0x1 | 0 | 0 | 系统找不到 RSDT。 |
0x2 | 0 | 0 | 系统无法分配关键驱动程序结构。 |
0x3 | 0 | 0 | 系统无法加载 RSDT。 |
0x4 | 0 | 0 | 系统无法加载 DDB。 |
0x5 | 0 | 0 | 系统无法连接中断向量。 |
0x6 | 0 | 0 | SCI_EN 永远不会在 PM1 控制寄存器中设置。 |
0x7 | 指向校验和错误的表的指针 | Creator 修订版 | 表校验和不正确。 |
0x8 | 指向 ACPI 无法加载 | Creator 修订版 | ACPI 无法加载 DDB的表的指针。 |
0x9 | FADT 版本 | 0 | 不支持的固件版本。 |
0xA | 0 | 0 | 系统找不到 MADT。 |
0xB | 0 | 0 | 系统在 MADT 中找不到任何有效的本地 SAPIC 结构。 |
原因
参数 1 的值表示错误。