qemu/tests/libqos
David Gibson a795fc08f2 libqos: Handle PCI IO de-multiplexing in common code
The PCI IO space (aka PIO, aka legacy IO) and PCI memory space (aka MMIO)
are distinct address spaces by the PCI spec (although parts of one might be
aliased to parts of the other in some cases).

However, qpci_io_read*() and qpci_io_write*() can perform accesses to
either space depending on parameter.  That's convenient for test case
drivers, since there are a fair few devices which can be controlled via
either a PIO or MMIO BAR but with an otherwise identical driver.

This is implemented by having addresses below 64kiB treated as PIO, and
those above treated as MMIO.  This works because low addresses in memory
space are generally reserved for DMA rather than MMIO.

At the moment, this demultiplexing must be handled by each PCI backend
(pc and spapr, so far).  There's no real reason for this - the current
encoding is likely to work for all platforms, and even if it doesn't we
can still use a more complex common encoding since the value returned from
iomap are semi-opaque.

This patch moves the demultiplexing into the common part of the libqos PCI
code, with the backends having simpler, separate accessors for PIO and
MMIO space.  This also means we have a way of explicitly accessing either
space if it's necessary for some special case.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
2016-10-28 09:38:27 +11:00
..
ahci.c libqos: add PCI management in qtest_vboot()/qtest_shutdown() 2016-10-06 16:15:53 +11:00
ahci.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
fw_cfg.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
fw_cfg.h all: Clean up includes 2016-02-23 12:43:05 +00:00
i2c-imx.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
i2c-omap.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
i2c.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
i2c.h all: Clean up includes 2016-02-23 12:43:05 +00:00
libqos-pc.c libqos: use generic qtest_shutdown() 2016-10-06 16:15:53 +11:00
libqos-pc.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
libqos-spapr.c libqos: use generic qtest_shutdown() 2016-10-06 16:15:53 +11:00
libqos-spapr.h libqos: define SPAPR libqos functions 2016-09-23 10:29:40 +10:00
libqos.c tests: don't check if qtest_spapr_boot() returns NULL 2016-10-28 09:36:58 +11:00
libqos.h libqos: use generic qtest_shutdown() 2016-10-06 16:15:53 +11:00
malloc-generic.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
malloc-generic.h libqos: Add malloc generic 2015-03-10 14:02:20 +01:00
malloc-pc.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
malloc-pc.h libqos: Convert malloc-pc allocator to a generic allocator 2015-01-13 11:47:57 +00:00
malloc-spapr.c libqos: define SPAPR libqos functions 2016-09-23 10:29:40 +10:00
malloc-spapr.h libqos: define SPAPR libqos functions 2016-09-23 10:29:40 +10:00
malloc.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
malloc.h all: Clean up includes 2016-02-23 12:43:05 +00:00
pci-pc.c libqos: Handle PCI IO de-multiplexing in common code 2016-10-28 09:38:27 +11:00
pci-pc.h libqos: add PCI management in qtest_vboot()/qtest_shutdown() 2016-10-06 16:15:53 +11:00
pci-spapr.c libqos: Handle PCI IO de-multiplexing in common code 2016-10-28 09:38:27 +11:00
pci-spapr.h libqos: add PPC64 PCI support 2016-10-06 16:15:40 +11:00
pci.c libqos: Handle PCI IO de-multiplexing in common code 2016-10-28 09:38:27 +11:00
pci.h libqos: Handle PCI IO de-multiplexing in common code 2016-10-28 09:38:27 +11:00
rtas.c libqos: add PPC64 PCI support 2016-10-06 16:15:40 +11:00
rtas.h libqos: add PPC64 PCI support 2016-10-06 16:15:40 +11:00
usb.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
usb.h tests: usb: Generic usb device hotplug 2014-10-15 05:03:13 +02:00
virtio-mmio.c libqos: Give qvirtio_config_read*() consistent semantics 2016-10-28 09:38:27 +11:00
virtio-mmio.h libqos: Add virtio MMIO support 2015-03-10 14:02:20 +01:00
virtio-pci.c libqos: Give qvirtio_config_read*() consistent semantics 2016-10-28 09:38:27 +11:00
virtio-pci.h libqos: drop duplicated virtio_pci.h definitions 2016-06-20 11:44:12 +01:00
virtio.c tests: move QVirtioBus pointer into QVirtioDevice 2016-10-28 09:36:58 +11:00
virtio.h tests: rename target_big_endian() as qvirtio_is_big_endian() 2016-10-28 09:36:58 +11:00