1 #ifndef SYSEMU_IOMMUFD_H
2 #define SYSEMU_IOMMUFD_H
4 #include "qom/object.h"
5 #include "qemu/thread.h"
6 #include "exec/hwaddr.h"
7 #include "exec/cpu-common.h"
9 #define TYPE_IOMMUFD_BACKEND "iommufd"
10 OBJECT_DECLARE_TYPE(IOMMUFDBackend
, IOMMUFDBackendClass
, IOMMUFD_BACKEND
)
12 struct IOMMUFDBackendClass
{
13 ObjectClass parent_class
;
16 struct IOMMUFDBackend
{
20 int fd
; /* /dev/iommu file descriptor */
21 bool owned
; /* is the /dev/iommu opened internally */
28 int iommufd_backend_connect(IOMMUFDBackend
*be
, Error
**errp
);
29 void iommufd_backend_disconnect(IOMMUFDBackend
*be
);
31 int iommufd_backend_alloc_ioas(IOMMUFDBackend
*be
, uint32_t *ioas_id
,
33 void iommufd_backend_free_id(IOMMUFDBackend
*be
, uint32_t id
);
34 int iommufd_backend_map_dma(IOMMUFDBackend
*be
, uint32_t ioas_id
, hwaddr iova
,
35 ram_addr_t size
, void *vaddr
, bool readonly
);
36 int iommufd_backend_unmap_dma(IOMMUFDBackend
*be
, uint32_t ioas_id
,
37 hwaddr iova
, ram_addr_t size
);