[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCHv2 2/7] libqos: Correct error in PCI hole sizing fo
From: |
Laurent Vivier |
Subject: |
Re: [Qemu-ppc] [PATCHv2 2/7] libqos: Correct error in PCI hole sizing for spapr |
Date: |
Wed, 12 Oct 2016 10:07:02 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 |
On 12/10/2016 06:44, David Gibson wrote:
> 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;
>
- [Qemu-ppc] [PATCHv2 0/7] Improve PCI IO window orgnaization for pseries, David Gibson, 2016/10/12
- [Qemu-ppc] [PATCHv2 2/7] libqos: Correct error in PCI hole sizing for spapr, David Gibson, 2016/10/12
- Re: [Qemu-ppc] [PATCHv2 2/7] libqos: Correct error in PCI hole sizing for spapr,
Laurent Vivier <=
- [Qemu-ppc] [PATCHv2 4/7] spapr_pci: Delegate placement of PCI host bridges to machine type, David Gibson, 2016/10/12
- [Qemu-ppc] [PATCHv2 1/7] libqos: Isolate knowledge of spapr memory map to qpci_init_spapr(), David Gibson, 2016/10/12
- [Qemu-ppc] [PATCHv2 6/7] spapr_pci: Add a 64-bit MMIO window, David Gibson, 2016/10/12
- [Qemu-ppc] [PATCHv2 5/7] spapr: Adjust placement of PCI host bridge to allow > 1TiB RAM, David Gibson, 2016/10/12