]> git.proxmox.com Git - mirror_qemu.git/commit - tests/libqos/pci-pc.c
libqos: Move BAR assignment to common code
authorDavid Gibson <david@gibson.dropbear.id.au>
Wed, 19 Oct 2016 03:06:51 +0000 (14:06 +1100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 27 Oct 2016 22:38:27 +0000 (09:38 +1100)
commitb8cc4d0231b97c3dd7930d91ab91657b5a105b78
treef3f0277335d8f4206f949b5e189fcfc59ffe0d5c
parenta795fc08f2636013fe097e51bdac62d089ac505a
libqos: Move BAR assignment to common code

The PCI backends in libqos each supply an iomap() and iounmap() function
which is used to set up a specified PCI BAR.  But PCI BAR allocation takes
place entirely within PCI space, so doesn't really need per-backend
versions.  For example, Linux includes generic BAR allocation code used on
platforms where that isn't done by firmware.

This patch merges the BAR allocation from the two existing backends into a
single simplified copy.  The back ends just need to set up some parameters
describing the window of PCI IO and PCI memory addresses which are
available for allocation.  Like both the existing versions the new one uses
a simple bump allocator.

Note that (again like the existing versions) this doesn't really handle
64-bit memory BARs properly.  It is actually used for such a BAR by the
ivshmem test, and apparently the 32-bit MMIO BAR logic is close enough to
work, as long as the BAR isn't too big.  Fixing that to properly handle
64-bit BAR allocation is a problem for another time.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
tests/libqos/pci-pc.c
tests/libqos/pci-spapr.c
tests/libqos/pci.c
tests/libqos/pci.h