QEMU 与 ACPI BIOS 的 PCI 热插拔接口

QEMU 通过 ACPI 支持 PCI 总线 0 的热插拔。 本文描述 QEMU 与 ACPI BIOS 之间的接口。

ACPI GPE 块(I/O 端口 0xafe0–0xafe3,字节访问)

通用 ACPI GPE 块。位 1(GPE.1)经 SCI 中断向 ACPI BIOS 通知 PCI 热插入/弹出事件。

PCI 插槽待处理插入通知(I/O 端口 0xae00–0xae03,4 字节访问)

待处理插槽插入通知,每插槽一位。

ACPI BIOS 的 GPE.1 处理程序读取它,向操作系统通知插入事件。只读。

PCI 插槽移除通知(I/O 端口 0xae04–0xae07,4 字节访问)

待处理插槽移除通知,每插槽一位。

ACPI BIOS 的 GPE.1 处理程序读取它,向操作系统通知移除事件。只读。

PCI 设备弹出(I/O 端口 0xae08–0xae0b,4 字节访问)

写入:ACPI BIOS 的 _EJ0 方法请求移除设备,每插槽一位。

读取:热插拔功能寄存器,平台用它识别可用功能。 当前基础功能集(所有位均未设置):

  • 0xae00 的只读 up 寄存器,4 字节访问,每插槽一位。

  • 0xae04 的只读 down 寄存器,4 字节访问,每插槽一位。

  • 0xae08 的读写 eject 寄存器,4 字节访问;写入为每插槽弹出位,读取为热插拔功能集。

  • 0xae0c 的只读热插拔能力寄存器,4 字节访问,每插槽一位。

PCI 可移除状态(I/O 端口 0xae0c–0xae0f,4 字节访问)

ACPI BIOS 的 _RMV 方法用它向操作系统说明可移除状态。 每插槽一位,只读。