Merge tag 'pull-request-2024-06-12' of https://gitlab.com/thuth/qemu into staging
[qemu/kevin.git] / include / sysemu / iommufd.h
blob293bfbe967215381532b8267227dde61fa9157b7
1 #ifndef SYSEMU_IOMMUFD_H
2 #define SYSEMU_IOMMUFD_H
4 #include "qom/object.h"
5 #include "exec/hwaddr.h"
6 #include "exec/cpu-common.h"
8 #define TYPE_IOMMUFD_BACKEND "iommufd"
9 OBJECT_DECLARE_TYPE(IOMMUFDBackend, IOMMUFDBackendClass, IOMMUFD_BACKEND)
11 struct IOMMUFDBackendClass {
12 ObjectClass parent_class;
15 struct IOMMUFDBackend {
16 Object parent;
18 /*< protected >*/
19 int fd; /* /dev/iommu file descriptor */
20 bool owned; /* is the /dev/iommu opened internally */
21 uint32_t users;
23 /*< public >*/
26 bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp);
27 void iommufd_backend_disconnect(IOMMUFDBackend *be);
29 bool iommufd_backend_alloc_ioas(IOMMUFDBackend *be, uint32_t *ioas_id,
30 Error **errp);
31 void iommufd_backend_free_id(IOMMUFDBackend *be, uint32_t id);
32 int iommufd_backend_map_dma(IOMMUFDBackend *be, uint32_t ioas_id, hwaddr iova,
33 ram_addr_t size, void *vaddr, bool readonly);
34 int iommufd_backend_unmap_dma(IOMMUFDBackend *be, uint32_t ioas_id,
35 hwaddr iova, ram_addr_t size);
36 #endif