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
{
19 int fd
; /* /dev/iommu file descriptor */
20 bool owned
; /* is the /dev/iommu opened internally */
26 int iommufd_backend_connect(IOMMUFDBackend
*be
, Error
**errp
);
27 void iommufd_backend_disconnect(IOMMUFDBackend
*be
);
29 int iommufd_backend_alloc_ioas(IOMMUFDBackend
*be
, uint32_t *ioas_id
,
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
);