70be1d93f9
Up to now the virt-machine node contains a virtio-mmio node. However no driver produces any PCI interface node. Hence, PCI tests cannot be run with aarch64 binary. Add a GPEX driver node that produces a pci interface node. This latter then can be consumed by all the pci tests. One of the first motivation was to be able to run the virtio-iommu-pci tests. We still face an issue with pci hotplug tests as hotplug cannot happen on the pcie root bus and require a generic root port. This will be addressed later on. We force cpu=max along with aarch64/virt machine as some PCI tests require high MMIO regions to be available. Signed-off-by: Eric Auger <eric.auger@redhat.com> Message-Id: <20220504152025.1785704-4-eric.auger@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
/*
|
|
* libqos Generic PCI bindings and generic pci host bridge
|
|
*
|
|
* Copyright Red Hat Inc., 2022
|
|
*
|
|
* Authors:
|
|
* Eric Auger <eric.auger@redhat.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
|
|
#ifndef LIBQOS_GENERIC_PCIHOST_H
|
|
#define LIBQOS_GENERIC_PCIHOST_H
|
|
|
|
#include "pci.h"
|
|
#include "malloc.h"
|
|
#include "qgraph.h"
|
|
|
|
typedef struct QGenericPCIBus {
|
|
QOSGraphObject obj;
|
|
QPCIBus bus;
|
|
uint64_t gpex_pio_base;
|
|
uint64_t ecam_alloc_ptr;
|
|
} QGenericPCIBus;
|
|
|
|
/*
|
|
* qpci_init_generic():
|
|
* @ret: A valid QGenericPCIBus * pointer
|
|
* @qts: The %QTestState
|
|
* @alloc: A previously initialized @alloc providing memory for @qts
|
|
* @bool: devices can be hotplugged on this bus
|
|
*
|
|
* This function initializes an already allocated
|
|
* QGenericPCIBus object.
|
|
*/
|
|
void qpci_init_generic(QGenericPCIBus *ret, QTestState *qts,
|
|
QGuestAllocator *alloc, bool hotpluggable);
|
|
|
|
/* QGenericPCIHost */
|
|
|
|
typedef struct QGenericPCIHost QGenericPCIHost;
|
|
|
|
struct QGenericPCIHost {
|
|
QOSGraphObject obj;
|
|
QGenericPCIBus pci;
|
|
};
|
|
|
|
QOSGraphObject *generic_pcihost_get_device(void *obj, const char *device);
|
|
void qos_create_generic_pcihost(QGenericPCIHost *host,
|
|
QTestState *qts,
|
|
QGuestAllocator *alloc);
|
|
|
|
#endif
|