PCIe device tree unit name is pcie@10000000 - which denotes IO space base address. However, the corresponding node's "reg" property points to PCI configuration space base address 0x3f000000.
Set the unit name to pcie@3f000000 which is not only correct, but also conforms to Open Firmware (IEEE 1275). CC: Peter Maydell <peter.mayd...@linaro.org> CC: Andrew Jones <drjo...@redhat.com> Signed-off-by: Alexander Gordeev <agord...@redhat.com> --- hw/arm/virt.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 5d38c47..567be08 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -740,7 +740,6 @@ static void create_pcie(const VirtBoardInfo *vbi, qemu_irq *pic, hwaddr size_pio = vbi->memmap[VIRT_PCIE_PIO].size; hwaddr base_ecam = vbi->memmap[VIRT_PCIE_ECAM].base; hwaddr size_ecam = vbi->memmap[VIRT_PCIE_ECAM].size; - hwaddr base = base_mmio; int nr_pcie_buses = size_ecam / PCIE_MMCFG_SIZE_MIN; int irq = vbi->irqmap[VIRT_PCIE]; MemoryRegion *mmio_alias; @@ -789,7 +788,7 @@ static void create_pcie(const VirtBoardInfo *vbi, qemu_irq *pic, sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, pic[irq + i]); } - nodename = g_strdup_printf("/pcie@%" PRIx64, base); + nodename = g_strdup_printf("/pcie@%" PRIx64, base_ecam); qemu_fdt_add_subnode(vbi->fdt, nodename); qemu_fdt_setprop_string(vbi->fdt, nodename, "compatible", "pci-host-ecam-generic"); -- 1.8.3.1