[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PULL 11/16] libqos: Correct error in PCI hole sizing for spa
From: |
David Gibson |
Subject: |
[Qemu-ppc] [PULL 11/16] libqos: Correct error in PCI hole sizing for spapr |
Date: |
Mon, 17 Oct 2016 13:43:34 +1100 |
In pci-spapr.c (as in pci-pc.c from which it was derived), the
pci_hole_start/pci_hole_size and pci_iohole_start/pci_iohole_size pairs[1]
essentially define the region of PCI (not CPU) addresses in which MMIO
or PIO BARs respectively will be allocated.
The size value is relative to the start value. But in pci-spapr.c it is
set to the entire size of the window supported by the (emulated) hardware,
but the start values are *not* at the beginning of the emulated windows.
That means if you tried to map enough PCI BARs, we'd messily overrun the
IO windows, instead of failing in iomap as we should.
This patch corrects this by calculating the hole sizes from the location
of the window in PCI space and the hole start.
[1] Those are bad names, but that's a problem for another time.
Signed-off-by: David Gibson <address@hidden>
Reviewed-by: Laurent Vivier <address@hidden>
---
tests/libqos/pci-spapr.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tests/libqos/pci-spapr.c b/tests/libqos/pci-spapr.c
index 1765a54..3192903 100644
--- a/tests/libqos/pci-spapr.c
+++ b/tests/libqos/pci-spapr.c
@@ -285,11 +285,13 @@ QPCIBus *qpci_init_spapr(QGuestAllocator *alloc)
ret->mmio.size = SPAPR_PCI_MMIO_WIN_SIZE;
ret->pci_hole_start = 0xC0000000;
- ret->pci_hole_size = SPAPR_PCI_MMIO_WIN_SIZE;
+ ret->pci_hole_size =
+ ret->mmio.pci_base + ret->mmio.size - ret->pci_hole_start;
ret->pci_hole_alloc = 0;
ret->pci_iohole_start = 0xc000;
- ret->pci_iohole_size = SPAPR_PCI_IO_WIN_SIZE;
+ ret->pci_iohole_size =
+ ret->pio.pci_base + ret->pio.size - ret->pci_iohole_start;
ret->pci_iohole_alloc = 0;
return &ret->bus;
--
2.7.4
- [Qemu-ppc] [PULL 00/16] ppc-for-2.8 queue 20161017, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 01/16] tests: minor cleanups in usb-hcd-uhci-test, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 05/16] tests/boot-sector: Increase time-out to 90 seconds, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 03/16] tests/boot-sector: Use minimum length for the Forth boot script, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 14/16] spapr: Adjust placement of PCI host bridge to allow > 1TiB RAM, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 11/16] libqos: Correct error in PCI hole sizing for spapr,
David Gibson <=
- [Qemu-ppc] [PULL 07/16] spapr: fix inheritance chain for default machine options, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 02/16] qtest: ask endianness of the target in qtest_init(), David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 06/16] target-ppc: implement vexts[bh]2w and vexts[bhw]2d, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 12/16] libqos: Limit spapr-pci to 32-bit MMIO for now, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 13/16] spapr_pci: Delegate placement of PCI host bridges to machine type, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 04/16] tests/boot-sector: Use mkstemp() to create a unique file name, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 10/16] libqos: Isolate knowledge of spapr memory map to qpci_init_spapr(), David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 15/16] spapr_pci: Add a 64-bit MMIO window, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 16/16] spapr: Improved placement of PCI host bridges in guest memory map, David Gibson, 2016/10/16
- [Qemu-ppc] [PULL 09/16] ppc/xics: Split ICS into ics-base and ics class, David Gibson, 2016/10/16