mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
tests/qtest/libqos: Add generic pci host bridge in arm-virt machine
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>
This commit is contained in:
parent
02ee7a8a97
commit
70be1d93f9
4 changed files with 301 additions and 4 deletions
54
tests/qtest/libqos/generic-pcihost.h
Normal file
54
tests/qtest/libqos/generic-pcihost.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* 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
|
Loading…
Add table
Add a link
Reference in a new issue