* [PATCH v3 1/4] backends/iommufd: Add a helper to invalidate user-managed HWPT
2025-06-04 6:21 [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support Zhenzhong Duan
@ 2025-06-04 6:21 ` Zhenzhong Duan
2025-06-04 6:21 ` [PATCH v3 2/4] vfio/iommufd: Add properties and handlers to TYPE_HOST_IOMMU_DEVICE_IOMMUFD Zhenzhong Duan
` (3 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Zhenzhong Duan @ 2025-06-04 6:21 UTC (permalink / raw)
To: qemu-devel
Cc: alex.williamson, clg, eric.auger, mst, jasowang, peterx, ddutile,
jgg, nicolinc, shameerali.kolothum.thodi, joao.m.martins,
clement.mathieu--drif, kevin.tian, yi.l.liu, chao.p.peng,
Zhenzhong Duan
This helper passes cache invalidation request from guest to invalidate
stage-1 page table cache in host hardware.
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
---
include/system/iommufd.h | 4 ++++
backends/iommufd.c | 36 ++++++++++++++++++++++++++++++++++++
backends/trace-events | 1 +
3 files changed, 41 insertions(+)
diff --git a/include/system/iommufd.h b/include/system/iommufd.h
index cbab75bfbf..83ab8e1e4c 100644
--- a/include/system/iommufd.h
+++ b/include/system/iommufd.h
@@ -61,6 +61,10 @@ 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_backend_invalidate_cache(IOMMUFDBackend *be, uint32_t id,
+ uint32_t data_type, uint32_t entry_len,
+ uint32_t *entry_num, void *data,
+ Error **errp);
#define TYPE_HOST_IOMMU_DEVICE_IOMMUFD TYPE_HOST_IOMMU_DEVICE "-iommufd"
#endif
diff --git a/backends/iommufd.c b/backends/iommufd.c
index b73f75cd0b..8bcdb60fe7 100644
--- a/backends/iommufd.c
+++ b/backends/iommufd.c
@@ -311,6 +311,42 @@ bool iommufd_backend_get_device_info(IOMMUFDBackend *be, uint32_t devid,
return true;
}
+bool iommufd_backend_invalidate_cache(IOMMUFDBackend *be, uint32_t id,
+ uint32_t data_type, uint32_t entry_len,
+ uint32_t *entry_num, void *data,
+ Error **errp)
+{
+ int ret, fd = be->fd;
+ uint32_t total_entries = *entry_num;
+ struct iommu_hwpt_invalidate cache = {
+ .size = sizeof(cache),
+ .hwpt_id = id,
+ .data_type = data_type,
+ .entry_len = entry_len,
+ .entry_num = total_entries,
+ .data_uptr = (uintptr_t)data,
+ };
+
+ ret = ioctl(fd, IOMMU_HWPT_INVALIDATE, &cache);
+ trace_iommufd_backend_invalidate_cache(fd, id, data_type, entry_len,
+ total_entries, cache.entry_num,
+ (uintptr_t)data, ret ? errno : 0);
+ *entry_num = cache.entry_num;
+
+ if (ret) {
+ error_setg_errno(errp, errno, "IOMMU_HWPT_INVALIDATE failed:"
+ " total %d entries, processed %d entries",
+ total_entries, cache.entry_num);
+ } else if (total_entries != cache.entry_num) {
+ error_setg(errp, "IOMMU_HWPT_INVALIDATE succeed but with unprocessed"
+ " entries: total %d entries, processed %d entries."
+ " Kernel BUG?!", total_entries, cache.entry_num);
+ return false;
+ }
+
+ return !ret;
+}
+
static int hiod_iommufd_get_cap(HostIOMMUDevice *hiod, int cap, Error **errp)
{
HostIOMMUDeviceCaps *caps = &hiod->caps;
diff --git a/backends/trace-events b/backends/trace-events
index 40811a3162..7278214ea5 100644
--- a/backends/trace-events
+++ b/backends/trace-events
@@ -18,3 +18,4 @@ iommufd_backend_alloc_hwpt(int iommufd, uint32_t dev_id, uint32_t pt_id, uint32_
iommufd_backend_free_id(int iommufd, uint32_t id, int ret) " iommufd=%d id=%d (%d)"
iommufd_backend_set_dirty(int iommufd, uint32_t hwpt_id, bool start, int ret) " iommufd=%d hwpt=%u enable=%d (%d)"
iommufd_backend_get_dirty_bitmap(int iommufd, uint32_t hwpt_id, uint64_t iova, uint64_t size, uint64_t page_size, int ret) " iommufd=%d hwpt=%u iova=0x%"PRIx64" size=0x%"PRIx64" page_size=0x%"PRIx64" (%d)"
+iommufd_backend_invalidate_cache(int iommufd, uint32_t id, uint32_t data_type, uint32_t entry_len, uint32_t entry_num, uint32_t done_num, uint64_t data_ptr, int ret) " iommufd=%d id=%u data_type=%u entry_len=%u entry_num=%u done_num=%u data_ptr=0x%"PRIx64" (%d)"
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 2/4] vfio/iommufd: Add properties and handlers to TYPE_HOST_IOMMU_DEVICE_IOMMUFD
2025-06-04 6:21 [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support Zhenzhong Duan
2025-06-04 6:21 ` [PATCH v3 1/4] backends/iommufd: Add a helper to invalidate user-managed HWPT Zhenzhong Duan
@ 2025-06-04 6:21 ` Zhenzhong Duan
2025-06-04 6:21 ` [PATCH v3 3/4] vfio/iommufd: Implement [at|de]tach_hwpt handlers Zhenzhong Duan
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Zhenzhong Duan @ 2025-06-04 6:21 UTC (permalink / raw)
To: qemu-devel
Cc: alex.williamson, clg, eric.auger, mst, jasowang, peterx, ddutile,
jgg, nicolinc, shameerali.kolothum.thodi, joao.m.martins,
clement.mathieu--drif, kevin.tian, yi.l.liu, chao.p.peng,
Zhenzhong Duan
Enhance HostIOMMUDeviceIOMMUFD object with 3 new members, specific
to the iommufd BE + 2 new class functions.
IOMMUFD BE includes IOMMUFD handle, devid and hwpt_id. IOMMUFD handle
and devid are used to allocate/free ioas and hwpt. hwpt_id is used to
re-attach IOMMUFD backed device to its default VFIO sub-system created
hwpt, i.e., when vIOMMU is disabled by guest. These properties are
initialized in hiod::realize() after attachment.
2 new class functions are [at|de]tach_hwpt(). They are used to
attach/detach hwpt. VFIO and VDPA can have different implementions,
so implementation will be in sub-class instead of HostIOMMUDeviceIOMMUFD,
e.g., in HostIOMMUDeviceIOMMUFDVFIO.
Add two wrappers host_iommu_device_iommufd_[at|de]tach_hwpt to wrap the
two functions.
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
---
include/system/iommufd.h | 50 ++++++++++++++++++++++++++++++++++++++++
backends/iommufd.c | 22 ++++++++++++++++++
hw/vfio/iommufd.c | 6 +++++
3 files changed, 78 insertions(+)
diff --git a/include/system/iommufd.h b/include/system/iommufd.h
index 83ab8e1e4c..283861b924 100644
--- a/include/system/iommufd.h
+++ b/include/system/iommufd.h
@@ -67,4 +67,54 @@ bool iommufd_backend_invalidate_cache(IOMMUFDBackend *be, uint32_t id,
Error **errp);
#define TYPE_HOST_IOMMU_DEVICE_IOMMUFD TYPE_HOST_IOMMU_DEVICE "-iommufd"
+OBJECT_DECLARE_TYPE(HostIOMMUDeviceIOMMUFD, HostIOMMUDeviceIOMMUFDClass,
+ HOST_IOMMU_DEVICE_IOMMUFD)
+
+/* Overload of the host IOMMU device for the iommufd backend */
+struct HostIOMMUDeviceIOMMUFD {
+ HostIOMMUDevice parent_obj;
+
+ IOMMUFDBackend *iommufd;
+ uint32_t devid;
+ uint32_t hwpt_id;
+};
+
+struct HostIOMMUDeviceIOMMUFDClass {
+ HostIOMMUDeviceClass parent_class;
+
+ /**
+ * @attach_hwpt: attach host IOMMU device to IOMMUFD hardware page table.
+ * VFIO and VDPA device can have different implementation.
+ *
+ * Mandatory callback.
+ *
+ * @idev: host IOMMU device backed by IOMMUFD backend.
+ *
+ * @hwpt_id: ID of IOMMUFD hardware page table.
+ *
+ * @errp: pass an Error out when attachment fails.
+ *
+ * Returns: true on success, false on failure.
+ */
+ bool (*attach_hwpt)(HostIOMMUDeviceIOMMUFD *idev, uint32_t hwpt_id,
+ Error **errp);
+ /**
+ * @detach_hwpt: detach host IOMMU device from IOMMUFD hardware page table.
+ * VFIO and VDPA device can have different implementation.
+ *
+ * Mandatory callback.
+ *
+ * @idev: host IOMMU device backed by IOMMUFD backend.
+ *
+ * @errp: pass an Error out when attachment fails.
+ *
+ * Returns: true on success, false on failure.
+ */
+ bool (*detach_hwpt)(HostIOMMUDeviceIOMMUFD *idev, Error **errp);
+};
+
+bool host_iommu_device_iommufd_attach_hwpt(HostIOMMUDeviceIOMMUFD *idev,
+ uint32_t hwpt_id, Error **errp);
+bool host_iommu_device_iommufd_detach_hwpt(HostIOMMUDeviceIOMMUFD *idev,
+ Error **errp);
#endif
diff --git a/backends/iommufd.c b/backends/iommufd.c
index 8bcdb60fe7..c2c47abf7e 100644
--- a/backends/iommufd.c
+++ b/backends/iommufd.c
@@ -347,6 +347,26 @@ bool iommufd_backend_invalidate_cache(IOMMUFDBackend *be, uint32_t id,
return !ret;
}
+bool host_iommu_device_iommufd_attach_hwpt(HostIOMMUDeviceIOMMUFD *idev,
+ uint32_t hwpt_id, Error **errp)
+{
+ HostIOMMUDeviceIOMMUFDClass *idevc =
+ HOST_IOMMU_DEVICE_IOMMUFD_GET_CLASS(idev);
+
+ g_assert(idevc->attach_hwpt);
+ return idevc->attach_hwpt(idev, hwpt_id, errp);
+}
+
+bool host_iommu_device_iommufd_detach_hwpt(HostIOMMUDeviceIOMMUFD *idev,
+ Error **errp)
+{
+ HostIOMMUDeviceIOMMUFDClass *idevc =
+ HOST_IOMMU_DEVICE_IOMMUFD_GET_CLASS(idev);
+
+ g_assert(idevc->detach_hwpt);
+ return idevc->detach_hwpt(idev, errp);
+}
+
static int hiod_iommufd_get_cap(HostIOMMUDevice *hiod, int cap, Error **errp)
{
HostIOMMUDeviceCaps *caps = &hiod->caps;
@@ -385,6 +405,8 @@ static const TypeInfo types[] = {
}, {
.name = TYPE_HOST_IOMMU_DEVICE_IOMMUFD,
.parent = TYPE_HOST_IOMMU_DEVICE,
+ .instance_size = sizeof(HostIOMMUDeviceIOMMUFD),
+ .class_size = sizeof(HostIOMMUDeviceIOMMUFDClass),
.class_init = hiod_iommufd_class_init,
.abstract = true,
}
diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
index c42ca64526..82fcd5c6a5 100644
--- a/hw/vfio/iommufd.c
+++ b/hw/vfio/iommufd.c
@@ -819,6 +819,7 @@ static bool hiod_iommufd_vfio_realize(HostIOMMUDevice *hiod, void *opaque,
Error **errp)
{
VFIODevice *vdev = opaque;
+ HostIOMMUDeviceIOMMUFD *idev;
HostIOMMUDeviceCaps *caps = &hiod->caps;
enum iommu_hw_info_type type;
union {
@@ -838,6 +839,11 @@ static bool hiod_iommufd_vfio_realize(HostIOMMUDevice *hiod, void *opaque,
caps->type = type;
caps->hw_caps = hw_caps;
+ idev = HOST_IOMMU_DEVICE_IOMMUFD(hiod);
+ idev->iommufd = vdev->iommufd;
+ idev->devid = vdev->devid;
+ idev->hwpt_id = vdev->hwpt->hwpt_id;
+
return true;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 3/4] vfio/iommufd: Implement [at|de]tach_hwpt handlers
2025-06-04 6:21 [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support Zhenzhong Duan
2025-06-04 6:21 ` [PATCH v3 1/4] backends/iommufd: Add a helper to invalidate user-managed HWPT Zhenzhong Duan
2025-06-04 6:21 ` [PATCH v3 2/4] vfio/iommufd: Add properties and handlers to TYPE_HOST_IOMMU_DEVICE_IOMMUFD Zhenzhong Duan
@ 2025-06-04 6:21 ` Zhenzhong Duan
2025-06-04 6:21 ` [PATCH v3 4/4] vfio/iommufd: Save vendor specific device info Zhenzhong Duan
2025-06-04 6:59 ` [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support Cédric Le Goater
4 siblings, 0 replies; 9+ messages in thread
From: Zhenzhong Duan @ 2025-06-04 6:21 UTC (permalink / raw)
To: qemu-devel
Cc: alex.williamson, clg, eric.auger, mst, jasowang, peterx, ddutile,
jgg, nicolinc, shameerali.kolothum.thodi, joao.m.martins,
clement.mathieu--drif, kevin.tian, yi.l.liu, chao.p.peng,
Zhenzhong Duan
Implement [at|de]tach_hwpt handlers in VFIO subsystem. vIOMMU
utilizes them to attach to or detach from hwpt on host side.
Signed-off-by: Yi Liu <yi.l.liu@intel.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
---
hw/vfio/iommufd.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
index 82fcd5c6a5..3910b4b2b9 100644
--- a/hw/vfio/iommufd.c
+++ b/hw/vfio/iommufd.c
@@ -815,6 +815,24 @@ static void vfio_iommu_iommufd_class_init(ObjectClass *klass, const void *data)
vioc->query_dirty_bitmap = iommufd_query_dirty_bitmap;
};
+static bool
+host_iommu_device_iommufd_vfio_attach_hwpt(HostIOMMUDeviceIOMMUFD *idev,
+ uint32_t hwpt_id, Error **errp)
+{
+ VFIODevice *vbasedev = HOST_IOMMU_DEVICE(idev)->agent;
+
+ return !iommufd_cdev_attach_ioas_hwpt(vbasedev, hwpt_id, errp);
+}
+
+static bool
+host_iommu_device_iommufd_vfio_detach_hwpt(HostIOMMUDeviceIOMMUFD *idev,
+ Error **errp)
+{
+ VFIODevice *vbasedev = HOST_IOMMU_DEVICE(idev)->agent;
+
+ return iommufd_cdev_detach_ioas_hwpt(vbasedev, errp);
+}
+
static bool hiod_iommufd_vfio_realize(HostIOMMUDevice *hiod, void *opaque,
Error **errp)
{
@@ -869,10 +887,14 @@ hiod_iommufd_vfio_get_page_size_mask(HostIOMMUDevice *hiod)
static void hiod_iommufd_vfio_class_init(ObjectClass *oc, const void *data)
{
HostIOMMUDeviceClass *hiodc = HOST_IOMMU_DEVICE_CLASS(oc);
+ HostIOMMUDeviceIOMMUFDClass *idevc = HOST_IOMMU_DEVICE_IOMMUFD_CLASS(oc);
hiodc->realize = hiod_iommufd_vfio_realize;
hiodc->get_iova_ranges = hiod_iommufd_vfio_get_iova_ranges;
hiodc->get_page_size_mask = hiod_iommufd_vfio_get_page_size_mask;
+
+ idevc->attach_hwpt = host_iommu_device_iommufd_vfio_attach_hwpt;
+ idevc->detach_hwpt = host_iommu_device_iommufd_vfio_detach_hwpt;
};
static const TypeInfo types[] = {
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 4/4] vfio/iommufd: Save vendor specific device info
2025-06-04 6:21 [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support Zhenzhong Duan
` (2 preceding siblings ...)
2025-06-04 6:21 ` [PATCH v3 3/4] vfio/iommufd: Implement [at|de]tach_hwpt handlers Zhenzhong Duan
@ 2025-06-04 6:21 ` Zhenzhong Duan
2025-06-04 6:59 ` [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support Cédric Le Goater
4 siblings, 0 replies; 9+ messages in thread
From: Zhenzhong Duan @ 2025-06-04 6:21 UTC (permalink / raw)
To: qemu-devel
Cc: alex.williamson, clg, eric.auger, mst, jasowang, peterx, ddutile,
jgg, nicolinc, shameerali.kolothum.thodi, joao.m.martins,
clement.mathieu--drif, kevin.tian, yi.l.liu, chao.p.peng,
Zhenzhong Duan
Some device information returned by ioctl(IOMMU_GET_HW_INFO) are vendor
specific. Save them as raw data in a union supporting different vendors,
then vendor IOMMU can query the raw data with its fixed format for
capability directly.
Because IOMMU_GET_HW_INFO is only supported in linux, so declare those
capability related structures with CONFIG_LINUX.
Suggested-by: Eric Auger <eric.auger@redhat.com>
Suggested-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
---
include/system/host_iommu_device.h | 15 +++++++++++++++
hw/vfio/iommufd.c | 8 +++-----
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/include/system/host_iommu_device.h b/include/system/host_iommu_device.h
index 809cced4ba..ab849a4a82 100644
--- a/include/system/host_iommu_device.h
+++ b/include/system/host_iommu_device.h
@@ -14,6 +14,13 @@
#include "qom/object.h"
#include "qapi/error.h"
+#ifdef CONFIG_LINUX
+#include "linux/iommufd.h"
+
+typedef union VendorCaps {
+ struct iommu_hw_info_vtd vtd;
+ struct iommu_hw_info_arm_smmuv3 smmuv3;
+} VendorCaps;
/**
* struct HostIOMMUDeviceCaps - Define host IOMMU device capabilities.
@@ -22,11 +29,17 @@
*
* @hw_caps: host platform IOMMU capabilities (e.g. on IOMMUFD this represents
* the @out_capabilities value returned from IOMMU_GET_HW_INFO ioctl)
+ *
+ * @vendor_caps: host platform IOMMU vendor specific capabilities (e.g. on
+ * IOMMUFD this represents a user-space buffer filled by kernel
+ * with host IOMMU @type specific hardware information data)
*/
typedef struct HostIOMMUDeviceCaps {
uint32_t type;
uint64_t hw_caps;
+ VendorCaps vendor_caps;
} HostIOMMUDeviceCaps;
+#endif
#define TYPE_HOST_IOMMU_DEVICE "host-iommu-device"
OBJECT_DECLARE_TYPE(HostIOMMUDevice, HostIOMMUDeviceClass, HOST_IOMMU_DEVICE)
@@ -38,7 +51,9 @@ struct HostIOMMUDevice {
void *agent; /* pointer to agent device, ie. VFIO or VDPA device */
PCIBus *aliased_bus;
int aliased_devfn;
+#ifdef CONFIG_LINUX
HostIOMMUDeviceCaps caps;
+#endif
};
/**
diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
index 3910b4b2b9..d3efef71af 100644
--- a/hw/vfio/iommufd.c
+++ b/hw/vfio/iommufd.c
@@ -839,16 +839,14 @@ static bool hiod_iommufd_vfio_realize(HostIOMMUDevice *hiod, void *opaque,
VFIODevice *vdev = opaque;
HostIOMMUDeviceIOMMUFD *idev;
HostIOMMUDeviceCaps *caps = &hiod->caps;
+ VendorCaps *vendor_caps = &caps->vendor_caps;
enum iommu_hw_info_type type;
- union {
- struct iommu_hw_info_vtd vtd;
- } data;
uint64_t hw_caps;
hiod->agent = opaque;
- if (!iommufd_backend_get_device_info(vdev->iommufd, vdev->devid,
- &type, &data, sizeof(data),
+ if (!iommufd_backend_get_device_info(vdev->iommufd, vdev->devid, &type,
+ vendor_caps, sizeof(*vendor_caps),
&hw_caps, errp)) {
return false;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support
2025-06-04 6:21 [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support Zhenzhong Duan
` (3 preceding siblings ...)
2025-06-04 6:21 ` [PATCH v3 4/4] vfio/iommufd: Save vendor specific device info Zhenzhong Duan
@ 2025-06-04 6:59 ` Cédric Le Goater
2025-06-04 12:08 ` Jason Gunthorpe
4 siblings, 1 reply; 9+ messages in thread
From: Cédric Le Goater @ 2025-06-04 6:59 UTC (permalink / raw)
To: Zhenzhong Duan, qemu-devel
Cc: alex.williamson, eric.auger, mst, jasowang, peterx, ddutile, jgg,
nicolinc, shameerali.kolothum.thodi, joao.m.martins,
clement.mathieu--drif, kevin.tian, yi.l.liu, chao.p.peng
On 6/4/25 08:21, Zhenzhong Duan wrote:
> Hi,
>
> The first 6 patches of [1] are all VFIO or IOMMUFD related additions.
> Split them out per Cédric and seek for quick acceptance.
>
> I didn't copy changelog from [1] as it's a mix of the whole nesting series.
>
> For who want a quick view of the whole nesting series [2].
>
> Test done:
> - VFIO devices hotplug/unplug
> - build test on Windows
>
> [1] https://lists.gnu.org/archive/html/qemu-devel/2025-05/msg05002.html
> [2] https://github.com/yiliu1765/qemu/tree/zhenzhong/iommufd_nesting.v1.wip
>
> Thanks
> Zhenzhong
>
> Changelog:
> v3:
> - add doc comment update for new field vendor_caps (Eric)
>
> v2:
> - report kernel BUG as error instead of assert (Cédric)
> - merge patch2 and patch3 (Cédric)
> - handle vendor cap check directly from vtd_check_hiod, so patch6 removed (Cédric)
> - s/data_ptr/data (Cédric)
> - s/totally/total (Donald)
>
> v1:
> - changed to save raw data in VendorCaps, so we can keep all vendor structure
> decoding inside the backend and VFIO wouldn't need to care about types nor
> what's inside the data.
>
>
> Zhenzhong Duan (4):
> backends/iommufd: Add a helper to invalidate user-managed HWPT
> vfio/iommufd: Add properties and handlers to
> TYPE_HOST_IOMMU_DEVICE_IOMMUFD
> vfio/iommufd: Implement [at|de]tach_hwpt handlers
> vfio/iommufd: Save vendor specific device info
>
> include/system/host_iommu_device.h | 15 ++++++++
> include/system/iommufd.h | 54 ++++++++++++++++++++++++++++
> backends/iommufd.c | 58 ++++++++++++++++++++++++++++++
> hw/vfio/iommufd.c | 36 ++++++++++++++++---
> backends/trace-events | 1 +
> 5 files changed, 159 insertions(+), 5 deletions(-)
>
vfio-next updated.
b4 complained for a couple of trailers :
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✗ DKIM/nvidia.com)
I included them nevertheless.
Cheers,
C.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support
2025-06-04 6:59 ` [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support Cédric Le Goater
@ 2025-06-04 12:08 ` Jason Gunthorpe
2025-06-04 12:20 ` Cédric Le Goater
0 siblings, 1 reply; 9+ messages in thread
From: Jason Gunthorpe @ 2025-06-04 12:08 UTC (permalink / raw)
To: Cédric Le Goater
Cc: Zhenzhong Duan, qemu-devel, alex.williamson, eric.auger, mst,
jasowang, peterx, ddutile, nicolinc, shameerali.kolothum.thodi,
joao.m.martins, clement.mathieu--drif, kevin.tian, yi.l.liu,
chao.p.peng
On Wed, Jun 04, 2025 at 08:59:37AM +0200, Cédric Le Goater wrote:
> b4 complained for a couple of trailers :
He re-reviewed patches he contributed to making :)
> Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✗ DKIM/nvidia.com)
But why do you have an X? The messages are properly formed leaving the
nvidia server, I checked.. And my b4 is happy:
$ b4 am https://lore.kernel.org/qemu-devel/aBUHLWY1Qdapgl+Y@Asurada-Nvidia/
Grabbing thread from lore.kernel.org/all/aBUHLWY1Qdapgl%2BY@Asurada-Nvidia/t.mbox.gz
Analyzing 50 messages in the thread
Looking for additional code-review trailers on lore.kernel.org
Analyzing 7 code-review messages
Checking attestation on all messages, may take a moment...
---
[PATCH v2 1/6] hw/arm/smmuv3: Add support to associate a PCIe RC
+ Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✓ DKIM/nvidia.com)
[PATCH v2 2/6] hw/arm/virt-acpi-build: Update IORT for multiple smmuv3 devices
+ Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✓ DKIM/nvidia.com)
[PATCH v2 3/6] hw/arm/virt: Factor out common SMMUV3 dt bindings code
+ Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✓ DKIM/nvidia.com)
+ Reviewed-by: Eric Auger <eric.auger@redhat.com> (✓ DKIM/redhat.com)
[PATCH v2 4/6] hw/arm/virt: Add an SMMU_IO_LEN macro
+ Reviewed-by: Eric Auger <eric.auger@redhat.com> (✓ DKIM/redhat.com)
+ Reviewed-by: Donald Dutile <ddutile@redhat.com> (✓ DKIM/redhat.com)
[PATCH v2 5/6] hw/arm/virt: Add support for smmuv3 device
[PATCH v2 6/6] hw/arm/smmuv3: Enable smmuv3 device creation
+ Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✓ DKIM/nvidia.com)
Jason
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support
2025-06-04 12:08 ` Jason Gunthorpe
@ 2025-06-04 12:20 ` Cédric Le Goater
2025-06-04 12:28 ` Jason Gunthorpe
0 siblings, 1 reply; 9+ messages in thread
From: Cédric Le Goater @ 2025-06-04 12:20 UTC (permalink / raw)
To: Jason Gunthorpe
Cc: Zhenzhong Duan, qemu-devel, alex.williamson, eric.auger, mst,
jasowang, peterx, ddutile, nicolinc, shameerali.kolothum.thodi,
joao.m.martins, clement.mathieu--drif, kevin.tian, yi.l.liu,
chao.p.peng
On 6/4/25 14:08, Jason Gunthorpe wrote:
> On Wed, Jun 04, 2025 at 08:59:37AM +0200, Cédric Le Goater wrote:
>
>> b4 complained for a couple of trailers :
>
> He re-reviewed patches he contributed to making :)
>
>> Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✗ DKIM/nvidia.com)
>
> But why do you have an X? The messages are properly formed leaving the
> nvidia server, I checked.. And my b4 is happy:
>
> $ b4 am https://lore.kernel.org/qemu-devel/aBUHLWY1Qdapgl+Y@Asurada-Nvidia/
> Grabbing thread from lore.kernel.org/all/aBUHLWY1Qdapgl%2BY@Asurada-Nvidia/t.mbox.gz
> Analyzing 50 messages in the thread
> Looking for additional code-review trailers on lore.kernel.org
> Analyzing 7 code-review messages
> Checking attestation on all messages, may take a moment...
> ---
> [PATCH v2 1/6] hw/arm/smmuv3: Add support to associate a PCIe RC
> + Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✓ DKIM/nvidia.com)
> [PATCH v2 2/6] hw/arm/virt-acpi-build: Update IORT for multiple smmuv3 devices
> + Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✓ DKIM/nvidia.com)
> [PATCH v2 3/6] hw/arm/virt: Factor out common SMMUV3 dt bindings code
> + Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✓ DKIM/nvidia.com)
> + Reviewed-by: Eric Auger <eric.auger@redhat.com> (✓ DKIM/redhat.com)
> [PATCH v2 4/6] hw/arm/virt: Add an SMMU_IO_LEN macro
> + Reviewed-by: Eric Auger <eric.auger@redhat.com> (✓ DKIM/redhat.com)
> + Reviewed-by: Donald Dutile <ddutile@redhat.com> (✓ DKIM/redhat.com)
> [PATCH v2 5/6] hw/arm/virt: Add support for smmuv3 device
> [PATCH v2 6/6] hw/arm/smmuv3: Enable smmuv3 device creation
> + Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> (✓ DKIM/nvidia.com)
Ah ! Interesting, using the link doesn't report issues.
I use the message-id on v3 :
$ b4 am 20250604062115.4004200-1-zhenzhong.duan@intel.com
Analyzing 7 messages in the thread
Analyzing 76 code-review messages
Checking attestation on all messages, may take a moment...
---
✓ [PATCH v3 1/4] backends/iommufd: Add a helper to invalidate user-managed HWPT
✓ [PATCH v3 2/4] vfio/iommufd: Add properties and handlers to TYPE_HOST_IOMMU_DEVICE_IOMMUFD
✓ [PATCH v3 3/4] vfio/iommufd: Implement [at|de]tach_hwpt handlers
✓ [PATCH v3 4/4] vfio/iommufd: Save vendor specific device info
---
✓ Signed: DKIM/intel.com
---
Total patches: 4
---
NOTE: some trailers ignored due to from/email mismatches:
! Trailer: Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Msg From: Nicolin Chen via <qemu-devel@nongnu.org>
! Trailer: Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Msg From: Cédric Le Goater <clg@redhat.com>
NOTE: Rerun with -S to apply them anyway
---
Cover: ./v3_20250604_zhenzhong_duan_vfio_and_iommu_prerequisite_stuff_for_iommu_nesting_support.cover
Link: https://lore.kernel.org/r/20250604062115.4004200-1-zhenzhong.duan@intel.com
Base: not specified
git am ./v3_20250604_zhenzhong_duan_vfio_and_iommu_prerequisite_stuff_for_iommu_nesting_support.mbx
C.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/4] VFIO and IOMMU prerequisite stuff for IOMMU nesting support
2025-06-04 12:20 ` Cédric Le Goater
@ 2025-06-04 12:28 ` Jason Gunthorpe
0 siblings, 0 replies; 9+ messages in thread
From: Jason Gunthorpe @ 2025-06-04 12:28 UTC (permalink / raw)
To: Cédric Le Goater
Cc: Zhenzhong Duan, qemu-devel, alex.williamson, eric.auger, mst,
jasowang, peterx, ddutile, nicolinc, shameerali.kolothum.thodi,
joao.m.martins, clement.mathieu--drif, kevin.tian, yi.l.liu,
chao.p.peng
On Wed, Jun 04, 2025 at 02:20:23PM +0200, Cédric Le Goater wrote:
> NOTE: some trailers ignored due to from/email mismatches:
> ! Trailer: Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
> Msg From: Nicolin Chen via <qemu-devel@nongnu.org>
Oh this is some some mailman dysfunction causing this :(
mailman starts mangling messages when DKIM is turned on in some configurations.
Jason
^ permalink raw reply [flat|nested] 9+ messages in thread