>-----Original Message-----
>From: Steve Sistare <steven.sist...@oracle.com>
>Subject: [PATCH V3 29/42] backends/iommufd: change process ioctl
>
>Define the change process ioctl
>
>Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
>---
> backends/iommufd.c | 20 ++++++++++++++++++++
> backends/trace-events | 1 +
> include/system/iommufd.h | 2 ++
> 3 files changed, 23 insertions(+)
>
>diff --git a/backends/iommufd.c b/backends/iommufd.c
>index 5c1958f..6fed1c1 100644
>--- a/backends/iommufd.c
>+++ b/backends/iommufd.c
>@@ -73,6 +73,26 @@ static void iommufd_backend_class_init(ObjectClass *oc,
>const void *data)
> object_class_property_add_str(oc, "fd", NULL, iommufd_backend_set_fd);
> }
>
>+bool iommufd_change_process_capable(IOMMUFDBackend *be)
>+{
>+ struct iommu_ioas_change_process args = {.size = sizeof(args)};
>+
>+ return !ioctl(be->fd, IOMMU_IOAS_CHANGE_PROCESS, &args);
>+}
>+
>+bool iommufd_change_process(IOMMUFDBackend *be, Error **errp)
>+{
>+ struct iommu_ioas_change_process args = {.size = sizeof(args)};
>+ bool ret = !ioctl(be->fd, IOMMU_IOAS_CHANGE_PROCESS, &args);
This is same ioctl as above check, could it be called more than once for same
process?
>+
>+ if (!ret) {
>+ error_setg_errno(errp, errno, "IOMMU_IOAS_CHANGE_PROCESS fd %d
>failed",
>+ be->fd);
>+ }
>+ trace_iommufd_change_process(be->fd, ret);
>+ return ret;
>+}
>+
> bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp)
> {
> int fd;
>diff --git a/backends/trace-events b/backends/trace-events
>index f478e18..5ccdf90 100644
>--- a/backends/trace-events
>+++ b/backends/trace-events
>@@ -7,6 +7,7 @@ dbus_vmstate_loading(const char *id) "id: %s"
> dbus_vmstate_saving(const char *id) "id: %s"
>
> # iommufd.c
>+iommufd_change_process(int fd, bool ret) "fd=%d (%d)"
> iommufd_backend_connect(int fd, bool owned, uint32_t users) "fd=%d
>owned=%d users=%d"
> iommufd_backend_disconnect(int fd, uint32_t users) "fd=%d users=%d"
> iommu_backend_set_fd(int fd) "pre-opened /dev/iommu fd=%d"
>diff --git a/include/system/iommufd.h b/include/system/iommufd.h
>index ac700b8..db9ed53 100644
>--- a/include/system/iommufd.h
>+++ b/include/system/iommufd.h
>@@ -64,6 +64,8 @@ bool
>iommufd_backend_get_dirty_bitmap(IOMMUFDBackend *be, uint32_t hwpt_id,
> uint64_t iova, ram_addr_t size,
> uint64_t page_size, uint64_t *data,
> Error **errp);
>+bool iommufd_change_process_capable(IOMMUFDBackend *be);
>+bool iommufd_change_process(IOMMUFDBackend *be, Error **errp);
>
> #define TYPE_HOST_IOMMU_DEVICE_IOMMUFD TYPE_HOST_IOMMU_DEVICE
>"-iommufd"
> #endif
>--
>1.8.3.1