qemu/tests/libqos
David Gibson a7b85b6062 libqos: Better handling of PCI legacy IO
The usual model for PCI IO with libqos is to use qpci_iomap() to map a
specific BAR for a PCI device, then perform IOs within that BAR using
qpci_io_{read,write}*().

However, certain devices also have legacy PCI IO.  In this case, instead of
(or as well as) being accessed via PCI BARs, the device can be accessed
via certain well-known, fixed addresses in PCI IO space.

Two existing tests use legacy PCI IO, and take different flawed approaches
to it:
    * tco-test manually constructs a tco_io_base value instead of calling
      qpci_iomap(), which assumes internal knowledge of the structure of
      the value it shouldn't have
    * ide-test uses direct in*() and out*() calls instead of using
      qpci_io_*() accessors, meaning it's not portable to non-x86 machine
      types.

This patch implements a new qpci_iomap_legacy() interface which gets a
handle in the same format as qpci_iomap() but refers to a region in
the legacy PIO space.  For a device which has the same registers
available both in a BAR and in legacy space (quite common), this
allows the same test code to test both options with just a different
iomap() at the beginning.

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: Move BAR assignment to 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: Move BAR assignment to 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: Better handling of PCI legacy IO 2016-10-28 09:38:27 +11:00
pci.h libqos: Better handling of PCI legacy IO 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