关于 VirtualBox 上 PCI Express(PCIe) 配置 space 访问的问题

Question on PCI Express(PCIe) configuration space access on VirtualBox

您好,我正在尝试在内核基础上使用 MMIO 方法访问 PCIe 配置 space。

在我放下问题之前,我的平台是 Windows10,VirtualBox 6.0.10。

我的虚拟机设置为默认值,但以下内容除外:

  1. 芯片组选择ICH9
  2. 核心数设为4
  3. 内存设置为 1GB
  4. 添加了 IDE 控制器(未连接 HD)

启动后,打印显示有效内存地址 are:0x0~0x9FC00 和 0x100000~0x3FEF0000,如下面的屏幕截图所示。

虽然类型 1 是 RAM,2 是 ROM 或保留,3 是 ACPI 回收内存,4 是 ACPI NVS 内存。

此外,我从 MCFG 中检索了 PCIe 配置内存映射基地址的基地址,如下面的屏幕截图所示。

可以看出:

  1. 配置 space 基址为 0x3F000000,与有效内存重叠 space。
  2. 0x3F000000~0x3F000008的前8字节全为0,应该是bus:0、device:0、function:0.
  3. 的前8字节

所以我是不应该使用 VirtualBox,还是应该做一些其他操作来启用配置的 PCIe MMIO 可访问性space?

非常感谢!!

您可能错误地解析了 "MFCG ACPI table",或者为 "MFCG ACPI table" 使用了错误的(虚拟的?)地址而忘记了检查签名和校验和。

"Base_addr:"没有意义,"Start_PCI_bus: 0, End_PCI_bus: 0"也没有意义