mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
pc,pci,virtio: features, fixes
virtio-iommu support for x86/ACPI. Fixes, cleanups all over the place. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- iQFDBAABCAAtFiEEXQn9CHHI+FuUyooNKB8NuNKNVGkFAmGAefYPHG1zdEByZWRo YXQuY29tAAoJECgfDbjSjVRpiCUH/2pIs3FmOGIasEqn4BnqXr4dHMReUO5Ghg0v cXle4ZUrbg7Qpnxh07CwMuUpJV3Qv+xtVK7hzbD13nnxrkTZuKzBRV1AthkA1Hly zIKOxnEgV497LaXoaSOtqAx48fuznk5XOHju91usgu4mehJ0qe2gcwb4H8uWGkQi hrsR7a9woP0M4H/jvb3+aQRCJKMscj8ReabM1ulOugNpPdNI/jIKtBvZBtTxAqtQ CH9/DJLfVmzDRYdeBpnF06A+tXm4uU1Q5BmpmF9qaymk/PzthN54gdnDd6zH405Z Tmjp9UA2xfEYDmKzuTCBdPmoUe6OI7mU9o0WbB5MGYx5RRRBETw= =R7DD -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging pc,pci,virtio: features, fixes virtio-iommu support for x86/ACPI. Fixes, cleanups all over the place. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # gpg: Signature made Mon 01 Nov 2021 07:36:22 PM EDT # gpg: using RSA key 5D09FD0871C8F85B94CA8A0D281F0DB8D28D5469 # gpg: issuer "mst@redhat.com" # gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" [full] # gpg: aka "Michael S. Tsirkin <mst@redhat.com>" [full] * remotes/mst/tags/for_upstream: hw/i386: fix vmmouse registration pci: Export pci_for_each_device_under_bus*() pci: Define pci_bus_dev_fn/pci_bus_fn/pci_bus_ret_fn hw/i386/pc: Allow instantiating a virtio-iommu device hw/i386/pc: Move IOMMU singleton into PCMachineState hw/i386/pc: Remove x86_iommu_get_type() hw/acpi: Add VIOT table vhost-vdpa: Set discarding of RAM broken when initializing the backend qtest: fix 'expression is always false' build failure in qtest_has_accel() Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
7fa736595e
24 changed files with 239 additions and 109 deletions
|
@ -35,6 +35,7 @@ typedef struct PCMachineState {
|
|||
I2CBus *smbus;
|
||||
PFlashCFI01 *flash[2];
|
||||
ISADevice *pcspk;
|
||||
DeviceState *iommu;
|
||||
|
||||
/* Configuration options: */
|
||||
uint64_t max_ram_below_4g;
|
||||
|
|
|
@ -33,12 +33,6 @@ OBJECT_DECLARE_TYPE(X86IOMMUState, X86IOMMUClass, X86_IOMMU_DEVICE)
|
|||
typedef struct X86IOMMUIrq X86IOMMUIrq;
|
||||
typedef struct X86IOMMU_MSIMessage X86IOMMU_MSIMessage;
|
||||
|
||||
typedef enum IommuType {
|
||||
TYPE_INTEL,
|
||||
TYPE_AMD,
|
||||
TYPE_NONE
|
||||
} IommuType;
|
||||
|
||||
struct X86IOMMUClass {
|
||||
SysBusDeviceClass parent;
|
||||
/* Intel/AMD specific realize() hook */
|
||||
|
@ -71,7 +65,6 @@ struct X86IOMMUState {
|
|||
OnOffAuto intr_supported; /* Whether vIOMMU supports IR */
|
||||
bool dt_supported; /* Whether vIOMMU supports DT */
|
||||
bool pt_supported; /* Whether vIOMMU supports pass-through */
|
||||
IommuType type; /* IOMMU type - AMD/Intel */
|
||||
QLIST_HEAD(, IEC_Notifier) iec_notifiers; /* IEC notify list */
|
||||
};
|
||||
|
||||
|
@ -140,11 +133,6 @@ struct X86IOMMU_MSIMessage {
|
|||
*/
|
||||
X86IOMMUState *x86_iommu_get_default(void);
|
||||
|
||||
/*
|
||||
* x86_iommu_get_type - get IOMMU type
|
||||
*/
|
||||
IommuType x86_iommu_get_type(void);
|
||||
|
||||
/**
|
||||
* x86_iommu_iec_register_notifier - register IEC (Interrupt Entry
|
||||
* Cache) notifiers
|
||||
|
|
|
@ -401,6 +401,10 @@ typedef PCIINTxRoute (*pci_route_irq_fn)(void *opaque, int pin);
|
|||
OBJECT_DECLARE_TYPE(PCIBus, PCIBusClass, PCI_BUS)
|
||||
#define TYPE_PCIE_BUS "PCIE"
|
||||
|
||||
typedef void (*pci_bus_dev_fn)(PCIBus *b, PCIDevice *d, void *opaque);
|
||||
typedef void (*pci_bus_fn)(PCIBus *b, void *opaque);
|
||||
typedef void *(*pci_bus_ret_fn)(PCIBus *b, void *opaque);
|
||||
|
||||
bool pci_bus_is_express(PCIBus *bus);
|
||||
|
||||
void pci_root_bus_init(PCIBus *bus, size_t bus_size, DeviceState *parent,
|
||||
|
@ -458,23 +462,23 @@ static inline int pci_dev_bus_num(const PCIDevice *dev)
|
|||
|
||||
int pci_bus_numa_node(PCIBus *bus);
|
||||
void pci_for_each_device(PCIBus *bus, int bus_num,
|
||||
void (*fn)(PCIBus *bus, PCIDevice *d, void *opaque),
|
||||
pci_bus_dev_fn fn,
|
||||
void *opaque);
|
||||
void pci_for_each_device_reverse(PCIBus *bus, int bus_num,
|
||||
void (*fn)(PCIBus *bus, PCIDevice *d,
|
||||
void *opaque),
|
||||
pci_bus_dev_fn fn,
|
||||
void *opaque);
|
||||
void pci_for_each_bus_depth_first(PCIBus *bus,
|
||||
void *(*begin)(PCIBus *bus, void *parent_state),
|
||||
void (*end)(PCIBus *bus, void *state),
|
||||
void *parent_state);
|
||||
void pci_for_each_device_under_bus(PCIBus *bus,
|
||||
pci_bus_dev_fn fn, void *opaque);
|
||||
void pci_for_each_device_under_bus_reverse(PCIBus *bus,
|
||||
pci_bus_dev_fn fn,
|
||||
void *opaque);
|
||||
void pci_for_each_bus_depth_first(PCIBus *bus, pci_bus_ret_fn begin,
|
||||
pci_bus_fn end, void *parent_state);
|
||||
PCIDevice *pci_get_function_0(PCIDevice *pci_dev);
|
||||
|
||||
/* Use this wrapper when specific scan order is not required. */
|
||||
static inline
|
||||
void pci_for_each_bus(PCIBus *bus,
|
||||
void (*fn)(PCIBus *bus, void *opaque),
|
||||
void *opaque)
|
||||
void pci_for_each_bus(PCIBus *bus, pci_bus_fn fn, void *opaque)
|
||||
{
|
||||
pci_for_each_bus_depth_first(bus, NULL, fn, opaque);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue