xref: /openbmc/qemu/include/hw/remote/iommu.h (revision ed3a06b1)
1 /**
2  * Copyright © 2022 Oracle and/or its affiliates.
3  *
4  * This work is licensed under the terms of the GNU GPL, version 2 or later.
5  * See the COPYING file in the top-level directory.
6  *
7  */
8 
9 #ifndef REMOTE_IOMMU_H
10 #define REMOTE_IOMMU_H
11 
12 #include "hw/pci/pci_bus.h"
13 #include "hw/pci/pci.h"
14 
15 #ifndef INT2VOIDP
16 #define INT2VOIDP(i) (void *)(uintptr_t)(i)
17 #endif
18 
19 typedef struct RemoteIommuElem {
20     MemoryRegion *mr;
21 
22     AddressSpace as;
23 } RemoteIommuElem;
24 
25 #define TYPE_REMOTE_IOMMU "x-remote-iommu"
26 OBJECT_DECLARE_SIMPLE_TYPE(RemoteIommu, REMOTE_IOMMU)
27 
28 struct RemoteIommu {
29     Object parent;
30 
31     GHashTable *elem_by_devfn;
32 
33     QemuMutex lock;
34 };
35 
36 void remote_iommu_setup(PCIBus *pci_bus);
37 
38 void remote_iommu_unplug_dev(PCIDevice *pci_dev);
39 
40 #endif
41