PVPANIC 设备

pvpanic 是模拟设备,用于将客户机 panic 事件发送给 QEMU,并生成 QMP 事件, 使 libvirt 等管理应用能够获知并响应。

管理应用可以等待 GUEST_PANICKED 事件,和/或轮询 guest-panicked RunState, 判断设备何时触发 panic。

pvpanic 可以实现为使用 IOPORT 的 ISA 设备,也可以是 PCI 设备。

ISA 接口

pvpanic 暴露一个 I/O 端口,默认为 0x505。读取时,设备识别的位设为 1, 软件应忽略不认识的位。写入时,设备忽略不认识的位, 软件只应设置双方都认识的位。

位定义

位 0

客户机发生 panic,应由主机处理。

位 1

客户机发生 panic,将由客户机处理;主机应记录或报告,但不应影响客户机执行。

位 2

客户机发生正常关机,应由主机处理。

PCI 接口

PCI 接口类似 ISA,但使用 BAR0 提供的 1 字节 MMIO 地址空间。 有 PCI 总线的机器可通过命令行 -device pvpanic-pci 启用。

ACPI 接口

pvpanic 的 ACPI ID 为 "QEMU0001"。自定义方法如下:

RDPT

判断是否支持客户机 panic 通知。

参数

无。

返回值

返回一个字节,语义与 I/O 端口接口相同。

WRPT

发送客户机 panic 事件。

参数

Arg0 为待写入字节,语义与 I/O 接口相同。

返回值

无。

端口被修改时,ACPI 设备会自动引用正确的端口。