* [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers
@ 2026-01-21 12:59 Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 1/8] dma-buf: Rename .move_notify() callback to a clearer identifier Leon Romanovsky
` (12 more replies)
0 siblings, 13 replies; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 12:59 UTC (permalink / raw)
To: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Jason Gunthorpe, Leon Romanovsky, Kevin Tian, Joerg Roedel,
Will Deacon, Robin Murphy, Felix Kuehling, Alex Williamson,
Ankit Agrawal, Vivek Kasireddy
Cc: linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
Changelog:
v4:
* Changed DMA_RESV_USAGE_KERNEL to DMA_RESV_USAGE_BOOKKEEP.
* Made .invalidate_mapping() truly optional.
* Added patch which renames dma_buf_move_notify() to be
dma_buf_invalidate_mappings().
* Restored dma_buf_attachment_is_dynamic() function.
v3: https://lore.kernel.org/all/20260120-dmabuf-revoke-v3-0-b7e0b07b8214@nvidia.com/
* Used Jason's wordings for commits and cover letter.
* Removed IOMMUFD patch.
* Renamed dma_buf_attachment_is_revoke() to be dma_buf_attach_revocable().
* Added patch to remove CONFIG_DMABUF_MOVE_NOTIFY.
* Added Reviewed-by tags.
* Called to dma_resv_wait_timeout() after dma_buf_move_notify() in VFIO.
* Added dma_buf_attach_revocable() check to VFIO DMABUF attach function.
* Slightly changed commit messages.
v2: https://patch.msgid.link/20260118-dmabuf-revoke-v2-0-a03bb27c0875@nvidia.com
* Changed series to document the revoke semantics instead of
implementing it.
v1: https://patch.msgid.link/20260111-dmabuf-revoke-v1-0-fb4bcc8c259b@nvidia.com
-------------------------------------------------------------------------
This series documents a dma-buf “revoke” mechanism: to allow a dma-buf
exporter to explicitly invalidate (“kill”) a shared buffer after it has
been distributed to importers, so that further CPU and device access is
prevented and importers reliably observe failure.
The change in this series is to properly document and use existing core
“revoked” state on the dma-buf object and a corresponding exporter-triggered
revoke operation.
dma-buf has quietly allowed calling move_notify on pinned dma-bufs, even
though legacy importers using dma_buf_attach() would simply ignore
these calls.
RDMA saw this and needed to use allow_peer2peer=true, so implemented a
new-style pinned importer with an explicitly non-working move_notify()
callback.
This has been tolerable because the existing exporters are thought to
only call move_notify() on a pinned DMABUF under RAS events and we
have been willing to tolerate the UAF that results by allowing the
importer to continue to use the mapping in this rare case.
VFIO wants to implement a pin supporting exporter that will issue a
revoking move_notify() around FLRs and a few other user triggerable
operations. Since this is much more common we are not willing to
tolerate the security UAF caused by interworking with non-move_notify()
supporting drivers. Thus till now VFIO has required dynamic importers,
even though it never actually moves the buffer location.
To allow VFIO to work with pinned importers, according to how dma-buf
was intended, we need to allow VFIO to detect if an importer is legacy
or RDMA and does not actually implement move_notify().
In theory all exporters that call move_notify() on pinned dma-buf's
should call this function, however that would break a number of widely
used NIC/GPU flows. Thus for now do not spread this further than VFIO
until we can understand how much of RDMA can implement the full
semantic.
In the process clarify how move_notify is intended to be used with
pinned dma-bufs.
Thanks
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
Leon Romanovsky (8):
dma-buf: Rename .move_notify() callback to a clearer identifier
dma-buf: Rename dma_buf_move_notify() to dma_buf_invalidate_mappings()
dma-buf: Always build with DMABUF_MOVE_NOTIFY
dma-buf: Make .invalidate_mapping() truly optional
dma-buf: Add check function for revoke semantics
iommufd: Pin dma-buf importer for revoke semantics
vfio: Wait for dma-buf invalidation to complete
vfio: Validate dma-buf revocation semantics
drivers/dma-buf/Kconfig | 12 -------
drivers/dma-buf/dma-buf.c | 53 ++++++++++++++++++++++-------
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 14 +++-----
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 +-
drivers/gpu/drm/amd/amdkfd/Kconfig | 2 +-
drivers/gpu/drm/virtio/virtgpu_prime.c | 2 +-
drivers/gpu/drm/xe/tests/xe_dma_buf.c | 7 ++--
drivers/gpu/drm/xe/xe_bo.c | 2 +-
drivers/gpu/drm/xe/xe_dma_buf.c | 14 +++-----
drivers/infiniband/core/umem_dmabuf.c | 13 -------
drivers/infiniband/hw/mlx5/mr.c | 2 +-
drivers/iommu/iommufd/pages.c | 11 ++++--
drivers/iommu/iommufd/selftest.c | 2 +-
drivers/vfio/pci/vfio_pci_dmabuf.c | 13 +++++--
include/linux/dma-buf.h | 9 ++---
15 files changed, 84 insertions(+), 74 deletions(-)
---
base-commit: 9ace4753a5202b02191d54e9fdf7f9e3d02b85eb
change-id: 20251221-dmabuf-revoke-b90ef16e4236
Best regards,
--
Leon Romanovsky <leonro@nvidia.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v4 1/8] dma-buf: Rename .move_notify() callback to a clearer identifier
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
@ 2026-01-21 12:59 ` Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 2/8] dma-buf: Rename dma_buf_move_notify() to dma_buf_invalidate_mappings() Leon Romanovsky
` (11 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 12:59 UTC (permalink / raw)
To: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Jason Gunthorpe, Leon Romanovsky, Kevin Tian, Joerg Roedel,
Will Deacon, Robin Murphy, Felix Kuehling, Alex Williamson,
Ankit Agrawal, Vivek Kasireddy
Cc: linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
From: Leon Romanovsky <leonro@nvidia.com>
Rename the .move_notify() callback to .invalidate_mappings() to make its
purpose explicit and highlight that it is responsible for invalidating
existing mappings.
Suggested-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
drivers/dma-buf/dma-buf.c | 6 +++---
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 4 ++--
drivers/gpu/drm/virtio/virtgpu_prime.c | 2 +-
drivers/gpu/drm/xe/tests/xe_dma_buf.c | 6 +++---
drivers/gpu/drm/xe/xe_dma_buf.c | 2 +-
drivers/infiniband/core/umem_dmabuf.c | 4 ++--
drivers/infiniband/hw/mlx5/mr.c | 2 +-
drivers/iommu/iommufd/pages.c | 2 +-
include/linux/dma-buf.h | 6 +++---
9 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index edaa9e4ee4ae..59cc647bf40e 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -948,7 +948,7 @@ dma_buf_dynamic_attach(struct dma_buf *dmabuf, struct device *dev,
if (WARN_ON(!dmabuf || !dev))
return ERR_PTR(-EINVAL);
- if (WARN_ON(importer_ops && !importer_ops->move_notify))
+ if (WARN_ON(importer_ops && !importer_ops->invalidate_mappings))
return ERR_PTR(-EINVAL);
attach = kzalloc(sizeof(*attach), GFP_KERNEL);
@@ -1055,7 +1055,7 @@ EXPORT_SYMBOL_NS_GPL(dma_buf_pin, "DMA_BUF");
*
* This unpins a buffer pinned by dma_buf_pin() and allows the exporter to move
* any mapping of @attach again and inform the importer through
- * &dma_buf_attach_ops.move_notify.
+ * &dma_buf_attach_ops.invalidate_mappings.
*/
void dma_buf_unpin(struct dma_buf_attachment *attach)
{
@@ -1262,7 +1262,7 @@ void dma_buf_move_notify(struct dma_buf *dmabuf)
list_for_each_entry(attach, &dmabuf->attachments, node)
if (attach->importer_ops)
- attach->importer_ops->move_notify(attach);
+ attach->importer_ops->invalidate_mappings(attach);
}
EXPORT_SYMBOL_NS_GPL(dma_buf_move_notify, "DMA_BUF");
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
index e22cfa7c6d32..863454148b28 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
@@ -450,7 +450,7 @@ amdgpu_dma_buf_create_obj(struct drm_device *dev, struct dma_buf *dma_buf)
}
/**
- * amdgpu_dma_buf_move_notify - &attach.move_notify implementation
+ * amdgpu_dma_buf_move_notify - &attach.invalidate_mappings implementation
*
* @attach: the DMA-buf attachment
*
@@ -521,7 +521,7 @@ amdgpu_dma_buf_move_notify(struct dma_buf_attachment *attach)
static const struct dma_buf_attach_ops amdgpu_dma_buf_attach_ops = {
.allow_peer2peer = true,
- .move_notify = amdgpu_dma_buf_move_notify
+ .invalidate_mappings = amdgpu_dma_buf_move_notify
};
/**
diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c
index ce49282198cb..19c78dd2ca77 100644
--- a/drivers/gpu/drm/virtio/virtgpu_prime.c
+++ b/drivers/gpu/drm/virtio/virtgpu_prime.c
@@ -288,7 +288,7 @@ static void virtgpu_dma_buf_move_notify(struct dma_buf_attachment *attach)
static const struct dma_buf_attach_ops virtgpu_dma_buf_attach_ops = {
.allow_peer2peer = true,
- .move_notify = virtgpu_dma_buf_move_notify
+ .invalidate_mappings = virtgpu_dma_buf_move_notify
};
struct drm_gem_object *virtgpu_gem_prime_import(struct drm_device *dev,
diff --git a/drivers/gpu/drm/xe/tests/xe_dma_buf.c b/drivers/gpu/drm/xe/tests/xe_dma_buf.c
index 5df98de5ba3c..1f2cca5c2f81 100644
--- a/drivers/gpu/drm/xe/tests/xe_dma_buf.c
+++ b/drivers/gpu/drm/xe/tests/xe_dma_buf.c
@@ -23,7 +23,7 @@ static bool p2p_enabled(struct dma_buf_test_params *params)
static bool is_dynamic(struct dma_buf_test_params *params)
{
return IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY) && params->attach_ops &&
- params->attach_ops->move_notify;
+ params->attach_ops->invalidate_mappings;
}
static void check_residency(struct kunit *test, struct xe_bo *exported,
@@ -60,7 +60,7 @@ static void check_residency(struct kunit *test, struct xe_bo *exported,
/*
* Evict exporter. Evicting the exported bo will
- * evict also the imported bo through the move_notify() functionality if
+ * evict also the imported bo through the invalidate_mappings() functionality if
* importer is on a different device. If they're on the same device,
* the exporter and the importer should be the same bo.
*/
@@ -198,7 +198,7 @@ static void xe_test_dmabuf_import_same_driver(struct xe_device *xe)
static const struct dma_buf_attach_ops nop2p_attach_ops = {
.allow_peer2peer = false,
- .move_notify = xe_dma_buf_move_notify
+ .invalidate_mappings = xe_dma_buf_move_notify
};
/*
diff --git a/drivers/gpu/drm/xe/xe_dma_buf.c b/drivers/gpu/drm/xe/xe_dma_buf.c
index 7c74a31d4486..1b9cd043e517 100644
--- a/drivers/gpu/drm/xe/xe_dma_buf.c
+++ b/drivers/gpu/drm/xe/xe_dma_buf.c
@@ -287,7 +287,7 @@ static void xe_dma_buf_move_notify(struct dma_buf_attachment *attach)
static const struct dma_buf_attach_ops xe_dma_buf_attach_ops = {
.allow_peer2peer = true,
- .move_notify = xe_dma_buf_move_notify
+ .invalidate_mappings = xe_dma_buf_move_notify
};
#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
diff --git a/drivers/infiniband/core/umem_dmabuf.c b/drivers/infiniband/core/umem_dmabuf.c
index 0ec2e4120cc9..d77a739cfe7a 100644
--- a/drivers/infiniband/core/umem_dmabuf.c
+++ b/drivers/infiniband/core/umem_dmabuf.c
@@ -129,7 +129,7 @@ ib_umem_dmabuf_get_with_dma_device(struct ib_device *device,
if (check_add_overflow(offset, (unsigned long)size, &end))
return ret;
- if (unlikely(!ops || !ops->move_notify))
+ if (unlikely(!ops || !ops->invalidate_mappings))
return ret;
dmabuf = dma_buf_get(fd);
@@ -195,7 +195,7 @@ ib_umem_dmabuf_unsupported_move_notify(struct dma_buf_attachment *attach)
static struct dma_buf_attach_ops ib_umem_dmabuf_attach_pinned_ops = {
.allow_peer2peer = true,
- .move_notify = ib_umem_dmabuf_unsupported_move_notify,
+ .invalidate_mappings = ib_umem_dmabuf_unsupported_move_notify,
};
struct ib_umem_dmabuf *
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 325fa04cbe8a..97099d3b1688 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -1620,7 +1620,7 @@ static void mlx5_ib_dmabuf_invalidate_cb(struct dma_buf_attachment *attach)
static struct dma_buf_attach_ops mlx5_ib_dmabuf_attach_ops = {
.allow_peer2peer = 1,
- .move_notify = mlx5_ib_dmabuf_invalidate_cb,
+ .invalidate_mappings = mlx5_ib_dmabuf_invalidate_cb,
};
static struct ib_mr *
diff --git a/drivers/iommu/iommufd/pages.c b/drivers/iommu/iommufd/pages.c
index dbe51ecb9a20..76f900fa1687 100644
--- a/drivers/iommu/iommufd/pages.c
+++ b/drivers/iommu/iommufd/pages.c
@@ -1451,7 +1451,7 @@ static void iopt_revoke_notify(struct dma_buf_attachment *attach)
static struct dma_buf_attach_ops iopt_dmabuf_attach_revoke_ops = {
.allow_peer2peer = true,
- .move_notify = iopt_revoke_notify,
+ .invalidate_mappings = iopt_revoke_notify,
};
/*
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
index 0bc492090237..1b397635c793 100644
--- a/include/linux/dma-buf.h
+++ b/include/linux/dma-buf.h
@@ -407,7 +407,7 @@ struct dma_buf {
* through the device.
*
* - Dynamic importers should set fences for any access that they can't
- * disable immediately from their &dma_buf_attach_ops.move_notify
+ * disable immediately from their &dma_buf_attach_ops.invalidate_mappings
* callback.
*
* IMPORTANT:
@@ -458,7 +458,7 @@ struct dma_buf_attach_ops {
bool allow_peer2peer;
/**
- * @move_notify: [optional] notification that the DMA-buf is moving
+ * @invalidate_mappings: [optional] notification that the DMA-buf is moving
*
* If this callback is provided the framework can avoid pinning the
* backing store while mappings exists.
@@ -475,7 +475,7 @@ struct dma_buf_attach_ops {
* New mappings can be created after this callback returns, and will
* point to the new location of the DMA-buf.
*/
- void (*move_notify)(struct dma_buf_attachment *attach);
+ void (*invalidate_mappings)(struct dma_buf_attachment *attach);
};
/**
--
2.52.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v4 2/8] dma-buf: Rename dma_buf_move_notify() to dma_buf_invalidate_mappings()
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 1/8] dma-buf: Rename .move_notify() callback to a clearer identifier Leon Romanovsky
@ 2026-01-21 12:59 ` Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 3/8] dma-buf: Always build with DMABUF_MOVE_NOTIFY Leon Romanovsky
` (10 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 12:59 UTC (permalink / raw)
To: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Jason Gunthorpe, Leon Romanovsky, Kevin Tian, Joerg Roedel,
Will Deacon, Robin Murphy, Felix Kuehling, Alex Williamson,
Ankit Agrawal, Vivek Kasireddy
Cc: linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
From: Leon Romanovsky <leonro@nvidia.com>
Along with renaming the .move_notify() callback, rename the corresponding
dma-buf core function. This makes the expected behavior clear to exporters
calling this function.
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
drivers/dma-buf/dma-buf.c | 8 ++++----
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 +-
drivers/gpu/drm/xe/xe_bo.c | 2 +-
drivers/iommu/iommufd/selftest.c | 2 +-
drivers/vfio/pci/vfio_pci_dmabuf.c | 4 ++--
include/linux/dma-buf.h | 2 +-
6 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index 59cc647bf40e..e12db540c413 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -912,7 +912,7 @@ dma_buf_pin_on_map(struct dma_buf_attachment *attach)
* 3. Exporters must hold the dma-buf reservation lock when calling these
* functions:
*
- * - dma_buf_move_notify()
+ * - dma_buf_invalidate_mappings()
*/
/**
@@ -1247,14 +1247,14 @@ void dma_buf_unmap_attachment_unlocked(struct dma_buf_attachment *attach,
EXPORT_SYMBOL_NS_GPL(dma_buf_unmap_attachment_unlocked, "DMA_BUF");
/**
- * dma_buf_move_notify - notify attachments that DMA-buf is moving
+ * dma_buf_invalidate_mappings - notify attachments that DMA-buf is moving
*
* @dmabuf: [in] buffer which is moving
*
* Informs all attachments that they need to destroy and recreate all their
* mappings.
*/
-void dma_buf_move_notify(struct dma_buf *dmabuf)
+void dma_buf_invalidate_mappings(struct dma_buf *dmabuf)
{
struct dma_buf_attachment *attach;
@@ -1264,7 +1264,7 @@ void dma_buf_move_notify(struct dma_buf *dmabuf)
if (attach->importer_ops)
attach->importer_ops->invalidate_mappings(attach);
}
-EXPORT_SYMBOL_NS_GPL(dma_buf_move_notify, "DMA_BUF");
+EXPORT_SYMBOL_NS_GPL(dma_buf_invalidate_mappings, "DMA_BUF");
/**
* DOC: cpu access
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index e08f58de4b17..f73dc99d1887 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -1270,7 +1270,7 @@ void amdgpu_bo_move_notify(struct ttm_buffer_object *bo,
if (abo->tbo.base.dma_buf && !drm_gem_is_imported(&abo->tbo.base) &&
old_mem && old_mem->mem_type != TTM_PL_SYSTEM)
- dma_buf_move_notify(abo->tbo.base.dma_buf);
+ dma_buf_invalidate_mappings(abo->tbo.base.dma_buf);
/* move_notify is called before move happens */
trace_amdgpu_bo_move(abo, new_mem ? new_mem->mem_type : -1,
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index bf4ee976b680..7d02cd9a8501 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -819,7 +819,7 @@ static int xe_bo_move_notify(struct xe_bo *bo,
/* Don't call move_notify() for imported dma-bufs. */
if (ttm_bo->base.dma_buf && !ttm_bo->base.import_attach)
- dma_buf_move_notify(ttm_bo->base.dma_buf);
+ dma_buf_invalidate_mappings(ttm_bo->base.dma_buf);
/*
* TTM has already nuked the mmap for us (see ttm_bo_unmap_virtual),
diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selftest.c
index 550ff36dec3a..f60cbd5328cc 100644
--- a/drivers/iommu/iommufd/selftest.c
+++ b/drivers/iommu/iommufd/selftest.c
@@ -2081,7 +2081,7 @@ static int iommufd_test_dmabuf_revoke(struct iommufd_ucmd *ucmd, int fd,
priv = dmabuf->priv;
dma_resv_lock(dmabuf->resv, NULL);
priv->revoked = revoked;
- dma_buf_move_notify(dmabuf);
+ dma_buf_invalidate_mappings(dmabuf);
dma_resv_unlock(dmabuf->resv);
err_put:
diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci_dmabuf.c
index d4d0f7d08c53..362e3d149817 100644
--- a/drivers/vfio/pci/vfio_pci_dmabuf.c
+++ b/drivers/vfio/pci/vfio_pci_dmabuf.c
@@ -320,7 +320,7 @@ void vfio_pci_dma_buf_move(struct vfio_pci_core_device *vdev, bool revoked)
if (priv->revoked != revoked) {
dma_resv_lock(priv->dmabuf->resv, NULL);
priv->revoked = revoked;
- dma_buf_move_notify(priv->dmabuf);
+ dma_buf_invalidate_mappings(priv->dmabuf);
dma_resv_unlock(priv->dmabuf->resv);
}
fput(priv->dmabuf->file);
@@ -341,7 +341,7 @@ void vfio_pci_dma_buf_cleanup(struct vfio_pci_core_device *vdev)
list_del_init(&priv->dmabufs_elm);
priv->vdev = NULL;
priv->revoked = true;
- dma_buf_move_notify(priv->dmabuf);
+ dma_buf_invalidate_mappings(priv->dmabuf);
dma_resv_unlock(priv->dmabuf->resv);
vfio_device_put_registration(&vdev->vdev);
fput(priv->dmabuf->file);
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
index 1b397635c793..d5c3ce2b3aa4 100644
--- a/include/linux/dma-buf.h
+++ b/include/linux/dma-buf.h
@@ -600,7 +600,7 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *,
enum dma_data_direction);
void dma_buf_unmap_attachment(struct dma_buf_attachment *, struct sg_table *,
enum dma_data_direction);
-void dma_buf_move_notify(struct dma_buf *dma_buf);
+void dma_buf_invalidate_mappings(struct dma_buf *dma_buf);
int dma_buf_begin_cpu_access(struct dma_buf *dma_buf,
enum dma_data_direction dir);
int dma_buf_end_cpu_access(struct dma_buf *dma_buf,
--
2.52.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v4 3/8] dma-buf: Always build with DMABUF_MOVE_NOTIFY
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 1/8] dma-buf: Rename .move_notify() callback to a clearer identifier Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 2/8] dma-buf: Rename dma_buf_move_notify() to dma_buf_invalidate_mappings() Leon Romanovsky
@ 2026-01-21 12:59 ` Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 4/8] dma-buf: Make .invalidate_mapping() truly optional Leon Romanovsky
` (9 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 12:59 UTC (permalink / raw)
To: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Jason Gunthorpe, Leon Romanovsky, Kevin Tian, Joerg Roedel,
Will Deacon, Robin Murphy, Felix Kuehling, Alex Williamson,
Ankit Agrawal, Vivek Kasireddy
Cc: linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
From: Leon Romanovsky <leonro@nvidia.com>
DMABUF_MOVE_NOTIFY was introduced in 2018 and has been marked as
experimental and disabled by default ever since. Six years later,
all new importers implement this callback.
It is therefore reasonable to drop CONFIG_DMABUF_MOVE_NOTIFY and
always build DMABUF with support for it enabled.
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
drivers/dma-buf/Kconfig | 12 ------------
drivers/dma-buf/dma-buf.c | 3 +--
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 10 +++-------
drivers/gpu/drm/amd/amdkfd/Kconfig | 2 +-
drivers/gpu/drm/xe/tests/xe_dma_buf.c | 3 +--
drivers/gpu/drm/xe/xe_dma_buf.c | 12 ++++--------
6 files changed, 10 insertions(+), 32 deletions(-)
diff --git a/drivers/dma-buf/Kconfig b/drivers/dma-buf/Kconfig
index b46eb8a552d7..84d5e9b24e20 100644
--- a/drivers/dma-buf/Kconfig
+++ b/drivers/dma-buf/Kconfig
@@ -40,18 +40,6 @@ config UDMABUF
A driver to let userspace turn memfd regions into dma-bufs.
Qemu can use this to create host dmabufs for guest framebuffers.
-config DMABUF_MOVE_NOTIFY
- bool "Move notify between drivers (EXPERIMENTAL)"
- default n
- depends on DMA_SHARED_BUFFER
- help
- Don't pin buffers if the dynamic DMA-buf interface is available on
- both the exporter as well as the importer. This fixes a security
- problem where userspace is able to pin unrestricted amounts of memory
- through DMA-buf.
- This is marked experimental because we don't yet have a consistent
- execution context and memory management between drivers.
-
config DMABUF_DEBUG
bool "DMA-BUF debug checks"
depends on DMA_SHARED_BUFFER
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index e12db540c413..cd68c1c0bfd7 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -847,8 +847,7 @@ static bool
dma_buf_pin_on_map(struct dma_buf_attachment *attach)
{
return attach->dmabuf->ops->pin &&
- (!dma_buf_attachment_is_dynamic(attach) ||
- !IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY));
+ !dma_buf_attachment_is_dynamic(attach);
}
/**
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
index 863454148b28..349215549e8f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
@@ -145,13 +145,9 @@ static int amdgpu_dma_buf_pin(struct dma_buf_attachment *attach)
* notifiers are disabled, only allow pinning in VRAM when move
* notiers are enabled.
*/
- if (!IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY)) {
- domains &= ~AMDGPU_GEM_DOMAIN_VRAM;
- } else {
- list_for_each_entry(attach, &dmabuf->attachments, node)
- if (!attach->peer2peer)
- domains &= ~AMDGPU_GEM_DOMAIN_VRAM;
- }
+ list_for_each_entry(attach, &dmabuf->attachments, node)
+ if (!attach->peer2peer)
+ domains &= ~AMDGPU_GEM_DOMAIN_VRAM;
if (domains & AMDGPU_GEM_DOMAIN_VRAM)
bo->flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
diff --git a/drivers/gpu/drm/amd/amdkfd/Kconfig b/drivers/gpu/drm/amd/amdkfd/Kconfig
index 16e12c9913f9..a5d7467c2f34 100644
--- a/drivers/gpu/drm/amd/amdkfd/Kconfig
+++ b/drivers/gpu/drm/amd/amdkfd/Kconfig
@@ -27,7 +27,7 @@ config HSA_AMD_SVM
config HSA_AMD_P2P
bool "HSA kernel driver support for peer-to-peer for AMD GPU devices"
- depends on HSA_AMD && PCI_P2PDMA && DMABUF_MOVE_NOTIFY
+ depends on HSA_AMD && PCI_P2PDMA
help
Enable peer-to-peer (P2P) communication between AMD GPUs over
the PCIe bus. This can improve performance of multi-GPU compute
diff --git a/drivers/gpu/drm/xe/tests/xe_dma_buf.c b/drivers/gpu/drm/xe/tests/xe_dma_buf.c
index 1f2cca5c2f81..c107687ef3c0 100644
--- a/drivers/gpu/drm/xe/tests/xe_dma_buf.c
+++ b/drivers/gpu/drm/xe/tests/xe_dma_buf.c
@@ -22,8 +22,7 @@ static bool p2p_enabled(struct dma_buf_test_params *params)
static bool is_dynamic(struct dma_buf_test_params *params)
{
- return IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY) && params->attach_ops &&
- params->attach_ops->invalidate_mappings;
+ return params->attach_ops && params->attach_ops->invalidate_mappings;
}
static void check_residency(struct kunit *test, struct xe_bo *exported,
diff --git a/drivers/gpu/drm/xe/xe_dma_buf.c b/drivers/gpu/drm/xe/xe_dma_buf.c
index 1b9cd043e517..ea370cd373e9 100644
--- a/drivers/gpu/drm/xe/xe_dma_buf.c
+++ b/drivers/gpu/drm/xe/xe_dma_buf.c
@@ -56,14 +56,10 @@ static int xe_dma_buf_pin(struct dma_buf_attachment *attach)
bool allow_vram = true;
int ret;
- if (!IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY)) {
- allow_vram = false;
- } else {
- list_for_each_entry(attach, &dmabuf->attachments, node) {
- if (!attach->peer2peer) {
- allow_vram = false;
- break;
- }
+ list_for_each_entry(attach, &dmabuf->attachments, node) {
+ if (!attach->peer2peer) {
+ allow_vram = false;
+ break;
}
}
--
2.52.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v4 4/8] dma-buf: Make .invalidate_mapping() truly optional
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (2 preceding siblings ...)
2026-01-21 12:59 ` [PATCH v4 3/8] dma-buf: Always build with DMABUF_MOVE_NOTIFY Leon Romanovsky
@ 2026-01-21 12:59 ` Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 5/8] dma-buf: Add check function for revoke semantics Leon Romanovsky
` (8 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 12:59 UTC (permalink / raw)
To: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Jason Gunthorpe, Leon Romanovsky, Kevin Tian, Joerg Roedel,
Will Deacon, Robin Murphy, Felix Kuehling, Alex Williamson,
Ankit Agrawal, Vivek Kasireddy
Cc: linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
From: Leon Romanovsky <leonro@nvidia.com>
The .invalidate_mapping() callback is documented as optional, yet it
effectively became mandatory whenever importer_ops were provided. This
led to cases where RDMA non-ODP code had to supply an empty stub.
Relax the checks in the dma-buf core so the callback can be omitted,
allowing RDMA code to drop the unnecessary function.
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
drivers/dma-buf/dma-buf.c | 6 ++----
drivers/infiniband/core/umem_dmabuf.c | 13 -------------
2 files changed, 2 insertions(+), 17 deletions(-)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index cd68c1c0bfd7..1629312d364a 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -947,9 +947,6 @@ dma_buf_dynamic_attach(struct dma_buf *dmabuf, struct device *dev,
if (WARN_ON(!dmabuf || !dev))
return ERR_PTR(-EINVAL);
- if (WARN_ON(importer_ops && !importer_ops->invalidate_mappings))
- return ERR_PTR(-EINVAL);
-
attach = kzalloc(sizeof(*attach), GFP_KERNEL);
if (!attach)
return ERR_PTR(-ENOMEM);
@@ -1260,7 +1257,8 @@ void dma_buf_invalidate_mappings(struct dma_buf *dmabuf)
dma_resv_assert_held(dmabuf->resv);
list_for_each_entry(attach, &dmabuf->attachments, node)
- if (attach->importer_ops)
+ if (attach->importer_ops &&
+ attach->importer_ops->invalidate_mappings)
attach->importer_ops->invalidate_mappings(attach);
}
EXPORT_SYMBOL_NS_GPL(dma_buf_invalidate_mappings, "DMA_BUF");
diff --git a/drivers/infiniband/core/umem_dmabuf.c b/drivers/infiniband/core/umem_dmabuf.c
index d77a739cfe7a..256e34c15e6b 100644
--- a/drivers/infiniband/core/umem_dmabuf.c
+++ b/drivers/infiniband/core/umem_dmabuf.c
@@ -129,9 +129,6 @@ ib_umem_dmabuf_get_with_dma_device(struct ib_device *device,
if (check_add_overflow(offset, (unsigned long)size, &end))
return ret;
- if (unlikely(!ops || !ops->invalidate_mappings))
- return ret;
-
dmabuf = dma_buf_get(fd);
if (IS_ERR(dmabuf))
return ERR_CAST(dmabuf);
@@ -184,18 +181,8 @@ struct ib_umem_dmabuf *ib_umem_dmabuf_get(struct ib_device *device,
}
EXPORT_SYMBOL(ib_umem_dmabuf_get);
-static void
-ib_umem_dmabuf_unsupported_move_notify(struct dma_buf_attachment *attach)
-{
- struct ib_umem_dmabuf *umem_dmabuf = attach->importer_priv;
-
- ibdev_warn_ratelimited(umem_dmabuf->umem.ibdev,
- "Invalidate callback should not be called when memory is pinned\n");
-}
-
static struct dma_buf_attach_ops ib_umem_dmabuf_attach_pinned_ops = {
.allow_peer2peer = true,
- .invalidate_mappings = ib_umem_dmabuf_unsupported_move_notify,
};
struct ib_umem_dmabuf *
--
2.52.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v4 5/8] dma-buf: Add check function for revoke semantics
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (3 preceding siblings ...)
2026-01-21 12:59 ` [PATCH v4 4/8] dma-buf: Make .invalidate_mapping() truly optional Leon Romanovsky
@ 2026-01-21 12:59 ` Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 6/8] iommufd: Pin dma-buf importer " Leon Romanovsky
` (7 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 12:59 UTC (permalink / raw)
To: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Jason Gunthorpe, Leon Romanovsky, Kevin Tian, Joerg Roedel,
Will Deacon, Robin Murphy, Felix Kuehling, Alex Williamson,
Ankit Agrawal, Vivek Kasireddy
Cc: linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
From: Leon Romanovsky <leonro@nvidia.com>
A DMA-buf revoke mechanism that allows an exporter to explicitly
invalidate ("kill") a shared buffer after it has been handed out to
importers. Once revoked, all further CPU and device access is blocked, and
importers consistently observe failure.
This requires both importers and exporters to honor the revoke contract.
For importers, this means implementing .invalidate_mappings(). For exporters,
this means implementing the .pin() and/or .attach() callback, which check the
dma‑buf attachment for a valid revoke implementation.
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
drivers/dma-buf/dma-buf.c | 32 +++++++++++++++++++++++++++++++-
include/linux/dma-buf.h | 1 +
2 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index 1629312d364a..20fef3fb3bdf 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -1242,13 +1242,43 @@ void dma_buf_unmap_attachment_unlocked(struct dma_buf_attachment *attach,
}
EXPORT_SYMBOL_NS_GPL(dma_buf_unmap_attachment_unlocked, "DMA_BUF");
+/**
+ * dma_buf_attach_revocable - check if a DMA-buf importer implements
+ * revoke semantics.
+ * @attach: the DMA-buf attachment to check
+ *
+ * Returns true if the DMA-buf importer can handle invalidating it's mappings
+ * at any time, even after pinning a buffer.
+ */
+bool dma_buf_attach_revocable(struct dma_buf_attachment *attach)
+{
+ return attach->importer_ops &&
+ attach->importer_ops->invalidate_mappings;
+}
+EXPORT_SYMBOL_NS_GPL(dma_buf_attach_revocable, "DMA_BUF");
+
/**
* dma_buf_invalidate_mappings - notify attachments that DMA-buf is moving
*
* @dmabuf: [in] buffer which is moving
*
* Informs all attachments that they need to destroy and recreate all their
- * mappings.
+ * mappings. If the attachment is dynamic then the dynamic importer is expected
+ * to invalidate any caches it has of the mapping result and perform a new
+ * mapping request before allowing HW to do any further DMA.
+ *
+ * If the attachment is pinned then this informs the pinned importer that
+ * the underlying mapping is no longer available. Pinned importers may take
+ * this is as a permanent revocation so exporters should not trigger it
+ * lightly.
+ *
+ * For legacy pinned importers that cannot support invalidation this is a NOP.
+ * Drivers can call dma_buf_attach_revocable() to determine if the importer
+ * supports this.
+ *
+ * NOTE: The invalidation triggers asynchronous HW operation and the callers
+ * need to wait for this operation to complete by calling
+ * to dma_resv_wait_timeout().
*/
void dma_buf_invalidate_mappings(struct dma_buf *dmabuf)
{
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
index d5c3ce2b3aa4..2aa9c7d08abb 100644
--- a/include/linux/dma-buf.h
+++ b/include/linux/dma-buf.h
@@ -601,6 +601,7 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *,
void dma_buf_unmap_attachment(struct dma_buf_attachment *, struct sg_table *,
enum dma_data_direction);
void dma_buf_invalidate_mappings(struct dma_buf *dma_buf);
+bool dma_buf_attach_revocable(struct dma_buf_attachment *attach);
int dma_buf_begin_cpu_access(struct dma_buf *dma_buf,
enum dma_data_direction dir);
int dma_buf_end_cpu_access(struct dma_buf *dma_buf,
--
2.52.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v4 6/8] iommufd: Pin dma-buf importer for revoke semantics
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (4 preceding siblings ...)
2026-01-21 12:59 ` [PATCH v4 5/8] dma-buf: Add check function for revoke semantics Leon Romanovsky
@ 2026-01-21 12:59 ` Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 7/8] vfio: Wait for dma-buf invalidation to complete Leon Romanovsky
` (6 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 12:59 UTC (permalink / raw)
To: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Jason Gunthorpe, Leon Romanovsky, Kevin Tian, Joerg Roedel,
Will Deacon, Robin Murphy, Felix Kuehling, Alex Williamson,
Ankit Agrawal, Vivek Kasireddy
Cc: linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
From: Leon Romanovsky <leonro@nvidia.com>
IOMMUFD does not support page fault handling, and after a call to
.invalidate_mappings() all mappings become invalid. Ensure that
the IOMMUFD dma-buf importer is bound to a revoke‑aware dma-buf
exporter (for example, VFIO).
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
drivers/iommu/iommufd/pages.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/iommu/iommufd/pages.c b/drivers/iommu/iommufd/pages.c
index 76f900fa1687..a5eb2bc4ef48 100644
--- a/drivers/iommu/iommufd/pages.c
+++ b/drivers/iommu/iommufd/pages.c
@@ -1501,16 +1501,22 @@ static int iopt_map_dmabuf(struct iommufd_ctx *ictx, struct iopt_pages *pages,
mutex_unlock(&pages->mutex);
}
- rc = sym_vfio_pci_dma_buf_iommufd_map(attach, &pages->dmabuf.phys);
+ rc = dma_buf_pin(attach);
if (rc)
goto err_detach;
+ rc = sym_vfio_pci_dma_buf_iommufd_map(attach, &pages->dmabuf.phys);
+ if (rc)
+ goto err_unpin;
+
dma_resv_unlock(dmabuf->resv);
/* On success iopt_release_pages() will detach and put the dmabuf. */
pages->dmabuf.attach = attach;
return 0;
+err_unpin:
+ dma_buf_unpin(attach);
err_detach:
dma_resv_unlock(dmabuf->resv);
dma_buf_detach(dmabuf, attach);
@@ -1656,6 +1662,7 @@ void iopt_release_pages(struct kref *kref)
if (iopt_is_dmabuf(pages) && pages->dmabuf.attach) {
struct dma_buf *dmabuf = pages->dmabuf.attach->dmabuf;
+ dma_buf_unpin(pages->dmabuf.attach);
dma_buf_detach(dmabuf, pages->dmabuf.attach);
dma_buf_put(dmabuf);
WARN_ON(!list_empty(&pages->dmabuf.tracker));
--
2.52.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v4 7/8] vfio: Wait for dma-buf invalidation to complete
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (5 preceding siblings ...)
2026-01-21 12:59 ` [PATCH v4 6/8] iommufd: Pin dma-buf importer " Leon Romanovsky
@ 2026-01-21 12:59 ` Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics Leon Romanovsky
` (5 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 12:59 UTC (permalink / raw)
To: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Jason Gunthorpe, Leon Romanovsky, Kevin Tian, Joerg Roedel,
Will Deacon, Robin Murphy, Felix Kuehling, Alex Williamson,
Ankit Agrawal, Vivek Kasireddy
Cc: linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
From: Leon Romanovsky <leonro@nvidia.com>
dma-buf invalidation is performed asynchronously by hardware, so VFIO must
wait until all affected objects have been fully invalidated.
Fixes: 5d74781ebc86 ("vfio/pci: Add dma-buf export support for MMIO regions")
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
drivers/vfio/pci/vfio_pci_dmabuf.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci_dmabuf.c
index 362e3d149817..5fceefc40e27 100644
--- a/drivers/vfio/pci/vfio_pci_dmabuf.c
+++ b/drivers/vfio/pci/vfio_pci_dmabuf.c
@@ -321,6 +321,9 @@ void vfio_pci_dma_buf_move(struct vfio_pci_core_device *vdev, bool revoked)
dma_resv_lock(priv->dmabuf->resv, NULL);
priv->revoked = revoked;
dma_buf_invalidate_mappings(priv->dmabuf);
+ dma_resv_wait_timeout(priv->dmabuf->resv,
+ DMA_RESV_USAGE_BOOKKEEP, false,
+ MAX_SCHEDULE_TIMEOUT);
dma_resv_unlock(priv->dmabuf->resv);
}
fput(priv->dmabuf->file);
@@ -342,6 +345,9 @@ void vfio_pci_dma_buf_cleanup(struct vfio_pci_core_device *vdev)
priv->vdev = NULL;
priv->revoked = true;
dma_buf_invalidate_mappings(priv->dmabuf);
+ dma_resv_wait_timeout(priv->dmabuf->resv,
+ DMA_RESV_USAGE_BOOKKEEP, false,
+ MAX_SCHEDULE_TIMEOUT);
dma_resv_unlock(priv->dmabuf->resv);
vfio_device_put_registration(&vdev->vdev);
fput(priv->dmabuf->file);
--
2.52.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (6 preceding siblings ...)
2026-01-21 12:59 ` [PATCH v4 7/8] vfio: Wait for dma-buf invalidation to complete Leon Romanovsky
@ 2026-01-21 12:59 ` Leon Romanovsky
[not found] ` <20260121134712.GZ961572@ziepe.ca>
2026-01-21 13:06 ` ✗ CI.checkpatch: warning for dma-buf: Use revoke mechanism to invalidate shared buffers (rev2) Patchwork
` (4 subsequent siblings)
12 siblings, 1 reply; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 12:59 UTC (permalink / raw)
To: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Jason Gunthorpe, Leon Romanovsky, Kevin Tian, Joerg Roedel,
Will Deacon, Robin Murphy, Felix Kuehling, Alex Williamson,
Ankit Agrawal, Vivek Kasireddy
Cc: linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
From: Leon Romanovsky <leonro@nvidia.com>
Use the new dma_buf_attach_revocable() helper to restrict attachments to
importers that support mapping invalidation.
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
drivers/vfio/pci/vfio_pci_dmabuf.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci_dmabuf.c
index 5fceefc40e27..85056a5a3faf 100644
--- a/drivers/vfio/pci/vfio_pci_dmabuf.c
+++ b/drivers/vfio/pci/vfio_pci_dmabuf.c
@@ -31,6 +31,9 @@ static int vfio_pci_dma_buf_attach(struct dma_buf *dmabuf,
if (priv->revoked)
return -ENODEV;
+ if (!dma_buf_attach_revocable(attachment))
+ return -EOPNOTSUPP;
+
return 0;
}
--
2.52.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* ✗ CI.checkpatch: warning for dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (7 preceding siblings ...)
2026-01-21 12:59 ` [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics Leon Romanovsky
@ 2026-01-21 13:06 ` Patchwork
2026-01-21 13:07 ` ✓ CI.KUnit: success " Patchwork
` (3 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2026-01-21 13:06 UTC (permalink / raw)
To: Leon Romanovsky; +Cc: intel-xe
== Series Details ==
Series: dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
URL : https://patchwork.freedesktop.org/series/160360/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
1f57ba1afceae32108bd24770069f764d940a0e4
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit db8740607e9fad983ee78ad1b1889f69ee6aa96a
Author: Leon Romanovsky <leon@kernel.org>
Date: Wed Jan 21 14:59:16 2026 +0200
vfio: Validate dma-buf revocation semantics
Use the new dma_buf_attach_revocable() helper to restrict attachments to
importers that support mapping invalidation.
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
+ /mt/dim checkpatch f869ee12e212bfa9fe277e6586c2c02902ed950b drm-intel
9c38a404c8cc dma-buf: Rename .move_notify() callback to a clearer identifier
53d3f42f1443 dma-buf: Rename dma_buf_move_notify() to dma_buf_invalidate_mappings()
786155566295 dma-buf: Always build with DMABUF_MOVE_NOTIFY
10e31654fce5 dma-buf: Make .invalidate_mapping() truly optional
93fb0dca8875 dma-buf: Add check function for revoke semantics
-:16: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#16:
For importers, this means implementing .invalidate_mappings(). For exporters,
total: 0 errors, 1 warnings, 0 checks, 51 lines checked
4bc785872420 iommufd: Pin dma-buf importer for revoke semantics
2b8b34f75c2b vfio: Wait for dma-buf invalidation to complete
db8740607e9f vfio: Validate dma-buf revocation semantics
^ permalink raw reply [flat|nested] 20+ messages in thread
* ✓ CI.KUnit: success for dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (8 preceding siblings ...)
2026-01-21 13:06 ` ✗ CI.checkpatch: warning for dma-buf: Use revoke mechanism to invalidate shared buffers (rev2) Patchwork
@ 2026-01-21 13:07 ` Patchwork
2026-01-21 13:22 ` ✗ CI.checksparse: warning " Patchwork
` (2 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2026-01-21 13:07 UTC (permalink / raw)
To: Leon Romanovsky; +Cc: intel-xe
== Series Details ==
Series: dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
URL : https://patchwork.freedesktop.org/series/160360/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[13:06:09] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:06:14] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[13:06:45] Starting KUnit Kernel (1/1)...
[13:06:45] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:06:46] ================== guc_buf (11 subtests) ===================
[13:06:46] [PASSED] test_smallest
[13:06:46] [PASSED] test_largest
[13:06:46] [PASSED] test_granular
[13:06:46] [PASSED] test_unique
[13:06:46] [PASSED] test_overlap
[13:06:46] [PASSED] test_reusable
[13:06:46] [PASSED] test_too_big
[13:06:46] [PASSED] test_flush
[13:06:46] [PASSED] test_lookup
[13:06:46] [PASSED] test_data
[13:06:46] [PASSED] test_class
[13:06:46] ===================== [PASSED] guc_buf =====================
[13:06:46] =================== guc_dbm (7 subtests) ===================
[13:06:46] [PASSED] test_empty
[13:06:46] [PASSED] test_default
[13:06:46] ======================== test_size ========================
[13:06:46] [PASSED] 4
[13:06:46] [PASSED] 8
[13:06:46] [PASSED] 32
[13:06:46] [PASSED] 256
[13:06:46] ==================== [PASSED] test_size ====================
[13:06:46] ======================= test_reuse ========================
[13:06:46] [PASSED] 4
[13:06:46] [PASSED] 8
[13:06:46] [PASSED] 32
[13:06:46] [PASSED] 256
[13:06:46] =================== [PASSED] test_reuse ====================
[13:06:46] =================== test_range_overlap ====================
[13:06:46] [PASSED] 4
[13:06:46] [PASSED] 8
[13:06:46] [PASSED] 32
[13:06:46] [PASSED] 256
[13:06:46] =============== [PASSED] test_range_overlap ================
[13:06:46] =================== test_range_compact ====================
[13:06:46] [PASSED] 4
[13:06:46] [PASSED] 8
[13:06:46] [PASSED] 32
[13:06:46] [PASSED] 256
[13:06:46] =============== [PASSED] test_range_compact ================
[13:06:46] ==================== test_range_spare =====================
[13:06:46] [PASSED] 4
[13:06:46] [PASSED] 8
[13:06:46] [PASSED] 32
[13:06:46] [PASSED] 256
[13:06:46] ================ [PASSED] test_range_spare =================
[13:06:46] ===================== [PASSED] guc_dbm =====================
[13:06:46] =================== guc_idm (6 subtests) ===================
[13:06:46] [PASSED] bad_init
[13:06:46] [PASSED] no_init
[13:06:46] [PASSED] init_fini
[13:06:46] [PASSED] check_used
[13:06:46] [PASSED] check_quota
[13:06:46] [PASSED] check_all
[13:06:46] ===================== [PASSED] guc_idm =====================
[13:06:46] ================== no_relay (3 subtests) ===================
[13:06:46] [PASSED] xe_drops_guc2pf_if_not_ready
[13:06:46] [PASSED] xe_drops_guc2vf_if_not_ready
[13:06:46] [PASSED] xe_rejects_send_if_not_ready
[13:06:46] ==================== [PASSED] no_relay =====================
[13:06:46] ================== pf_relay (14 subtests) ==================
[13:06:46] [PASSED] pf_rejects_guc2pf_too_short
[13:06:46] [PASSED] pf_rejects_guc2pf_too_long
[13:06:46] [PASSED] pf_rejects_guc2pf_no_payload
[13:06:46] [PASSED] pf_fails_no_payload
[13:06:46] [PASSED] pf_fails_bad_origin
[13:06:46] [PASSED] pf_fails_bad_type
[13:06:46] [PASSED] pf_txn_reports_error
[13:06:46] [PASSED] pf_txn_sends_pf2guc
[13:06:46] [PASSED] pf_sends_pf2guc
[13:06:46] [SKIPPED] pf_loopback_nop
[13:06:46] [SKIPPED] pf_loopback_echo
[13:06:46] [SKIPPED] pf_loopback_fail
[13:06:46] [SKIPPED] pf_loopback_busy
[13:06:46] [SKIPPED] pf_loopback_retry
[13:06:46] ==================== [PASSED] pf_relay =====================
[13:06:46] ================== vf_relay (3 subtests) ===================
[13:06:46] [PASSED] vf_rejects_guc2vf_too_short
[13:06:46] [PASSED] vf_rejects_guc2vf_too_long
[13:06:46] [PASSED] vf_rejects_guc2vf_no_payload
[13:06:46] ==================== [PASSED] vf_relay =====================
[13:06:46] ================ pf_gt_config (6 subtests) =================
[13:06:46] [PASSED] fair_contexts_1vf
[13:06:46] [PASSED] fair_doorbells_1vf
[13:06:46] [PASSED] fair_ggtt_1vf
[13:06:46] ====================== fair_contexts ======================
[13:06:46] [PASSED] 1 VF
[13:06:46] [PASSED] 2 VFs
[13:06:46] [PASSED] 3 VFs
[13:06:46] [PASSED] 4 VFs
[13:06:46] [PASSED] 5 VFs
[13:06:46] [PASSED] 6 VFs
[13:06:46] [PASSED] 7 VFs
[13:06:46] [PASSED] 8 VFs
[13:06:46] [PASSED] 9 VFs
[13:06:46] [PASSED] 10 VFs
[13:06:46] [PASSED] 11 VFs
[13:06:46] [PASSED] 12 VFs
[13:06:46] [PASSED] 13 VFs
[13:06:46] [PASSED] 14 VFs
[13:06:46] [PASSED] 15 VFs
[13:06:46] [PASSED] 16 VFs
[13:06:46] [PASSED] 17 VFs
[13:06:46] [PASSED] 18 VFs
[13:06:46] [PASSED] 19 VFs
[13:06:46] [PASSED] 20 VFs
[13:06:46] [PASSED] 21 VFs
[13:06:46] [PASSED] 22 VFs
[13:06:46] [PASSED] 23 VFs
[13:06:46] [PASSED] 24 VFs
[13:06:46] [PASSED] 25 VFs
[13:06:46] [PASSED] 26 VFs
[13:06:46] [PASSED] 27 VFs
[13:06:46] [PASSED] 28 VFs
[13:06:46] [PASSED] 29 VFs
[13:06:46] [PASSED] 30 VFs
[13:06:46] [PASSED] 31 VFs
[13:06:46] [PASSED] 32 VFs
[13:06:46] [PASSED] 33 VFs
[13:06:46] [PASSED] 34 VFs
[13:06:46] [PASSED] 35 VFs
[13:06:46] [PASSED] 36 VFs
[13:06:46] [PASSED] 37 VFs
[13:06:46] [PASSED] 38 VFs
[13:06:46] [PASSED] 39 VFs
[13:06:46] [PASSED] 40 VFs
[13:06:46] [PASSED] 41 VFs
[13:06:46] [PASSED] 42 VFs
[13:06:46] [PASSED] 43 VFs
[13:06:46] [PASSED] 44 VFs
[13:06:46] [PASSED] 45 VFs
[13:06:46] [PASSED] 46 VFs
[13:06:46] [PASSED] 47 VFs
[13:06:46] [PASSED] 48 VFs
[13:06:46] [PASSED] 49 VFs
[13:06:46] [PASSED] 50 VFs
[13:06:46] [PASSED] 51 VFs
[13:06:46] [PASSED] 52 VFs
[13:06:46] [PASSED] 53 VFs
[13:06:46] [PASSED] 54 VFs
[13:06:46] [PASSED] 55 VFs
[13:06:46] [PASSED] 56 VFs
[13:06:46] [PASSED] 57 VFs
[13:06:46] [PASSED] 58 VFs
[13:06:46] [PASSED] 59 VFs
[13:06:46] [PASSED] 60 VFs
[13:06:46] [PASSED] 61 VFs
[13:06:46] [PASSED] 62 VFs
[13:06:46] [PASSED] 63 VFs
[13:06:46] ================== [PASSED] fair_contexts ==================
[13:06:46] ===================== fair_doorbells ======================
[13:06:46] [PASSED] 1 VF
[13:06:46] [PASSED] 2 VFs
[13:06:46] [PASSED] 3 VFs
[13:06:46] [PASSED] 4 VFs
[13:06:46] [PASSED] 5 VFs
[13:06:46] [PASSED] 6 VFs
[13:06:46] [PASSED] 7 VFs
[13:06:46] [PASSED] 8 VFs
[13:06:46] [PASSED] 9 VFs
[13:06:46] [PASSED] 10 VFs
[13:06:46] [PASSED] 11 VFs
[13:06:46] [PASSED] 12 VFs
[13:06:46] [PASSED] 13 VFs
[13:06:46] [PASSED] 14 VFs
[13:06:46] [PASSED] 15 VFs
[13:06:46] [PASSED] 16 VFs
[13:06:46] [PASSED] 17 VFs
[13:06:46] [PASSED] 18 VFs
[13:06:46] [PASSED] 19 VFs
[13:06:46] [PASSED] 20 VFs
[13:06:46] [PASSED] 21 VFs
[13:06:46] [PASSED] 22 VFs
[13:06:46] [PASSED] 23 VFs
[13:06:46] [PASSED] 24 VFs
[13:06:46] [PASSED] 25 VFs
[13:06:46] [PASSED] 26 VFs
[13:06:46] [PASSED] 27 VFs
[13:06:46] [PASSED] 28 VFs
[13:06:46] [PASSED] 29 VFs
[13:06:46] [PASSED] 30 VFs
[13:06:46] [PASSED] 31 VFs
[13:06:46] [PASSED] 32 VFs
[13:06:46] [PASSED] 33 VFs
[13:06:46] [PASSED] 34 VFs
[13:06:46] [PASSED] 35 VFs
[13:06:46] [PASSED] 36 VFs
[13:06:46] [PASSED] 37 VFs
[13:06:46] [PASSED] 38 VFs
[13:06:46] [PASSED] 39 VFs
[13:06:46] [PASSED] 40 VFs
[13:06:46] [PASSED] 41 VFs
[13:06:46] [PASSED] 42 VFs
[13:06:46] [PASSED] 43 VFs
[13:06:46] [PASSED] 44 VFs
[13:06:46] [PASSED] 45 VFs
[13:06:46] [PASSED] 46 VFs
[13:06:46] [PASSED] 47 VFs
[13:06:46] [PASSED] 48 VFs
[13:06:46] [PASSED] 49 VFs
[13:06:46] [PASSED] 50 VFs
[13:06:46] [PASSED] 51 VFs
[13:06:46] [PASSED] 52 VFs
[13:06:46] [PASSED] 53 VFs
[13:06:46] [PASSED] 54 VFs
[13:06:46] [PASSED] 55 VFs
[13:06:46] [PASSED] 56 VFs
[13:06:46] [PASSED] 57 VFs
[13:06:46] [PASSED] 58 VFs
[13:06:46] [PASSED] 59 VFs
[13:06:46] [PASSED] 60 VFs
[13:06:46] [PASSED] 61 VFs
[13:06:46] [PASSED] 62 VFs
[13:06:46] [PASSED] 63 VFs
[13:06:46] ================= [PASSED] fair_doorbells ==================
[13:06:46] ======================== fair_ggtt ========================
[13:06:46] [PASSED] 1 VF
[13:06:46] [PASSED] 2 VFs
[13:06:46] [PASSED] 3 VFs
[13:06:46] [PASSED] 4 VFs
[13:06:46] [PASSED] 5 VFs
[13:06:46] [PASSED] 6 VFs
[13:06:46] [PASSED] 7 VFs
[13:06:46] [PASSED] 8 VFs
[13:06:46] [PASSED] 9 VFs
[13:06:46] [PASSED] 10 VFs
[13:06:46] [PASSED] 11 VFs
[13:06:46] [PASSED] 12 VFs
[13:06:46] [PASSED] 13 VFs
[13:06:46] [PASSED] 14 VFs
[13:06:46] [PASSED] 15 VFs
[13:06:46] [PASSED] 16 VFs
[13:06:46] [PASSED] 17 VFs
[13:06:46] [PASSED] 18 VFs
[13:06:46] [PASSED] 19 VFs
[13:06:46] [PASSED] 20 VFs
[13:06:46] [PASSED] 21 VFs
[13:06:46] [PASSED] 22 VFs
[13:06:46] [PASSED] 23 VFs
[13:06:46] [PASSED] 24 VFs
[13:06:46] [PASSED] 25 VFs
[13:06:46] [PASSED] 26 VFs
[13:06:46] [PASSED] 27 VFs
[13:06:46] [PASSED] 28 VFs
[13:06:46] [PASSED] 29 VFs
[13:06:46] [PASSED] 30 VFs
[13:06:46] [PASSED] 31 VFs
[13:06:46] [PASSED] 32 VFs
[13:06:46] [PASSED] 33 VFs
[13:06:46] [PASSED] 34 VFs
[13:06:46] [PASSED] 35 VFs
[13:06:46] [PASSED] 36 VFs
[13:06:46] [PASSED] 37 VFs
[13:06:46] [PASSED] 38 VFs
[13:06:46] [PASSED] 39 VFs
[13:06:46] [PASSED] 40 VFs
[13:06:46] [PASSED] 41 VFs
[13:06:46] [PASSED] 42 VFs
[13:06:46] [PASSED] 43 VFs
[13:06:46] [PASSED] 44 VFs
[13:06:46] [PASSED] 45 VFs
[13:06:46] [PASSED] 46 VFs
[13:06:46] [PASSED] 47 VFs
[13:06:46] [PASSED] 48 VFs
[13:06:46] [PASSED] 49 VFs
[13:06:46] [PASSED] 50 VFs
[13:06:46] [PASSED] 51 VFs
[13:06:46] [PASSED] 52 VFs
[13:06:46] [PASSED] 53 VFs
[13:06:46] [PASSED] 54 VFs
[13:06:46] [PASSED] 55 VFs
[13:06:46] [PASSED] 56 VFs
[13:06:46] [PASSED] 57 VFs
[13:06:46] [PASSED] 58 VFs
[13:06:46] [PASSED] 59 VFs
[13:06:46] [PASSED] 60 VFs
[13:06:46] [PASSED] 61 VFs
[13:06:46] [PASSED] 62 VFs
[13:06:46] [PASSED] 63 VFs
[13:06:46] ==================== [PASSED] fair_ggtt ====================
[13:06:46] ================== [PASSED] pf_gt_config ===================
[13:06:46] ===================== lmtt (1 subtest) =====================
[13:06:46] ======================== test_ops =========================
[13:06:46] [PASSED] 2-level
[13:06:46] [PASSED] multi-level
[13:06:46] ==================== [PASSED] test_ops =====================
[13:06:46] ====================== [PASSED] lmtt =======================
[13:06:46] ================= pf_service (11 subtests) =================
[13:06:46] [PASSED] pf_negotiate_any
[13:06:46] [PASSED] pf_negotiate_base_match
[13:06:46] [PASSED] pf_negotiate_base_newer
[13:06:46] [PASSED] pf_negotiate_base_next
[13:06:46] [SKIPPED] pf_negotiate_base_older
[13:06:46] [PASSED] pf_negotiate_base_prev
[13:06:46] [PASSED] pf_negotiate_latest_match
[13:06:46] [PASSED] pf_negotiate_latest_newer
[13:06:46] [PASSED] pf_negotiate_latest_next
[13:06:46] [SKIPPED] pf_negotiate_latest_older
[13:06:46] [SKIPPED] pf_negotiate_latest_prev
[13:06:46] =================== [PASSED] pf_service ====================
[13:06:46] ================= xe_guc_g2g (2 subtests) ==================
[13:06:46] ============== xe_live_guc_g2g_kunit_default ==============
[13:06:46] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[13:06:46] ============== xe_live_guc_g2g_kunit_allmem ===============
[13:06:46] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[13:06:46] =================== [SKIPPED] xe_guc_g2g ===================
[13:06:46] =================== xe_mocs (2 subtests) ===================
[13:06:46] ================ xe_live_mocs_kernel_kunit ================
[13:06:46] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[13:06:46] ================ xe_live_mocs_reset_kunit =================
[13:06:46] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[13:06:46] ==================== [SKIPPED] xe_mocs =====================
[13:06:46] ================= xe_migrate (2 subtests) ==================
[13:06:46] ================= xe_migrate_sanity_kunit =================
[13:06:46] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[13:06:46] ================== xe_validate_ccs_kunit ==================
[13:06:46] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[13:06:46] =================== [SKIPPED] xe_migrate ===================
[13:06:46] ================== xe_dma_buf (1 subtest) ==================
[13:06:46] ==================== xe_dma_buf_kunit =====================
[13:06:46] ================ [SKIPPED] xe_dma_buf_kunit ================
[13:06:46] =================== [SKIPPED] xe_dma_buf ===================
[13:06:46] ================= xe_bo_shrink (1 subtest) =================
[13:06:46] =================== xe_bo_shrink_kunit ====================
[13:06:46] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[13:06:46] ================== [SKIPPED] xe_bo_shrink ==================
[13:06:46] ==================== xe_bo (2 subtests) ====================
[13:06:46] ================== xe_ccs_migrate_kunit ===================
[13:06:46] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[13:06:46] ==================== xe_bo_evict_kunit ====================
[13:06:46] =============== [SKIPPED] xe_bo_evict_kunit ================
[13:06:46] ===================== [SKIPPED] xe_bo ======================
[13:06:46] ==================== args (13 subtests) ====================
[13:06:46] [PASSED] count_args_test
[13:06:46] [PASSED] call_args_example
[13:06:46] [PASSED] call_args_test
[13:06:46] [PASSED] drop_first_arg_example
[13:06:46] [PASSED] drop_first_arg_test
[13:06:46] [PASSED] first_arg_example
[13:06:46] [PASSED] first_arg_test
[13:06:46] [PASSED] last_arg_example
[13:06:46] [PASSED] last_arg_test
[13:06:46] [PASSED] pick_arg_example
[13:06:46] [PASSED] if_args_example
[13:06:46] [PASSED] if_args_test
[13:06:46] [PASSED] sep_comma_example
[13:06:46] ====================== [PASSED] args =======================
[13:06:46] =================== xe_pci (3 subtests) ====================
[13:06:46] ==================== check_graphics_ip ====================
[13:06:46] [PASSED] 12.00 Xe_LP
[13:06:46] [PASSED] 12.10 Xe_LP+
[13:06:46] [PASSED] 12.55 Xe_HPG
[13:06:46] [PASSED] 12.60 Xe_HPC
[13:06:46] [PASSED] 12.70 Xe_LPG
[13:06:46] [PASSED] 12.71 Xe_LPG
[13:06:46] [PASSED] 12.74 Xe_LPG+
[13:06:46] [PASSED] 20.01 Xe2_HPG
[13:06:46] [PASSED] 20.02 Xe2_HPG
[13:06:46] [PASSED] 20.04 Xe2_LPG
[13:06:46] [PASSED] 30.00 Xe3_LPG
[13:06:46] [PASSED] 30.01 Xe3_LPG
[13:06:46] [PASSED] 30.03 Xe3_LPG
[13:06:46] [PASSED] 30.04 Xe3_LPG
[13:06:46] [PASSED] 30.05 Xe3_LPG
[13:06:46] [PASSED] 35.11 Xe3p_XPC
[13:06:46] ================ [PASSED] check_graphics_ip ================
[13:06:46] ===================== check_media_ip ======================
[13:06:46] [PASSED] 12.00 Xe_M
[13:06:46] [PASSED] 12.55 Xe_HPM
[13:06:46] [PASSED] 13.00 Xe_LPM+
[13:06:46] [PASSED] 13.01 Xe2_HPM
[13:06:46] [PASSED] 20.00 Xe2_LPM
[13:06:46] [PASSED] 30.00 Xe3_LPM
[13:06:46] [PASSED] 30.02 Xe3_LPM
[13:06:46] [PASSED] 35.00 Xe3p_LPM
[13:06:46] [PASSED] 35.03 Xe3p_HPM
[13:06:46] ================= [PASSED] check_media_ip ==================
[13:06:46] =================== check_platform_desc ===================
[13:06:46] [PASSED] 0x9A60 (TIGERLAKE)
[13:06:46] [PASSED] 0x9A68 (TIGERLAKE)
[13:06:46] [PASSED] 0x9A70 (TIGERLAKE)
[13:06:46] [PASSED] 0x9A40 (TIGERLAKE)
[13:06:46] [PASSED] 0x9A49 (TIGERLAKE)
[13:06:46] [PASSED] 0x9A59 (TIGERLAKE)
[13:06:46] [PASSED] 0x9A78 (TIGERLAKE)
[13:06:46] [PASSED] 0x9AC0 (TIGERLAKE)
[13:06:46] [PASSED] 0x9AC9 (TIGERLAKE)
[13:06:46] [PASSED] 0x9AD9 (TIGERLAKE)
[13:06:46] [PASSED] 0x9AF8 (TIGERLAKE)
[13:06:46] [PASSED] 0x4C80 (ROCKETLAKE)
[13:06:46] [PASSED] 0x4C8A (ROCKETLAKE)
[13:06:46] [PASSED] 0x4C8B (ROCKETLAKE)
[13:06:46] [PASSED] 0x4C8C (ROCKETLAKE)
[13:06:46] [PASSED] 0x4C90 (ROCKETLAKE)
[13:06:46] [PASSED] 0x4C9A (ROCKETLAKE)
[13:06:46] [PASSED] 0x4680 (ALDERLAKE_S)
[13:06:46] [PASSED] 0x4682 (ALDERLAKE_S)
[13:06:46] [PASSED] 0x4688 (ALDERLAKE_S)
[13:06:46] [PASSED] 0x468A (ALDERLAKE_S)
[13:06:46] [PASSED] 0x468B (ALDERLAKE_S)
[13:06:46] [PASSED] 0x4690 (ALDERLAKE_S)
[13:06:46] [PASSED] 0x4692 (ALDERLAKE_S)
[13:06:46] [PASSED] 0x4693 (ALDERLAKE_S)
[13:06:46] [PASSED] 0x46A0 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46A1 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46A2 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46A3 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46A6 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46A8 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46AA (ALDERLAKE_P)
[13:06:46] [PASSED] 0x462A (ALDERLAKE_P)
[13:06:46] [PASSED] 0x4626 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x4628 (ALDERLAKE_P)
stty: 'standard input': Inappropriate ioctl for device
[13:06:46] [PASSED] 0x46B0 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46B1 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46B2 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46B3 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46C0 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46C1 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46C2 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46C3 (ALDERLAKE_P)
[13:06:46] [PASSED] 0x46D0 (ALDERLAKE_N)
[13:06:46] [PASSED] 0x46D1 (ALDERLAKE_N)
[13:06:46] [PASSED] 0x46D2 (ALDERLAKE_N)
[13:06:46] [PASSED] 0x46D3 (ALDERLAKE_N)
[13:06:46] [PASSED] 0x46D4 (ALDERLAKE_N)
[13:06:46] [PASSED] 0xA721 (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA7A1 (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA7A9 (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA7AC (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA7AD (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA720 (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA7A0 (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA7A8 (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA7AA (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA7AB (ALDERLAKE_P)
[13:06:46] [PASSED] 0xA780 (ALDERLAKE_S)
[13:06:46] [PASSED] 0xA781 (ALDERLAKE_S)
[13:06:46] [PASSED] 0xA782 (ALDERLAKE_S)
[13:06:46] [PASSED] 0xA783 (ALDERLAKE_S)
[13:06:46] [PASSED] 0xA788 (ALDERLAKE_S)
[13:06:46] [PASSED] 0xA789 (ALDERLAKE_S)
[13:06:46] [PASSED] 0xA78A (ALDERLAKE_S)
[13:06:46] [PASSED] 0xA78B (ALDERLAKE_S)
[13:06:46] [PASSED] 0x4905 (DG1)
[13:06:46] [PASSED] 0x4906 (DG1)
[13:06:46] [PASSED] 0x4907 (DG1)
[13:06:46] [PASSED] 0x4908 (DG1)
[13:06:46] [PASSED] 0x4909 (DG1)
[13:06:46] [PASSED] 0x56C0 (DG2)
[13:06:46] [PASSED] 0x56C2 (DG2)
[13:06:46] [PASSED] 0x56C1 (DG2)
[13:06:46] [PASSED] 0x7D51 (METEORLAKE)
[13:06:46] [PASSED] 0x7DD1 (METEORLAKE)
[13:06:46] [PASSED] 0x7D41 (METEORLAKE)
[13:06:46] [PASSED] 0x7D67 (METEORLAKE)
[13:06:46] [PASSED] 0xB640 (METEORLAKE)
[13:06:46] [PASSED] 0x56A0 (DG2)
[13:06:46] [PASSED] 0x56A1 (DG2)
[13:06:46] [PASSED] 0x56A2 (DG2)
[13:06:46] [PASSED] 0x56BE (DG2)
[13:06:46] [PASSED] 0x56BF (DG2)
[13:06:46] [PASSED] 0x5690 (DG2)
[13:06:46] [PASSED] 0x5691 (DG2)
[13:06:46] [PASSED] 0x5692 (DG2)
[13:06:46] [PASSED] 0x56A5 (DG2)
[13:06:46] [PASSED] 0x56A6 (DG2)
[13:06:46] [PASSED] 0x56B0 (DG2)
[13:06:46] [PASSED] 0x56B1 (DG2)
[13:06:46] [PASSED] 0x56BA (DG2)
[13:06:46] [PASSED] 0x56BB (DG2)
[13:06:46] [PASSED] 0x56BC (DG2)
[13:06:46] [PASSED] 0x56BD (DG2)
[13:06:46] [PASSED] 0x5693 (DG2)
[13:06:46] [PASSED] 0x5694 (DG2)
[13:06:46] [PASSED] 0x5695 (DG2)
[13:06:46] [PASSED] 0x56A3 (DG2)
[13:06:46] [PASSED] 0x56A4 (DG2)
[13:06:46] [PASSED] 0x56B2 (DG2)
[13:06:46] [PASSED] 0x56B3 (DG2)
[13:06:46] [PASSED] 0x5696 (DG2)
[13:06:46] [PASSED] 0x5697 (DG2)
[13:06:46] [PASSED] 0xB69 (PVC)
[13:06:46] [PASSED] 0xB6E (PVC)
[13:06:46] [PASSED] 0xBD4 (PVC)
[13:06:46] [PASSED] 0xBD5 (PVC)
[13:06:46] [PASSED] 0xBD6 (PVC)
[13:06:46] [PASSED] 0xBD7 (PVC)
[13:06:46] [PASSED] 0xBD8 (PVC)
[13:06:46] [PASSED] 0xBD9 (PVC)
[13:06:46] [PASSED] 0xBDA (PVC)
[13:06:46] [PASSED] 0xBDB (PVC)
[13:06:46] [PASSED] 0xBE0 (PVC)
[13:06:46] [PASSED] 0xBE1 (PVC)
[13:06:46] [PASSED] 0xBE5 (PVC)
[13:06:46] [PASSED] 0x7D40 (METEORLAKE)
[13:06:46] [PASSED] 0x7D45 (METEORLAKE)
[13:06:46] [PASSED] 0x7D55 (METEORLAKE)
[13:06:46] [PASSED] 0x7D60 (METEORLAKE)
[13:06:46] [PASSED] 0x7DD5 (METEORLAKE)
[13:06:46] [PASSED] 0x6420 (LUNARLAKE)
[13:06:46] [PASSED] 0x64A0 (LUNARLAKE)
[13:06:46] [PASSED] 0x64B0 (LUNARLAKE)
[13:06:46] [PASSED] 0xE202 (BATTLEMAGE)
[13:06:46] [PASSED] 0xE209 (BATTLEMAGE)
[13:06:46] [PASSED] 0xE20B (BATTLEMAGE)
[13:06:46] [PASSED] 0xE20C (BATTLEMAGE)
[13:06:46] [PASSED] 0xE20D (BATTLEMAGE)
[13:06:46] [PASSED] 0xE210 (BATTLEMAGE)
[13:06:46] [PASSED] 0xE211 (BATTLEMAGE)
[13:06:46] [PASSED] 0xE212 (BATTLEMAGE)
[13:06:46] [PASSED] 0xE216 (BATTLEMAGE)
[13:06:46] [PASSED] 0xE220 (BATTLEMAGE)
[13:06:46] [PASSED] 0xE221 (BATTLEMAGE)
[13:06:46] [PASSED] 0xE222 (BATTLEMAGE)
[13:06:46] [PASSED] 0xE223 (BATTLEMAGE)
[13:06:46] [PASSED] 0xB080 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB081 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB082 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB083 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB084 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB085 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB086 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB087 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB08F (PANTHERLAKE)
[13:06:46] [PASSED] 0xB090 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB0A0 (PANTHERLAKE)
[13:06:46] [PASSED] 0xB0B0 (PANTHERLAKE)
[13:06:46] [PASSED] 0xFD80 (PANTHERLAKE)
[13:06:46] [PASSED] 0xFD81 (PANTHERLAKE)
[13:06:46] [PASSED] 0xD740 (NOVALAKE_S)
[13:06:46] [PASSED] 0xD741 (NOVALAKE_S)
[13:06:46] [PASSED] 0xD742 (NOVALAKE_S)
[13:06:46] [PASSED] 0xD743 (NOVALAKE_S)
[13:06:46] [PASSED] 0xD744 (NOVALAKE_S)
[13:06:46] [PASSED] 0xD745 (NOVALAKE_S)
[13:06:46] [PASSED] 0x674C (CRESCENTISLAND)
[13:06:46] =============== [PASSED] check_platform_desc ===============
[13:06:46] ===================== [PASSED] xe_pci ======================
[13:06:46] =================== xe_rtp (2 subtests) ====================
[13:06:46] =============== xe_rtp_process_to_sr_tests ================
[13:06:46] [PASSED] coalesce-same-reg
[13:06:46] [PASSED] no-match-no-add
[13:06:46] [PASSED] match-or
[13:06:46] [PASSED] match-or-xfail
[13:06:46] [PASSED] no-match-no-add-multiple-rules
[13:06:46] [PASSED] two-regs-two-entries
[13:06:46] [PASSED] clr-one-set-other
[13:06:46] [PASSED] set-field
[13:06:46] [PASSED] conflict-duplicate
[13:06:46] [PASSED] conflict-not-disjoint
[13:06:46] [PASSED] conflict-reg-type
[13:06:46] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[13:06:46] ================== xe_rtp_process_tests ===================
[13:06:46] [PASSED] active1
[13:06:46] [PASSED] active2
[13:06:46] [PASSED] active-inactive
[13:06:46] [PASSED] inactive-active
[13:06:46] [PASSED] inactive-1st_or_active-inactive
[13:06:46] [PASSED] inactive-2nd_or_active-inactive
[13:06:46] [PASSED] inactive-last_or_active-inactive
[13:06:46] [PASSED] inactive-no_or_active-inactive
[13:06:46] ============== [PASSED] xe_rtp_process_tests ===============
[13:06:46] ===================== [PASSED] xe_rtp ======================
[13:06:46] ==================== xe_wa (1 subtest) =====================
[13:06:46] ======================== xe_wa_gt =========================
[13:06:46] [PASSED] TIGERLAKE B0
[13:06:46] [PASSED] DG1 A0
[13:06:46] [PASSED] DG1 B0
[13:06:46] [PASSED] ALDERLAKE_S A0
[13:06:46] [PASSED] ALDERLAKE_S B0
[13:06:46] [PASSED] ALDERLAKE_S C0
[13:06:46] [PASSED] ALDERLAKE_S D0
[13:06:46] [PASSED] ALDERLAKE_P A0
[13:06:46] [PASSED] ALDERLAKE_P B0
[13:06:46] [PASSED] ALDERLAKE_P C0
[13:06:46] [PASSED] ALDERLAKE_S RPLS D0
[13:06:46] [PASSED] ALDERLAKE_P RPLU E0
[13:06:46] [PASSED] DG2 G10 C0
[13:06:46] [PASSED] DG2 G11 B1
[13:06:46] [PASSED] DG2 G12 A1
[13:06:46] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[13:06:46] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[13:06:46] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[13:06:46] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[13:06:46] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[13:06:46] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[13:06:46] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[13:06:46] ==================== [PASSED] xe_wa_gt =====================
[13:06:46] ====================== [PASSED] xe_wa ======================
[13:06:46] ============================================================
[13:06:46] Testing complete. Ran 512 tests: passed: 494, skipped: 18
[13:06:46] Elapsed time: 36.455s total, 4.208s configuring, 31.774s building, 0.459s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[13:06:46] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:06:48] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[13:07:13] Starting KUnit Kernel (1/1)...
[13:07:13] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:07:13] ============ drm_test_pick_cmdline (2 subtests) ============
[13:07:13] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[13:07:13] =============== drm_test_pick_cmdline_named ===============
[13:07:13] [PASSED] NTSC
[13:07:13] [PASSED] NTSC-J
[13:07:13] [PASSED] PAL
[13:07:13] [PASSED] PAL-M
[13:07:13] =========== [PASSED] drm_test_pick_cmdline_named ===========
[13:07:13] ============== [PASSED] drm_test_pick_cmdline ==============
[13:07:13] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[13:07:13] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[13:07:13] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[13:07:13] =========== drm_validate_clone_mode (2 subtests) ===========
[13:07:13] ============== drm_test_check_in_clone_mode ===============
[13:07:13] [PASSED] in_clone_mode
[13:07:13] [PASSED] not_in_clone_mode
[13:07:13] ========== [PASSED] drm_test_check_in_clone_mode ===========
[13:07:13] =============== drm_test_check_valid_clones ===============
[13:07:13] [PASSED] not_in_clone_mode
[13:07:13] [PASSED] valid_clone
[13:07:13] [PASSED] invalid_clone
[13:07:13] =========== [PASSED] drm_test_check_valid_clones ===========
[13:07:13] ============= [PASSED] drm_validate_clone_mode =============
[13:07:13] ============= drm_validate_modeset (1 subtest) =============
[13:07:13] [PASSED] drm_test_check_connector_changed_modeset
[13:07:13] ============== [PASSED] drm_validate_modeset ===============
[13:07:13] ====== drm_test_bridge_get_current_state (2 subtests) ======
[13:07:13] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[13:07:13] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[13:07:13] ======== [PASSED] drm_test_bridge_get_current_state ========
[13:07:13] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[13:07:13] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[13:07:13] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[13:07:13] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[13:07:13] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[13:07:13] ============== drm_bridge_alloc (2 subtests) ===============
[13:07:13] [PASSED] drm_test_drm_bridge_alloc_basic
[13:07:13] [PASSED] drm_test_drm_bridge_alloc_get_put
[13:07:13] ================ [PASSED] drm_bridge_alloc =================
[13:07:13] ================== drm_buddy (9 subtests) ==================
[13:07:13] [PASSED] drm_test_buddy_alloc_limit
[13:07:13] [PASSED] drm_test_buddy_alloc_optimistic
[13:07:13] [PASSED] drm_test_buddy_alloc_pessimistic
[13:07:13] [PASSED] drm_test_buddy_alloc_pathological
[13:07:13] [PASSED] drm_test_buddy_alloc_contiguous
[13:07:13] [PASSED] drm_test_buddy_alloc_clear
[13:07:13] [PASSED] drm_test_buddy_alloc_range_bias
[13:07:13] [PASSED] drm_test_buddy_fragmentation_performance
[13:07:13] [PASSED] drm_test_buddy_alloc_exceeds_max_order
[13:07:13] ==================== [PASSED] drm_buddy ====================
[13:07:13] ============= drm_cmdline_parser (40 subtests) =============
[13:07:13] [PASSED] drm_test_cmdline_force_d_only
[13:07:13] [PASSED] drm_test_cmdline_force_D_only_dvi
[13:07:13] [PASSED] drm_test_cmdline_force_D_only_hdmi
[13:07:13] [PASSED] drm_test_cmdline_force_D_only_not_digital
[13:07:13] [PASSED] drm_test_cmdline_force_e_only
[13:07:13] [PASSED] drm_test_cmdline_res
[13:07:13] [PASSED] drm_test_cmdline_res_vesa
[13:07:13] [PASSED] drm_test_cmdline_res_vesa_rblank
[13:07:13] [PASSED] drm_test_cmdline_res_rblank
[13:07:13] [PASSED] drm_test_cmdline_res_bpp
[13:07:13] [PASSED] drm_test_cmdline_res_refresh
[13:07:13] [PASSED] drm_test_cmdline_res_bpp_refresh
[13:07:13] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[13:07:13] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[13:07:13] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[13:07:13] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[13:07:13] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[13:07:13] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[13:07:13] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[13:07:13] [PASSED] drm_test_cmdline_res_margins_force_on
[13:07:13] [PASSED] drm_test_cmdline_res_vesa_margins
[13:07:13] [PASSED] drm_test_cmdline_name
[13:07:13] [PASSED] drm_test_cmdline_name_bpp
[13:07:13] [PASSED] drm_test_cmdline_name_option
[13:07:13] [PASSED] drm_test_cmdline_name_bpp_option
[13:07:13] [PASSED] drm_test_cmdline_rotate_0
[13:07:13] [PASSED] drm_test_cmdline_rotate_90
[13:07:13] [PASSED] drm_test_cmdline_rotate_180
[13:07:13] [PASSED] drm_test_cmdline_rotate_270
[13:07:13] [PASSED] drm_test_cmdline_hmirror
[13:07:13] [PASSED] drm_test_cmdline_vmirror
[13:07:13] [PASSED] drm_test_cmdline_margin_options
[13:07:13] [PASSED] drm_test_cmdline_multiple_options
[13:07:13] [PASSED] drm_test_cmdline_bpp_extra_and_option
[13:07:13] [PASSED] drm_test_cmdline_extra_and_option
[13:07:13] [PASSED] drm_test_cmdline_freestanding_options
[13:07:13] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[13:07:13] [PASSED] drm_test_cmdline_panel_orientation
[13:07:13] ================ drm_test_cmdline_invalid =================
[13:07:13] [PASSED] margin_only
[13:07:13] [PASSED] interlace_only
[13:07:13] [PASSED] res_missing_x
[13:07:13] [PASSED] res_missing_y
[13:07:13] [PASSED] res_bad_y
[13:07:13] [PASSED] res_missing_y_bpp
[13:07:13] [PASSED] res_bad_bpp
[13:07:13] [PASSED] res_bad_refresh
[13:07:13] [PASSED] res_bpp_refresh_force_on_off
[13:07:13] [PASSED] res_invalid_mode
[13:07:13] [PASSED] res_bpp_wrong_place_mode
[13:07:13] [PASSED] name_bpp_refresh
[13:07:13] [PASSED] name_refresh
[13:07:13] [PASSED] name_refresh_wrong_mode
[13:07:13] [PASSED] name_refresh_invalid_mode
[13:07:13] [PASSED] rotate_multiple
[13:07:13] [PASSED] rotate_invalid_val
[13:07:13] [PASSED] rotate_truncated
[13:07:13] [PASSED] invalid_option
[13:07:13] [PASSED] invalid_tv_option
[13:07:13] [PASSED] truncated_tv_option
[13:07:13] ============ [PASSED] drm_test_cmdline_invalid =============
[13:07:13] =============== drm_test_cmdline_tv_options ===============
[13:07:13] [PASSED] NTSC
[13:07:13] [PASSED] NTSC_443
[13:07:13] [PASSED] NTSC_J
[13:07:13] [PASSED] PAL
[13:07:13] [PASSED] PAL_M
[13:07:13] [PASSED] PAL_N
[13:07:13] [PASSED] SECAM
[13:07:13] [PASSED] MONO_525
[13:07:13] [PASSED] MONO_625
[13:07:13] =========== [PASSED] drm_test_cmdline_tv_options ===========
[13:07:13] =============== [PASSED] drm_cmdline_parser ================
[13:07:13] ========== drmm_connector_hdmi_init (20 subtests) ==========
[13:07:13] [PASSED] drm_test_connector_hdmi_init_valid
[13:07:13] [PASSED] drm_test_connector_hdmi_init_bpc_8
[13:07:13] [PASSED] drm_test_connector_hdmi_init_bpc_10
[13:07:13] [PASSED] drm_test_connector_hdmi_init_bpc_12
[13:07:13] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[13:07:13] [PASSED] drm_test_connector_hdmi_init_bpc_null
[13:07:13] [PASSED] drm_test_connector_hdmi_init_formats_empty
[13:07:13] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[13:07:13] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[13:07:13] [PASSED] supported_formats=0x9 yuv420_allowed=1
[13:07:13] [PASSED] supported_formats=0x9 yuv420_allowed=0
[13:07:13] [PASSED] supported_formats=0x3 yuv420_allowed=1
[13:07:13] [PASSED] supported_formats=0x3 yuv420_allowed=0
[13:07:13] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[13:07:13] [PASSED] drm_test_connector_hdmi_init_null_ddc
[13:07:13] [PASSED] drm_test_connector_hdmi_init_null_product
[13:07:13] [PASSED] drm_test_connector_hdmi_init_null_vendor
[13:07:13] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[13:07:13] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[13:07:13] [PASSED] drm_test_connector_hdmi_init_product_valid
[13:07:13] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[13:07:13] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[13:07:13] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[13:07:13] ========= drm_test_connector_hdmi_init_type_valid =========
[13:07:13] [PASSED] HDMI-A
[13:07:13] [PASSED] HDMI-B
[13:07:13] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[13:07:13] ======== drm_test_connector_hdmi_init_type_invalid ========
[13:07:13] [PASSED] Unknown
[13:07:13] [PASSED] VGA
[13:07:13] [PASSED] DVI-I
[13:07:13] [PASSED] DVI-D
[13:07:13] [PASSED] DVI-A
[13:07:13] [PASSED] Composite
[13:07:13] [PASSED] SVIDEO
[13:07:13] [PASSED] LVDS
[13:07:13] [PASSED] Component
[13:07:13] [PASSED] DIN
[13:07:13] [PASSED] DP
[13:07:13] [PASSED] TV
[13:07:13] [PASSED] eDP
[13:07:13] [PASSED] Virtual
[13:07:13] [PASSED] DSI
[13:07:13] [PASSED] DPI
[13:07:13] [PASSED] Writeback
[13:07:13] [PASSED] SPI
[13:07:13] [PASSED] USB
[13:07:13] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[13:07:13] ============ [PASSED] drmm_connector_hdmi_init =============
[13:07:13] ============= drmm_connector_init (3 subtests) =============
[13:07:13] [PASSED] drm_test_drmm_connector_init
[13:07:13] [PASSED] drm_test_drmm_connector_init_null_ddc
[13:07:13] ========= drm_test_drmm_connector_init_type_valid =========
[13:07:13] [PASSED] Unknown
[13:07:13] [PASSED] VGA
[13:07:13] [PASSED] DVI-I
[13:07:13] [PASSED] DVI-D
[13:07:13] [PASSED] DVI-A
[13:07:13] [PASSED] Composite
[13:07:13] [PASSED] SVIDEO
[13:07:13] [PASSED] LVDS
[13:07:13] [PASSED] Component
[13:07:13] [PASSED] DIN
[13:07:13] [PASSED] DP
[13:07:13] [PASSED] HDMI-A
[13:07:13] [PASSED] HDMI-B
[13:07:13] [PASSED] TV
[13:07:13] [PASSED] eDP
[13:07:13] [PASSED] Virtual
[13:07:13] [PASSED] DSI
[13:07:13] [PASSED] DPI
[13:07:13] [PASSED] Writeback
[13:07:13] [PASSED] SPI
[13:07:13] [PASSED] USB
[13:07:13] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[13:07:13] =============== [PASSED] drmm_connector_init ===============
[13:07:13] ========= drm_connector_dynamic_init (6 subtests) ==========
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_init
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_init_properties
[13:07:13] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[13:07:13] [PASSED] Unknown
[13:07:13] [PASSED] VGA
[13:07:13] [PASSED] DVI-I
[13:07:13] [PASSED] DVI-D
[13:07:13] [PASSED] DVI-A
[13:07:13] [PASSED] Composite
[13:07:13] [PASSED] SVIDEO
[13:07:13] [PASSED] LVDS
[13:07:13] [PASSED] Component
[13:07:13] [PASSED] DIN
[13:07:13] [PASSED] DP
[13:07:13] [PASSED] HDMI-A
[13:07:13] [PASSED] HDMI-B
[13:07:13] [PASSED] TV
[13:07:13] [PASSED] eDP
[13:07:13] [PASSED] Virtual
[13:07:13] [PASSED] DSI
[13:07:13] [PASSED] DPI
[13:07:13] [PASSED] Writeback
[13:07:13] [PASSED] SPI
[13:07:13] [PASSED] USB
[13:07:13] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[13:07:13] ======== drm_test_drm_connector_dynamic_init_name =========
[13:07:13] [PASSED] Unknown
[13:07:13] [PASSED] VGA
[13:07:13] [PASSED] DVI-I
[13:07:13] [PASSED] DVI-D
[13:07:13] [PASSED] DVI-A
[13:07:13] [PASSED] Composite
[13:07:13] [PASSED] SVIDEO
[13:07:13] [PASSED] LVDS
[13:07:13] [PASSED] Component
[13:07:13] [PASSED] DIN
[13:07:13] [PASSED] DP
[13:07:13] [PASSED] HDMI-A
[13:07:13] [PASSED] HDMI-B
[13:07:13] [PASSED] TV
[13:07:13] [PASSED] eDP
[13:07:13] [PASSED] Virtual
[13:07:13] [PASSED] DSI
[13:07:13] [PASSED] DPI
[13:07:13] [PASSED] Writeback
[13:07:13] [PASSED] SPI
[13:07:13] [PASSED] USB
[13:07:13] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[13:07:13] =========== [PASSED] drm_connector_dynamic_init ============
[13:07:13] ==== drm_connector_dynamic_register_early (4 subtests) =====
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[13:07:13] ====== [PASSED] drm_connector_dynamic_register_early =======
[13:07:13] ======= drm_connector_dynamic_register (7 subtests) ========
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[13:07:13] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[13:07:13] ========= [PASSED] drm_connector_dynamic_register ==========
[13:07:13] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[13:07:13] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[13:07:13] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[13:07:13] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[13:07:13] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[13:07:13] ========== drm_test_get_tv_mode_from_name_valid ===========
[13:07:13] [PASSED] NTSC
[13:07:13] [PASSED] NTSC-443
[13:07:13] [PASSED] NTSC-J
[13:07:13] [PASSED] PAL
[13:07:13] [PASSED] PAL-M
[13:07:13] [PASSED] PAL-N
[13:07:13] [PASSED] SECAM
[13:07:13] [PASSED] Mono
[13:07:13] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[13:07:13] [PASSED] drm_test_get_tv_mode_from_name_truncated
[13:07:13] ============ [PASSED] drm_get_tv_mode_from_name ============
[13:07:13] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[13:07:13] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[13:07:13] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[13:07:13] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[13:07:13] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[13:07:13] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[13:07:13] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[13:07:13] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[13:07:13] [PASSED] VIC 96
[13:07:13] [PASSED] VIC 97
[13:07:13] [PASSED] VIC 101
[13:07:13] [PASSED] VIC 102
[13:07:13] [PASSED] VIC 106
[13:07:13] [PASSED] VIC 107
[13:07:13] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[13:07:13] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[13:07:13] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[13:07:13] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[13:07:13] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[13:07:13] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[13:07:13] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[13:07:13] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[13:07:13] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[13:07:13] [PASSED] Automatic
[13:07:13] [PASSED] Full
[13:07:13] [PASSED] Limited 16:235
[13:07:13] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[13:07:13] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[13:07:13] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[13:07:13] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[13:07:13] === drm_test_drm_hdmi_connector_get_output_format_name ====
[13:07:13] [PASSED] RGB
[13:07:13] [PASSED] YUV 4:2:0
[13:07:13] [PASSED] YUV 4:2:2
[13:07:13] [PASSED] YUV 4:4:4
[13:07:13] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[13:07:13] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[13:07:13] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[13:07:13] ============= drm_damage_helper (21 subtests) ==============
[13:07:13] [PASSED] drm_test_damage_iter_no_damage
[13:07:13] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[13:07:13] [PASSED] drm_test_damage_iter_no_damage_src_moved
[13:07:13] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[13:07:13] [PASSED] drm_test_damage_iter_no_damage_not_visible
[13:07:13] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[13:07:13] [PASSED] drm_test_damage_iter_no_damage_no_fb
[13:07:13] [PASSED] drm_test_damage_iter_simple_damage
[13:07:13] [PASSED] drm_test_damage_iter_single_damage
[13:07:13] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[13:07:13] [PASSED] drm_test_damage_iter_single_damage_outside_src
[13:07:13] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[13:07:13] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[13:07:13] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[13:07:13] [PASSED] drm_test_damage_iter_single_damage_src_moved
[13:07:13] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[13:07:13] [PASSED] drm_test_damage_iter_damage
[13:07:13] [PASSED] drm_test_damage_iter_damage_one_intersect
[13:07:13] [PASSED] drm_test_damage_iter_damage_one_outside
[13:07:13] [PASSED] drm_test_damage_iter_damage_src_moved
[13:07:13] [PASSED] drm_test_damage_iter_damage_not_visible
[13:07:13] ================ [PASSED] drm_damage_helper ================
[13:07:13] ============== drm_dp_mst_helper (3 subtests) ==============
[13:07:13] ============== drm_test_dp_mst_calc_pbn_mode ==============
[13:07:13] [PASSED] Clock 154000 BPP 30 DSC disabled
[13:07:13] [PASSED] Clock 234000 BPP 30 DSC disabled
[13:07:13] [PASSED] Clock 297000 BPP 24 DSC disabled
[13:07:13] [PASSED] Clock 332880 BPP 24 DSC enabled
[13:07:13] [PASSED] Clock 324540 BPP 24 DSC enabled
[13:07:13] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[13:07:13] ============== drm_test_dp_mst_calc_pbn_div ===============
[13:07:13] [PASSED] Link rate 2000000 lane count 4
[13:07:13] [PASSED] Link rate 2000000 lane count 2
[13:07:13] [PASSED] Link rate 2000000 lane count 1
[13:07:13] [PASSED] Link rate 1350000 lane count 4
[13:07:13] [PASSED] Link rate 1350000 lane count 2
[13:07:13] [PASSED] Link rate 1350000 lane count 1
[13:07:13] [PASSED] Link rate 1000000 lane count 4
[13:07:13] [PASSED] Link rate 1000000 lane count 2
[13:07:13] [PASSED] Link rate 1000000 lane count 1
[13:07:13] [PASSED] Link rate 810000 lane count 4
[13:07:13] [PASSED] Link rate 810000 lane count 2
[13:07:13] [PASSED] Link rate 810000 lane count 1
[13:07:13] [PASSED] Link rate 540000 lane count 4
[13:07:13] [PASSED] Link rate 540000 lane count 2
[13:07:13] [PASSED] Link rate 540000 lane count 1
[13:07:13] [PASSED] Link rate 270000 lane count 4
[13:07:13] [PASSED] Link rate 270000 lane count 2
[13:07:13] [PASSED] Link rate 270000 lane count 1
[13:07:13] [PASSED] Link rate 162000 lane count 4
[13:07:13] [PASSED] Link rate 162000 lane count 2
[13:07:13] [PASSED] Link rate 162000 lane count 1
[13:07:13] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[13:07:13] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[13:07:13] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[13:07:13] [PASSED] DP_POWER_UP_PHY with port number
[13:07:13] [PASSED] DP_POWER_DOWN_PHY with port number
[13:07:13] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[13:07:13] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[13:07:13] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[13:07:13] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[13:07:13] [PASSED] DP_QUERY_PAYLOAD with port number
[13:07:13] [PASSED] DP_QUERY_PAYLOAD with VCPI
[13:07:13] [PASSED] DP_REMOTE_DPCD_READ with port number
[13:07:13] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[13:07:13] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[13:07:13] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[13:07:13] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[13:07:13] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[13:07:13] [PASSED] DP_REMOTE_I2C_READ with port number
[13:07:13] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[13:07:13] [PASSED] DP_REMOTE_I2C_READ with transactions array
[13:07:13] [PASSED] DP_REMOTE_I2C_WRITE with port number
[13:07:13] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[13:07:13] [PASSED] DP_REMOTE_I2C_WRITE with data array
[13:07:13] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[13:07:13] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[13:07:13] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[13:07:13] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[13:07:13] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[13:07:13] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[13:07:13] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[13:07:13] ================ [PASSED] drm_dp_mst_helper ================
[13:07:13] ================== drm_exec (7 subtests) ===================
[13:07:13] [PASSED] sanitycheck
[13:07:13] [PASSED] test_lock
[13:07:13] [PASSED] test_lock_unlock
[13:07:13] [PASSED] test_duplicates
[13:07:13] [PASSED] test_prepare
[13:07:13] [PASSED] test_prepare_array
[13:07:13] [PASSED] test_multiple_loops
[13:07:13] ==================== [PASSED] drm_exec =====================
[13:07:13] =========== drm_format_helper_test (17 subtests) ===========
[13:07:13] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[13:07:13] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[13:07:13] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[13:07:13] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[13:07:13] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[13:07:13] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[13:07:13] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[13:07:13] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[13:07:13] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[13:07:13] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[13:07:13] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[13:07:13] ============== drm_test_fb_xrgb8888_to_mono ===============
[13:07:13] [PASSED] single_pixel_source_buffer
[13:07:13] [PASSED] single_pixel_clip_rectangle
[13:07:13] [PASSED] well_known_colors
[13:07:13] [PASSED] destination_pitch
[13:07:13] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[13:07:14] ==================== drm_test_fb_swab =====================
[13:07:14] [PASSED] single_pixel_source_buffer
[13:07:14] [PASSED] single_pixel_clip_rectangle
[13:07:14] [PASSED] well_known_colors
[13:07:14] [PASSED] destination_pitch
[13:07:14] ================ [PASSED] drm_test_fb_swab =================
[13:07:14] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[13:07:14] [PASSED] single_pixel_source_buffer
[13:07:14] [PASSED] single_pixel_clip_rectangle
[13:07:14] [PASSED] well_known_colors
[13:07:14] [PASSED] destination_pitch
[13:07:14] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[13:07:14] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[13:07:14] [PASSED] single_pixel_source_buffer
[13:07:14] [PASSED] single_pixel_clip_rectangle
[13:07:14] [PASSED] well_known_colors
[13:07:14] [PASSED] destination_pitch
[13:07:14] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[13:07:14] ================= drm_test_fb_clip_offset =================
[13:07:14] [PASSED] pass through
[13:07:14] [PASSED] horizontal offset
[13:07:14] [PASSED] vertical offset
[13:07:14] [PASSED] horizontal and vertical offset
[13:07:14] [PASSED] horizontal offset (custom pitch)
[13:07:14] [PASSED] vertical offset (custom pitch)
[13:07:14] [PASSED] horizontal and vertical offset (custom pitch)
[13:07:14] ============= [PASSED] drm_test_fb_clip_offset =============
[13:07:14] =================== drm_test_fb_memcpy ====================
[13:07:14] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[13:07:14] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[13:07:14] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[13:07:14] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[13:07:14] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[13:07:14] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[13:07:14] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[13:07:14] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[13:07:14] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[13:07:14] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[13:07:14] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[13:07:14] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[13:07:14] =============== [PASSED] drm_test_fb_memcpy ================
[13:07:14] ============= [PASSED] drm_format_helper_test ==============
[13:07:14] ================= drm_format (18 subtests) =================
[13:07:14] [PASSED] drm_test_format_block_width_invalid
[13:07:14] [PASSED] drm_test_format_block_width_one_plane
[13:07:14] [PASSED] drm_test_format_block_width_two_plane
[13:07:14] [PASSED] drm_test_format_block_width_three_plane
[13:07:14] [PASSED] drm_test_format_block_width_tiled
[13:07:14] [PASSED] drm_test_format_block_height_invalid
[13:07:14] [PASSED] drm_test_format_block_height_one_plane
[13:07:14] [PASSED] drm_test_format_block_height_two_plane
[13:07:14] [PASSED] drm_test_format_block_height_three_plane
[13:07:14] [PASSED] drm_test_format_block_height_tiled
[13:07:14] [PASSED] drm_test_format_min_pitch_invalid
[13:07:14] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[13:07:14] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[13:07:14] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[13:07:14] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[13:07:14] [PASSED] drm_test_format_min_pitch_two_plane
[13:07:14] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[13:07:14] [PASSED] drm_test_format_min_pitch_tiled
[13:07:14] =================== [PASSED] drm_format ====================
[13:07:14] ============== drm_framebuffer (10 subtests) ===============
[13:07:14] ========== drm_test_framebuffer_check_src_coords ==========
[13:07:14] [PASSED] Success: source fits into fb
[13:07:14] [PASSED] Fail: overflowing fb with x-axis coordinate
[13:07:14] [PASSED] Fail: overflowing fb with y-axis coordinate
[13:07:14] [PASSED] Fail: overflowing fb with source width
[13:07:14] [PASSED] Fail: overflowing fb with source height
[13:07:14] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[13:07:14] [PASSED] drm_test_framebuffer_cleanup
[13:07:14] =============== drm_test_framebuffer_create ===============
[13:07:14] [PASSED] ABGR8888 normal sizes
[13:07:14] [PASSED] ABGR8888 max sizes
[13:07:14] [PASSED] ABGR8888 pitch greater than min required
[13:07:14] [PASSED] ABGR8888 pitch less than min required
[13:07:14] [PASSED] ABGR8888 Invalid width
[13:07:14] [PASSED] ABGR8888 Invalid buffer handle
[13:07:14] [PASSED] No pixel format
[13:07:14] [PASSED] ABGR8888 Width 0
[13:07:14] [PASSED] ABGR8888 Height 0
[13:07:14] [PASSED] ABGR8888 Out of bound height * pitch combination
[13:07:14] [PASSED] ABGR8888 Large buffer offset
[13:07:14] [PASSED] ABGR8888 Buffer offset for inexistent plane
[13:07:14] [PASSED] ABGR8888 Invalid flag
[13:07:14] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[13:07:14] [PASSED] ABGR8888 Valid buffer modifier
[13:07:14] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[13:07:14] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[13:07:14] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[13:07:14] [PASSED] NV12 Normal sizes
[13:07:14] [PASSED] NV12 Max sizes
[13:07:14] [PASSED] NV12 Invalid pitch
[13:07:14] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[13:07:14] [PASSED] NV12 different modifier per-plane
[13:07:14] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[13:07:14] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[13:07:14] [PASSED] NV12 Modifier for inexistent plane
[13:07:14] [PASSED] NV12 Handle for inexistent plane
[13:07:14] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[13:07:14] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[13:07:14] [PASSED] YVU420 Normal sizes
[13:07:14] [PASSED] YVU420 Max sizes
[13:07:14] [PASSED] YVU420 Invalid pitch
[13:07:14] [PASSED] YVU420 Different pitches
[13:07:14] [PASSED] YVU420 Different buffer offsets/pitches
[13:07:14] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[13:07:14] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[13:07:14] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[13:07:14] [PASSED] YVU420 Valid modifier
[13:07:14] [PASSED] YVU420 Different modifiers per plane
[13:07:14] [PASSED] YVU420 Modifier for inexistent plane
[13:07:14] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[13:07:14] [PASSED] X0L2 Normal sizes
[13:07:14] [PASSED] X0L2 Max sizes
[13:07:14] [PASSED] X0L2 Invalid pitch
[13:07:14] [PASSED] X0L2 Pitch greater than minimum required
[13:07:14] [PASSED] X0L2 Handle for inexistent plane
[13:07:14] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[13:07:14] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[13:07:14] [PASSED] X0L2 Valid modifier
[13:07:14] [PASSED] X0L2 Modifier for inexistent plane
[13:07:14] =========== [PASSED] drm_test_framebuffer_create ===========
[13:07:14] [PASSED] drm_test_framebuffer_free
[13:07:14] [PASSED] drm_test_framebuffer_init
[13:07:14] [PASSED] drm_test_framebuffer_init_bad_format
[13:07:14] [PASSED] drm_test_framebuffer_init_dev_mismatch
[13:07:14] [PASSED] drm_test_framebuffer_lookup
[13:07:14] [PASSED] drm_test_framebuffer_lookup_inexistent
[13:07:14] [PASSED] drm_test_framebuffer_modifiers_not_supported
[13:07:14] ================= [PASSED] drm_framebuffer =================
[13:07:14] ================ drm_gem_shmem (8 subtests) ================
[13:07:14] [PASSED] drm_gem_shmem_test_obj_create
[13:07:14] [PASSED] drm_gem_shmem_test_obj_create_private
[13:07:14] [PASSED] drm_gem_shmem_test_pin_pages
[13:07:14] [PASSED] drm_gem_shmem_test_vmap
[13:07:14] [PASSED] drm_gem_shmem_test_get_sg_table
[13:07:14] [PASSED] drm_gem_shmem_test_get_pages_sgt
[13:07:14] [PASSED] drm_gem_shmem_test_madvise
[13:07:14] [PASSED] drm_gem_shmem_test_purge
[13:07:14] ================== [PASSED] drm_gem_shmem ==================
[13:07:14] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[13:07:14] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[13:07:14] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[13:07:14] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[13:07:14] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[13:07:14] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[13:07:14] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[13:07:14] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[13:07:14] [PASSED] Automatic
[13:07:14] [PASSED] Full
[13:07:14] [PASSED] Limited 16:235
[13:07:14] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[13:07:14] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[13:07:14] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[13:07:14] [PASSED] drm_test_check_disable_connector
[13:07:14] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[13:07:14] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[13:07:14] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[13:07:14] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[13:07:14] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[13:07:14] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[13:07:14] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[13:07:14] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[13:07:14] [PASSED] drm_test_check_output_bpc_dvi
[13:07:14] [PASSED] drm_test_check_output_bpc_format_vic_1
[13:07:14] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[13:07:14] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[13:07:14] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[13:07:14] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[13:07:14] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[13:07:14] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[13:07:14] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[13:07:14] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[13:07:14] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[13:07:14] [PASSED] drm_test_check_broadcast_rgb_value
[13:07:14] [PASSED] drm_test_check_bpc_8_value
[13:07:14] [PASSED] drm_test_check_bpc_10_value
[13:07:14] [PASSED] drm_test_check_bpc_12_value
[13:07:14] [PASSED] drm_test_check_format_value
[13:07:14] [PASSED] drm_test_check_tmds_char_value
[13:07:14] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[13:07:14] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[13:07:14] [PASSED] drm_test_check_mode_valid
[13:07:14] [PASSED] drm_test_check_mode_valid_reject
[13:07:14] [PASSED] drm_test_check_mode_valid_reject_rate
[13:07:14] [PASSED] drm_test_check_mode_valid_reject_max_clock
[13:07:14] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[13:07:14] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[13:07:14] [PASSED] drm_test_check_infoframes
[13:07:14] [PASSED] drm_test_check_reject_avi_infoframe
[13:07:14] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[13:07:14] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[13:07:14] [PASSED] drm_test_check_reject_audio_infoframe
[13:07:14] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[13:07:14] ================= drm_managed (2 subtests) =================
[13:07:14] [PASSED] drm_test_managed_release_action
[13:07:14] [PASSED] drm_test_managed_run_action
[13:07:14] =================== [PASSED] drm_managed ===================
[13:07:14] =================== drm_mm (6 subtests) ====================
[13:07:14] [PASSED] drm_test_mm_init
[13:07:14] [PASSED] drm_test_mm_debug
[13:07:14] [PASSED] drm_test_mm_align32
[13:07:14] [PASSED] drm_test_mm_align64
[13:07:14] [PASSED] drm_test_mm_lowest
[13:07:14] [PASSED] drm_test_mm_highest
[13:07:14] ===================== [PASSED] drm_mm ======================
[13:07:14] ============= drm_modes_analog_tv (5 subtests) =============
[13:07:14] [PASSED] drm_test_modes_analog_tv_mono_576i
[13:07:14] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[13:07:14] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[13:07:14] [PASSED] drm_test_modes_analog_tv_pal_576i
[13:07:14] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[13:07:14] =============== [PASSED] drm_modes_analog_tv ===============
[13:07:14] ============== drm_plane_helper (2 subtests) ===============
[13:07:14] =============== drm_test_check_plane_state ================
[13:07:14] [PASSED] clipping_simple
[13:07:14] [PASSED] clipping_rotate_reflect
[13:07:14] [PASSED] positioning_simple
[13:07:14] [PASSED] upscaling
[13:07:14] [PASSED] downscaling
[13:07:14] [PASSED] rounding1
[13:07:14] [PASSED] rounding2
[13:07:14] [PASSED] rounding3
[13:07:14] [PASSED] rounding4
[13:07:14] =========== [PASSED] drm_test_check_plane_state ============
[13:07:14] =========== drm_test_check_invalid_plane_state ============
[13:07:14] [PASSED] positioning_invalid
[13:07:14] [PASSED] upscaling_invalid
[13:07:14] [PASSED] downscaling_invalid
[13:07:14] ======= [PASSED] drm_test_check_invalid_plane_state ========
[13:07:14] ================ [PASSED] drm_plane_helper =================
[13:07:14] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[13:07:14] ====== drm_test_connector_helper_tv_get_modes_check =======
[13:07:14] [PASSED] None
[13:07:14] [PASSED] PAL
[13:07:14] [PASSED] NTSC
[13:07:14] [PASSED] Both, NTSC Default
[13:07:14] [PASSED] Both, PAL Default
[13:07:14] [PASSED] Both, NTSC Default, with PAL on command-line
[13:07:14] [PASSED] Both, PAL Default, with NTSC on command-line
[13:07:14] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[13:07:14] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[13:07:14] ================== drm_rect (9 subtests) ===================
[13:07:14] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[13:07:14] [PASSED] drm_test_rect_clip_scaled_not_clipped
[13:07:14] [PASSED] drm_test_rect_clip_scaled_clipped
[13:07:14] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[13:07:14] ================= drm_test_rect_intersect =================
[13:07:14] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[13:07:14] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[13:07:14] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[13:07:14] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[13:07:14] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[13:07:14] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[13:07:14] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[13:07:14] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[13:07:14] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[13:07:14] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[13:07:14] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[13:07:14] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[13:07:14] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[13:07:14] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[13:07:14] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
stty: 'standard input': Inappropriate ioctl for device
[13:07:14] ============= [PASSED] drm_test_rect_intersect =============
[13:07:14] ================ drm_test_rect_calc_hscale ================
[13:07:14] [PASSED] normal use
[13:07:14] [PASSED] out of max range
[13:07:14] [PASSED] out of min range
[13:07:14] [PASSED] zero dst
[13:07:14] [PASSED] negative src
[13:07:14] [PASSED] negative dst
[13:07:14] ============ [PASSED] drm_test_rect_calc_hscale ============
[13:07:14] ================ drm_test_rect_calc_vscale ================
[13:07:14] [PASSED] normal use
[13:07:14] [PASSED] out of max range
[13:07:14] [PASSED] out of min range
[13:07:14] [PASSED] zero dst
[13:07:14] [PASSED] negative src
[13:07:14] [PASSED] negative dst
[13:07:14] ============ [PASSED] drm_test_rect_calc_vscale ============
[13:07:14] ================== drm_test_rect_rotate ===================
[13:07:14] [PASSED] reflect-x
[13:07:14] [PASSED] reflect-y
[13:07:14] [PASSED] rotate-0
[13:07:14] [PASSED] rotate-90
[13:07:14] [PASSED] rotate-180
[13:07:14] [PASSED] rotate-270
[13:07:14] ============== [PASSED] drm_test_rect_rotate ===============
[13:07:14] ================ drm_test_rect_rotate_inv =================
[13:07:14] [PASSED] reflect-x
[13:07:14] [PASSED] reflect-y
[13:07:14] [PASSED] rotate-0
[13:07:14] [PASSED] rotate-90
[13:07:14] [PASSED] rotate-180
[13:07:14] [PASSED] rotate-270
[13:07:14] ============ [PASSED] drm_test_rect_rotate_inv =============
[13:07:14] ==================== [PASSED] drm_rect =====================
[13:07:14] ============ drm_sysfb_modeset_test (1 subtest) ============
[13:07:14] ============ drm_test_sysfb_build_fourcc_list =============
[13:07:14] [PASSED] no native formats
[13:07:14] [PASSED] XRGB8888 as native format
[13:07:14] [PASSED] remove duplicates
[13:07:14] [PASSED] convert alpha formats
[13:07:14] [PASSED] random formats
[13:07:14] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[13:07:14] ============= [PASSED] drm_sysfb_modeset_test ==============
[13:07:14] ================== drm_fixp (2 subtests) ===================
[13:07:14] [PASSED] drm_test_int2fixp
[13:07:14] [PASSED] drm_test_sm2fixp
[13:07:14] ==================== [PASSED] drm_fixp =====================
[13:07:14] ============================================================
[13:07:14] Testing complete. Ran 630 tests: passed: 630
[13:07:14] Elapsed time: 27.606s total, 1.716s configuring, 25.469s building, 0.381s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[13:07:14] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:07:15] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[13:07:25] Starting KUnit Kernel (1/1)...
[13:07:25] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:07:25] ================= ttm_device (5 subtests) ==================
[13:07:25] [PASSED] ttm_device_init_basic
[13:07:25] [PASSED] ttm_device_init_multiple
[13:07:25] [PASSED] ttm_device_fini_basic
[13:07:25] [PASSED] ttm_device_init_no_vma_man
[13:07:25] ================== ttm_device_init_pools ==================
[13:07:25] [PASSED] No DMA allocations, no DMA32 required
[13:07:25] [PASSED] DMA allocations, DMA32 required
[13:07:25] [PASSED] No DMA allocations, DMA32 required
[13:07:25] [PASSED] DMA allocations, no DMA32 required
[13:07:25] ============== [PASSED] ttm_device_init_pools ==============
[13:07:25] =================== [PASSED] ttm_device ====================
[13:07:25] ================== ttm_pool (8 subtests) ===================
[13:07:25] ================== ttm_pool_alloc_basic ===================
[13:07:25] [PASSED] One page
[13:07:25] [PASSED] More than one page
[13:07:25] [PASSED] Above the allocation limit
[13:07:25] [PASSED] One page, with coherent DMA mappings enabled
[13:07:25] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[13:07:25] ============== [PASSED] ttm_pool_alloc_basic ===============
[13:07:25] ============== ttm_pool_alloc_basic_dma_addr ==============
[13:07:25] [PASSED] One page
[13:07:25] [PASSED] More than one page
[13:07:25] [PASSED] Above the allocation limit
[13:07:25] [PASSED] One page, with coherent DMA mappings enabled
[13:07:25] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[13:07:25] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[13:07:25] [PASSED] ttm_pool_alloc_order_caching_match
[13:07:25] [PASSED] ttm_pool_alloc_caching_mismatch
[13:07:25] [PASSED] ttm_pool_alloc_order_mismatch
[13:07:25] [PASSED] ttm_pool_free_dma_alloc
[13:07:25] [PASSED] ttm_pool_free_no_dma_alloc
[13:07:25] [PASSED] ttm_pool_fini_basic
[13:07:25] ==================== [PASSED] ttm_pool =====================
[13:07:25] ================ ttm_resource (8 subtests) =================
[13:07:25] ================= ttm_resource_init_basic =================
[13:07:25] [PASSED] Init resource in TTM_PL_SYSTEM
[13:07:25] [PASSED] Init resource in TTM_PL_VRAM
[13:07:25] [PASSED] Init resource in a private placement
[13:07:25] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[13:07:25] ============= [PASSED] ttm_resource_init_basic =============
[13:07:25] [PASSED] ttm_resource_init_pinned
[13:07:25] [PASSED] ttm_resource_fini_basic
[13:07:25] [PASSED] ttm_resource_manager_init_basic
[13:07:25] [PASSED] ttm_resource_manager_usage_basic
[13:07:25] [PASSED] ttm_resource_manager_set_used_basic
[13:07:25] [PASSED] ttm_sys_man_alloc_basic
[13:07:25] [PASSED] ttm_sys_man_free_basic
[13:07:25] ================== [PASSED] ttm_resource ===================
[13:07:25] =================== ttm_tt (15 subtests) ===================
[13:07:25] ==================== ttm_tt_init_basic ====================
[13:07:25] [PASSED] Page-aligned size
[13:07:25] [PASSED] Extra pages requested
[13:07:25] ================ [PASSED] ttm_tt_init_basic ================
[13:07:25] [PASSED] ttm_tt_init_misaligned
[13:07:25] [PASSED] ttm_tt_fini_basic
[13:07:25] [PASSED] ttm_tt_fini_sg
[13:07:25] [PASSED] ttm_tt_fini_shmem
[13:07:25] [PASSED] ttm_tt_create_basic
[13:07:25] [PASSED] ttm_tt_create_invalid_bo_type
[13:07:25] [PASSED] ttm_tt_create_ttm_exists
[13:07:25] [PASSED] ttm_tt_create_failed
[13:07:25] [PASSED] ttm_tt_destroy_basic
[13:07:25] [PASSED] ttm_tt_populate_null_ttm
[13:07:25] [PASSED] ttm_tt_populate_populated_ttm
[13:07:25] [PASSED] ttm_tt_unpopulate_basic
[13:07:25] [PASSED] ttm_tt_unpopulate_empty_ttm
[13:07:25] [PASSED] ttm_tt_swapin_basic
[13:07:25] ===================== [PASSED] ttm_tt ======================
[13:07:25] =================== ttm_bo (14 subtests) ===================
[13:07:25] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[13:07:25] [PASSED] Cannot be interrupted and sleeps
[13:07:25] [PASSED] Cannot be interrupted, locks straight away
[13:07:25] [PASSED] Can be interrupted, sleeps
[13:07:25] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[13:07:25] [PASSED] ttm_bo_reserve_locked_no_sleep
[13:07:25] [PASSED] ttm_bo_reserve_no_wait_ticket
[13:07:25] [PASSED] ttm_bo_reserve_double_resv
[13:07:25] [PASSED] ttm_bo_reserve_interrupted
[13:07:25] [PASSED] ttm_bo_reserve_deadlock
[13:07:25] [PASSED] ttm_bo_unreserve_basic
[13:07:25] [PASSED] ttm_bo_unreserve_pinned
[13:07:25] [PASSED] ttm_bo_unreserve_bulk
[13:07:25] [PASSED] ttm_bo_fini_basic
[13:07:25] [PASSED] ttm_bo_fini_shared_resv
[13:07:25] [PASSED] ttm_bo_pin_basic
[13:07:25] [PASSED] ttm_bo_pin_unpin_resource
[13:07:25] [PASSED] ttm_bo_multiple_pin_one_unpin
[13:07:25] ===================== [PASSED] ttm_bo ======================
[13:07:25] ============== ttm_bo_validate (21 subtests) ===============
[13:07:25] ============== ttm_bo_init_reserved_sys_man ===============
[13:07:25] [PASSED] Buffer object for userspace
[13:07:25] [PASSED] Kernel buffer object
[13:07:25] [PASSED] Shared buffer object
[13:07:25] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[13:07:25] ============== ttm_bo_init_reserved_mock_man ==============
[13:07:25] [PASSED] Buffer object for userspace
[13:07:25] [PASSED] Kernel buffer object
[13:07:25] [PASSED] Shared buffer object
[13:07:25] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[13:07:25] [PASSED] ttm_bo_init_reserved_resv
[13:07:25] ================== ttm_bo_validate_basic ==================
[13:07:25] [PASSED] Buffer object for userspace
[13:07:25] [PASSED] Kernel buffer object
[13:07:25] [PASSED] Shared buffer object
[13:07:25] ============== [PASSED] ttm_bo_validate_basic ==============
[13:07:25] [PASSED] ttm_bo_validate_invalid_placement
[13:07:25] ============= ttm_bo_validate_same_placement ==============
[13:07:25] [PASSED] System manager
[13:07:25] [PASSED] VRAM manager
[13:07:25] ========= [PASSED] ttm_bo_validate_same_placement ==========
[13:07:25] [PASSED] ttm_bo_validate_failed_alloc
[13:07:25] [PASSED] ttm_bo_validate_pinned
[13:07:25] [PASSED] ttm_bo_validate_busy_placement
[13:07:25] ================ ttm_bo_validate_multihop =================
[13:07:25] [PASSED] Buffer object for userspace
[13:07:25] [PASSED] Kernel buffer object
[13:07:25] [PASSED] Shared buffer object
[13:07:25] ============ [PASSED] ttm_bo_validate_multihop =============
[13:07:25] ========== ttm_bo_validate_no_placement_signaled ==========
[13:07:25] [PASSED] Buffer object in system domain, no page vector
[13:07:25] [PASSED] Buffer object in system domain with an existing page vector
[13:07:25] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[13:07:25] ======== ttm_bo_validate_no_placement_not_signaled ========
[13:07:25] [PASSED] Buffer object for userspace
[13:07:25] [PASSED] Kernel buffer object
[13:07:25] [PASSED] Shared buffer object
[13:07:25] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[13:07:25] [PASSED] ttm_bo_validate_move_fence_signaled
[13:07:25] ========= ttm_bo_validate_move_fence_not_signaled =========
[13:07:25] [PASSED] Waits for GPU
[13:07:25] [PASSED] Tries to lock straight away
[13:07:25] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[13:07:25] [PASSED] ttm_bo_validate_happy_evict
[13:07:25] [PASSED] ttm_bo_validate_all_pinned_evict
[13:07:25] [PASSED] ttm_bo_validate_allowed_only_evict
[13:07:25] [PASSED] ttm_bo_validate_deleted_evict
[13:07:25] [PASSED] ttm_bo_validate_busy_domain_evict
[13:07:25] [PASSED] ttm_bo_validate_evict_gutting
[13:07:25] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[13:07:25] ================= [PASSED] ttm_bo_validate =================
[13:07:25] ============================================================
[13:07:25] Testing complete. Ran 101 tests: passed: 101
[13:07:25] Elapsed time: 11.339s total, 1.609s configuring, 9.513s building, 0.180s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 20+ messages in thread
* ✗ CI.checksparse: warning for dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (9 preceding siblings ...)
2026-01-21 13:07 ` ✓ CI.KUnit: success " Patchwork
@ 2026-01-21 13:22 ` Patchwork
2026-01-21 13:45 ` ✓ Xe.CI.BAT: success " Patchwork
2026-01-21 20:51 ` ✗ Xe.CI.Full: failure " Patchwork
12 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2026-01-21 13:22 UTC (permalink / raw)
To: Leon Romanovsky; +Cc: intel-xe
== Series Details ==
Series: dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
URL : https://patchwork.freedesktop.org/series/160360/
State : warning
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast f869ee12e212bfa9fe277e6586c2c02902ed950b
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/drm_bridge.c:1643:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1644:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1645:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1645:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_framebuffer_helper.c:23:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:28:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:967:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:968:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:969:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:969:1: error: bad constant expression
+drivers/gpu/drm/drm_prime.c:44:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_display_debugfs.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fb_bo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fbc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_fb.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fb_pin.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_frontbuffer.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_overlay.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c:18:1: error: bad constant expression
+drivers/gpu/drm/i915/gem/i915_gem_pages.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/gt/intel_reset.c:1569:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/intel_sseu.c:600:17: error: too long token expansion
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:193:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_active.c:1062:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: expected struct list_head const *list
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: got struct list_head [noderef] __rcu *pos
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/i915_initial_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/i915_irq.c:467:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:467:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:475:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:475:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:518:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:518:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:526:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:526:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:575:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:575:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:578:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:578:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:582:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:582:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_mitigations.c:133:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:125:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:126:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:128:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:129:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:129:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_panic.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/i915_params.c:100:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:100:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:104:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:104:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:107:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:107:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:110:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:110:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:119:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:119:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:123:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:123:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:125:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:125:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:66:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:66:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:69:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:69:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:73:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:73:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:79:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:79:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:84:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:84:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:88:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:88:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:91:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:91:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:95:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:95:1: error: bad constant expression
+drivers/gpu/drm/i915/intel_uncore.c:1930:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1931:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1932:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1933:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1998:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1999:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2000:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2020:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2021:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2022:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_wakeref.c:148:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock
+drivers/gpu/drm/ttm/ttm_bo.c:1203:31: warning: symbol 'ttm_swap_ops' was not declared. Should it be static?
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:465:28: expected void volatile [noderef] __iomem *addr
+drivers/gpu/drm/ttm/ttm_bo_util.c:465:28: got void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:465:28: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/ttm/ttm_pool.c:119:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_pool.c:120:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:54:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:55:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:59:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:60:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:217:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:218:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:218:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:219:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:220:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:221:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:52:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:53:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_object.c:34:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_prime.c:30:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 20+ messages in thread
* ✓ Xe.CI.BAT: success for dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (10 preceding siblings ...)
2026-01-21 13:22 ` ✗ CI.checksparse: warning " Patchwork
@ 2026-01-21 13:45 ` Patchwork
2026-01-21 20:51 ` ✗ Xe.CI.Full: failure " Patchwork
12 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2026-01-21 13:45 UTC (permalink / raw)
To: Leon Romanovsky; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1527 bytes --]
== Series Details ==
Series: dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
URL : https://patchwork.freedesktop.org/series/160360/
State : success
== Summary ==
CI Bug Log - changes from xe-4426-956025ffb8ada6041420e7df5f3311e139195474_BAT -> xe-pw-160360v2_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (12 -> 12)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-160360v2_BAT that come from known issues:
### IGT changes ###
#### Possible fixes ####
* igt@xe_waitfence@abstime:
- bat-dg2-oem2: [TIMEOUT][1] ([Intel XE#6506]) -> [PASS][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/bat-dg2-oem2/igt@xe_waitfence@abstime.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/bat-dg2-oem2/igt@xe_waitfence@abstime.html
[Intel XE#6506]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6506
Build changes
-------------
* Linux: xe-4426-956025ffb8ada6041420e7df5f3311e139195474 -> xe-pw-160360v2
IGT_8709: 16ce286cac6acc9669a1c758572ae9fceb483c46 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4426-956025ffb8ada6041420e7df5f3311e139195474: 956025ffb8ada6041420e7df5f3311e139195474
xe-pw-160360v2: 160360v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/index.html
[-- Attachment #2: Type: text/html, Size: 2092 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics
[not found] ` <20260121134712.GZ961572@ziepe.ca>
@ 2026-01-21 14:18 ` Christian König
2026-01-21 14:22 ` Pranjal Shrivastava
2026-01-21 14:47 ` Leon Romanovsky
2 siblings, 0 replies; 20+ messages in thread
From: Christian König @ 2026-01-21 14:18 UTC (permalink / raw)
To: Jason Gunthorpe, Leon Romanovsky
Cc: Sumit Semwal, Alex Deucher, David Airlie, Simona Vetter,
Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh, Chia-I Wu,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi, Kevin Tian,
Joerg Roedel, Will Deacon, Robin Murphy, Felix Kuehling,
Alex Williamson, Ankit Agrawal, Vivek Kasireddy, linux-media,
dri-devel, linaro-mm-sig, linux-kernel, amd-gfx, virtualization,
intel-xe, linux-rdma, iommu, kvm
On 1/21/26 14:47, Jason Gunthorpe wrote:
> On Wed, Jan 21, 2026 at 02:59:16PM +0200, Leon Romanovsky wrote:
>> From: Leon Romanovsky <leonro@nvidia.com>
>>
>> Use the new dma_buf_attach_revocable() helper to restrict attachments to
>> importers that support mapping invalidation.
>>
>> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
>> ---
>> drivers/vfio/pci/vfio_pci_dmabuf.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci_dmabuf.c
>> index 5fceefc40e27..85056a5a3faf 100644
>> --- a/drivers/vfio/pci/vfio_pci_dmabuf.c
>> +++ b/drivers/vfio/pci/vfio_pci_dmabuf.c
>> @@ -31,6 +31,9 @@ static int vfio_pci_dma_buf_attach(struct dma_buf *dmabuf,
>> if (priv->revoked)
>> return -ENODEV;
>>
>> + if (!dma_buf_attach_revocable(attachment))
>> + return -EOPNOTSUPP;
>> +
>> return 0;
>> }
>
> We need to push an urgent -rc fix to implement a pin function here
> that always fails. That was missed and it means things like rdma can
> import vfio when the intention was to block that. It would be bad for
> that uAPI mistake to reach a released kernel.
>
> It's tricky that NULL pin ops means "I support pin" :|
Well it means: "I have no memory management and my buffers are always pinned.".
Christian.
>
> Jason
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics
[not found] ` <20260121134712.GZ961572@ziepe.ca>
2026-01-21 14:18 ` Christian König
@ 2026-01-21 14:22 ` Pranjal Shrivastava
2026-01-21 14:25 ` Leon Romanovsky
2026-01-21 14:47 ` Leon Romanovsky
2 siblings, 1 reply; 20+ messages in thread
From: Pranjal Shrivastava @ 2026-01-21 14:22 UTC (permalink / raw)
To: Jason Gunthorpe
Cc: Leon Romanovsky, Sumit Semwal, Christian König, Alex Deucher,
David Airlie, Simona Vetter, Gerd Hoffmann, Dmitry Osipenko,
Gurchetan Singh, Chia-I Wu, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Lucas De Marchi, Thomas Hellström,
Rodrigo Vivi, Kevin Tian, Joerg Roedel, Will Deacon, Robin Murphy,
Felix Kuehling, Alex Williamson, Ankit Agrawal, Vivek Kasireddy,
linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
On Wed, Jan 21, 2026 at 09:47:12AM -0400, Jason Gunthorpe wrote:
> On Wed, Jan 21, 2026 at 02:59:16PM +0200, Leon Romanovsky wrote:
> > From: Leon Romanovsky <leonro@nvidia.com>
> >
> > Use the new dma_buf_attach_revocable() helper to restrict attachments to
> > importers that support mapping invalidation.
> >
> > Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> > ---
> > drivers/vfio/pci/vfio_pci_dmabuf.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci_dmabuf.c
> > index 5fceefc40e27..85056a5a3faf 100644
> > --- a/drivers/vfio/pci/vfio_pci_dmabuf.c
> > +++ b/drivers/vfio/pci/vfio_pci_dmabuf.c
> > @@ -31,6 +31,9 @@ static int vfio_pci_dma_buf_attach(struct dma_buf *dmabuf,
> > if (priv->revoked)
> > return -ENODEV;
> >
> > + if (!dma_buf_attach_revocable(attachment))
> > + return -EOPNOTSUPP;
> > +
> > return 0;
> > }
>
> We need to push an urgent -rc fix to implement a pin function here
> that always fails. That was missed and it means things like rdma can
> import vfio when the intention was to block that. It would be bad for
> that uAPI mistake to reach a released kernel.
>
> It's tricky that NULL pin ops means "I support pin" :|
>
I've been wondering about this for a while now, I've been sitting on the
following:
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index a4d8f2ff94e4..962bce959366 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -1133,6 +1133,8 @@ int dma_buf_pin(struct dma_buf_attachment *attach)
if (dmabuf->ops->pin)
ret = dmabuf->ops->pin(attach);
+ else
+ ret = -EOPNOTSUPP;
return ret;
}
But didn't get a chance to dive in the history yet. I thought there's a
good reason we didn't have it? Would it break exisitng dmabuf users?
Praan
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics
2026-01-21 14:22 ` Pranjal Shrivastava
@ 2026-01-21 14:25 ` Leon Romanovsky
2026-01-21 14:47 ` Pranjal Shrivastava
0 siblings, 1 reply; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 14:25 UTC (permalink / raw)
To: Pranjal Shrivastava
Cc: Jason Gunthorpe, Sumit Semwal, Christian König, Alex Deucher,
David Airlie, Simona Vetter, Gerd Hoffmann, Dmitry Osipenko,
Gurchetan Singh, Chia-I Wu, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Lucas De Marchi, Thomas Hellström,
Rodrigo Vivi, Kevin Tian, Joerg Roedel, Will Deacon, Robin Murphy,
Felix Kuehling, Alex Williamson, Ankit Agrawal, Vivek Kasireddy,
linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
On Wed, Jan 21, 2026 at 02:22:31PM +0000, Pranjal Shrivastava wrote:
> On Wed, Jan 21, 2026 at 09:47:12AM -0400, Jason Gunthorpe wrote:
> > On Wed, Jan 21, 2026 at 02:59:16PM +0200, Leon Romanovsky wrote:
> > > From: Leon Romanovsky <leonro@nvidia.com>
> > >
> > > Use the new dma_buf_attach_revocable() helper to restrict attachments to
> > > importers that support mapping invalidation.
> > >
> > > Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> > > ---
> > > drivers/vfio/pci/vfio_pci_dmabuf.c | 3 +++
> > > 1 file changed, 3 insertions(+)
> > >
> > > diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci_dmabuf.c
> > > index 5fceefc40e27..85056a5a3faf 100644
> > > --- a/drivers/vfio/pci/vfio_pci_dmabuf.c
> > > +++ b/drivers/vfio/pci/vfio_pci_dmabuf.c
> > > @@ -31,6 +31,9 @@ static int vfio_pci_dma_buf_attach(struct dma_buf *dmabuf,
> > > if (priv->revoked)
> > > return -ENODEV;
> > >
> > > + if (!dma_buf_attach_revocable(attachment))
> > > + return -EOPNOTSUPP;
> > > +
> > > return 0;
> > > }
> >
> > We need to push an urgent -rc fix to implement a pin function here
> > that always fails. That was missed and it means things like rdma can
> > import vfio when the intention was to block that. It would be bad for
> > that uAPI mistake to reach a released kernel.
> >
> > It's tricky that NULL pin ops means "I support pin" :|
> >
>
> I've been wondering about this for a while now, I've been sitting on the
> following:
>
> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> index a4d8f2ff94e4..962bce959366 100644
> --- a/drivers/dma-buf/dma-buf.c
> +++ b/drivers/dma-buf/dma-buf.c
> @@ -1133,6 +1133,8 @@ int dma_buf_pin(struct dma_buf_attachment *attach)
>
> if (dmabuf->ops->pin)
> ret = dmabuf->ops->pin(attach);
> + else
> + ret = -EOPNOTSUPP;
>
> return ret;
> }
>
> But didn't get a chance to dive in the history yet. I thought there's a
> good reason we didn't have it? Would it break exisitng dmabuf users?
Probably every importer which called to dma_buf_pin() while connecting
to existing exporters as many in tree implementation don't have ->pin()
implemented.
Thanks
>
> Praan
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics
[not found] ` <20260121134712.GZ961572@ziepe.ca>
2026-01-21 14:18 ` Christian König
2026-01-21 14:22 ` Pranjal Shrivastava
@ 2026-01-21 14:47 ` Leon Romanovsky
[not found] ` <20260121154137.GD961572@ziepe.ca>
2 siblings, 1 reply; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 14:47 UTC (permalink / raw)
To: Jason Gunthorpe
Cc: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi, Kevin Tian,
Joerg Roedel, Will Deacon, Robin Murphy, Felix Kuehling,
Alex Williamson, Ankit Agrawal, Vivek Kasireddy, linux-media,
dri-devel, linaro-mm-sig, linux-kernel, amd-gfx, virtualization,
intel-xe, linux-rdma, iommu, kvm
On Wed, Jan 21, 2026 at 09:47:12AM -0400, Jason Gunthorpe wrote:
> On Wed, Jan 21, 2026 at 02:59:16PM +0200, Leon Romanovsky wrote:
> > From: Leon Romanovsky <leonro@nvidia.com>
> >
> > Use the new dma_buf_attach_revocable() helper to restrict attachments to
> > importers that support mapping invalidation.
> >
> > Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> > ---
> > drivers/vfio/pci/vfio_pci_dmabuf.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci_dmabuf.c
> > index 5fceefc40e27..85056a5a3faf 100644
> > --- a/drivers/vfio/pci/vfio_pci_dmabuf.c
> > +++ b/drivers/vfio/pci/vfio_pci_dmabuf.c
> > @@ -31,6 +31,9 @@ static int vfio_pci_dma_buf_attach(struct dma_buf *dmabuf,
> > if (priv->revoked)
> > return -ENODEV;
> >
> > + if (!dma_buf_attach_revocable(attachment))
> > + return -EOPNOTSUPP;
> > +
> > return 0;
> > }
>
> We need to push an urgent -rc fix to implement a pin function here
> that always fails. That was missed and it means things like rdma can
> import vfio when the intention was to block that. It would be bad for
> that uAPI mistake to reach a released kernel.
I don't see any urgency here. In the current kernel, the RDMA importer
prints a warning to indicate it was attached to the wrong exporter.
VFIO also invokes dma_buf_move_notify().
With this series, we finally remove that warning.
Let's focus on getting this series merged.
Thanks
>
> It's tricky that NULL pin ops means "I support pin" :|
>
> Jason
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics
2026-01-21 14:25 ` Leon Romanovsky
@ 2026-01-21 14:47 ` Pranjal Shrivastava
0 siblings, 0 replies; 20+ messages in thread
From: Pranjal Shrivastava @ 2026-01-21 14:47 UTC (permalink / raw)
To: Leon Romanovsky
Cc: Jason Gunthorpe, Sumit Semwal, Christian König, Alex Deucher,
David Airlie, Simona Vetter, Gerd Hoffmann, Dmitry Osipenko,
Gurchetan Singh, Chia-I Wu, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Lucas De Marchi, Thomas Hellström,
Rodrigo Vivi, Kevin Tian, Joerg Roedel, Will Deacon, Robin Murphy,
Felix Kuehling, Alex Williamson, Ankit Agrawal, Vivek Kasireddy,
linux-media, dri-devel, linaro-mm-sig, linux-kernel, amd-gfx,
virtualization, intel-xe, linux-rdma, iommu, kvm
On Wed, Jan 21, 2026 at 04:25:28PM +0200, Leon Romanovsky wrote:
> On Wed, Jan 21, 2026 at 02:22:31PM +0000, Pranjal Shrivastava wrote:
> > On Wed, Jan 21, 2026 at 09:47:12AM -0400, Jason Gunthorpe wrote:
> > > On Wed, Jan 21, 2026 at 02:59:16PM +0200, Leon Romanovsky wrote:
> > > > From: Leon Romanovsky <leonro@nvidia.com>
> > > >
> > > > Use the new dma_buf_attach_revocable() helper to restrict attachments to
> > > > importers that support mapping invalidation.
> > > >
> > > > Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> > > > ---
> > > > drivers/vfio/pci/vfio_pci_dmabuf.c | 3 +++
> > > > 1 file changed, 3 insertions(+)
> > > >
> > > > diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci_dmabuf.c
> > > > index 5fceefc40e27..85056a5a3faf 100644
> > > > --- a/drivers/vfio/pci/vfio_pci_dmabuf.c
> > > > +++ b/drivers/vfio/pci/vfio_pci_dmabuf.c
> > > > @@ -31,6 +31,9 @@ static int vfio_pci_dma_buf_attach(struct dma_buf *dmabuf,
> > > > if (priv->revoked)
> > > > return -ENODEV;
> > > >
> > > > + if (!dma_buf_attach_revocable(attachment))
> > > > + return -EOPNOTSUPP;
> > > > +
> > > > return 0;
> > > > }
> > >
> > > We need to push an urgent -rc fix to implement a pin function here
> > > that always fails. That was missed and it means things like rdma can
> > > import vfio when the intention was to block that. It would be bad for
> > > that uAPI mistake to reach a released kernel.
> > >
> > > It's tricky that NULL pin ops means "I support pin" :|
> > >
> >
> > I've been wondering about this for a while now, I've been sitting on the
> > following:
> >
> > diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> > index a4d8f2ff94e4..962bce959366 100644
> > --- a/drivers/dma-buf/dma-buf.c
> > +++ b/drivers/dma-buf/dma-buf.c
> > @@ -1133,6 +1133,8 @@ int dma_buf_pin(struct dma_buf_attachment *attach)
> >
> > if (dmabuf->ops->pin)
> > ret = dmabuf->ops->pin(attach);
> > + else
> > + ret = -EOPNOTSUPP;
> >
> > return ret;
> > }
> >
> > But didn't get a chance to dive in the history yet. I thought there's a
> > good reason we didn't have it? Would it break exisitng dmabuf users?
>
> Probably every importer which called to dma_buf_pin() while connecting
> to existing exporters as many in tree implementation don't have ->pin()
> implemented.
Fair point. I agree with Jason that we cannot leave this open for VFIO
and we can have a pin op that always fails.
But at the same time, I'd like to discuss if we should think about
changing the dmabuf core, NULL op == success feels like relying on a bug
I agree that it means the exporter has no mm, but I believe there should
be some way for the importer to know that.. the importer can still
decide to use the exported dmabuf while being aware.
Thanks,
Praan
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics
[not found] ` <20260121154137.GD961572@ziepe.ca>
@ 2026-01-21 15:46 ` Leon Romanovsky
0 siblings, 0 replies; 20+ messages in thread
From: Leon Romanovsky @ 2026-01-21 15:46 UTC (permalink / raw)
To: Jason Gunthorpe, Alex Williamson
Cc: Sumit Semwal, Christian König, Alex Deucher, David Airlie,
Simona Vetter, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh,
Chia-I Wu, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi, Kevin Tian,
Joerg Roedel, Will Deacon, Robin Murphy, Felix Kuehling,
Ankit Agrawal, Vivek Kasireddy, linux-media, dri-devel,
linaro-mm-sig, linux-kernel, amd-gfx, virtualization, intel-xe,
linux-rdma, iommu, kvm
On Wed, Jan 21, 2026 at 11:41:37AM -0400, Jason Gunthorpe wrote:
> On Wed, Jan 21, 2026 at 04:47:01PM +0200, Leon Romanovsky wrote:
> > > We need to push an urgent -rc fix to implement a pin function here
> > > that always fails. That was missed and it means things like rdma can
> > > import vfio when the intention was to block that. It would be bad for
> > > that uAPI mistake to reach a released kernel.
> >
> > I don't see any urgency here. In the current kernel, the RDMA importer
> > prints a warning to indicate it was attached to the wrong exporter.
> > VFIO also invokes dma_buf_move_notify().
>
> The design of vfio was always that it must not work with RDMA because
> we cannot tolerate the errors that happen due to ignoring the
> move_notify.
>
> The entire purpose of this series could be stated as continuing to
> block RDMA while opening up other pining users.
>
> So it must be addressed urgently before someone builds an application
> relying on this connection.
Done, https://lore.kernel.org/all/20260121-vfio-add-pin-v1-1-4e04916b17f1@nvidia.com/T/#u
Thanks
>
> Jason
^ permalink raw reply [flat|nested] 20+ messages in thread
* ✗ Xe.CI.Full: failure for dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
` (11 preceding siblings ...)
2026-01-21 13:45 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2026-01-21 20:51 ` Patchwork
12 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2026-01-21 20:51 UTC (permalink / raw)
To: Leon Romanovsky; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 26620 bytes --]
== Series Details ==
Series: dma-buf: Use revoke mechanism to invalidate shared buffers (rev2)
URL : https://patchwork.freedesktop.org/series/160360/
State : failure
== Summary ==
CI Bug Log - changes from xe-4426-956025ffb8ada6041420e7df5f3311e139195474_FULL -> xe-pw-160360v2_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-160360v2_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-160360v2_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-160360v2_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@core_setmaster@master-drop-set-user:
- shard-bmg: [PASS][1] -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@core_setmaster@master-drop-set-user.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@core_setmaster@master-drop-set-user.html
Known issues
------------
Here are the changes found in xe-pw-160360v2_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_bw@linear-tiling-1-displays-1920x1080p:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#367])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#2887])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_chamelium_audio@hdmi-audio-edid:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#2252]) +1 other test skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_chamelium_audio@hdmi-audio-edid.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [PASS][6] -> [FAIL][7] ([Intel XE#6715])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-9/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_dirtyfb@psr-dirtyfb-ioctl:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#1508])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#4422])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats.html
* igt@kms_fbcon_fbt@fbc:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#4156])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_fbcon_fbt@fbc.html
* igt@kms_flip@flip-vs-blocking-wf-vblank:
- shard-bmg: [PASS][11] -> [DMESG-FAIL][12] ([Intel XE#5545]) +1 other test dmesg-fail
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_flip@flip-vs-blocking-wf-vblank.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_flip@flip-vs-blocking-wf-vblank.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#4141])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2311])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-wc:
- shard-lnl: [PASS][15] -> [DMESG-WARN][16] ([Intel XE#7063])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-wc.html
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#2313]) +3 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-blt.html
* igt@kms_pm_rpm@dpms-lpsp:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#836])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_pm_rpm@dpms-lpsp.html
* igt@kms_psr@fbc-pr-primary-render:
- shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_psr@fbc-pr-primary-render.html
* igt@kms_sharpness_filter@filter-suspend:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#6503])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_sharpness_filter@filter-suspend.html
* igt@kms_vblank@accuracy-idle:
- shard-bmg: [PASS][21] -> [INCOMPLETE][22] ([Intel XE#4488]) +1 other test incomplete
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-7/igt@kms_vblank@accuracy-idle.html
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-3/igt@kms_vblank@accuracy-idle.html
* igt@kms_vrr@cmrr@pipe-a-edp-1:
- shard-lnl: [PASS][23] -> [FAIL][24] ([Intel XE#4459]) +1 other test fail
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-lnl-5/igt@kms_vrr@cmrr@pipe-a-edp-1.html
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-lnl-2/igt@kms_vrr@cmrr@pipe-a-edp-1.html
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [PASS][25] -> [INCOMPLETE][26] ([Intel XE#6321])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-9/igt@xe_evict@evict-mixed-many-threads-small.html
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-1/igt@xe_evict@evict-mixed-many-threads-small.html
* igt@xe_exec_basic@multigpu-once-userptr-invalidate:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#2322]) +1 other test skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@xe_exec_basic@multigpu-once-userptr-invalidate.html
* igt@xe_exec_multi_queue@few-execs-preempt-mode-close-fd-smem:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#6874]) +2 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@xe_exec_multi_queue@few-execs-preempt-mode-close-fd-smem.html
* igt@xe_exec_reset@gt-reset-stress:
- shard-bmg: [PASS][29] -> [DMESG-WARN][30] ([Intel XE#7023])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-10/igt@xe_exec_reset@gt-reset-stress.html
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-1/igt@xe_exec_reset@gt-reset-stress.html
* igt@xe_exec_system_allocator@threads-many-execqueues-malloc-race-nomemset:
- shard-bmg: [PASS][31] -> [SKIP][32] ([Intel XE#6703]) +107 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@xe_exec_system_allocator@threads-many-execqueues-malloc-race-nomemset.html
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@xe_exec_system_allocator@threads-many-execqueues-malloc-race-nomemset.html
* igt@xe_exec_system_allocator@threads-many-large-execqueues-mmap-remap-dontunmap:
- shard-bmg: [PASS][33] -> [DMESG-FAIL][34] ([Intel XE#5213] / [Intel XE#6652])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-10/igt@xe_exec_system_allocator@threads-many-large-execqueues-mmap-remap-dontunmap.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@xe_exec_system_allocator@threads-many-large-execqueues-mmap-remap-dontunmap.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-new-huge:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#4943]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-new-huge.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-remap-madvise:
- shard-bmg: [PASS][36] -> [SKIP][37] ([Intel XE#6557] / [Intel XE#6703]) +2 other tests skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-remap-madvise.html
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-remap-madvise.html
* igt@xe_mmap@small-bar:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#586])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@xe_mmap@small-bar.html
* igt@xe_pm@s4-mocs:
- shard-lnl: [PASS][39] -> [DMESG-WARN][40] ([Intel XE#7024])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-lnl-2/igt@xe_pm@s4-mocs.html
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-lnl-4/igt@xe_pm@s4-mocs.html
#### Possible fixes ####
* igt@kms_async_flips@async-flip-with-page-flip-events-linear:
- shard-lnl: [FAIL][41] ([Intel XE#5993]) -> [PASS][42] +3 other tests pass
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-lnl-1/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-lnl-1/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
* igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw:
- shard-lnl: [DMESG-WARN][43] ([Intel XE#7063]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-lnl-4/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-lnl-1/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html
#### Warnings ####
* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-bmg: [SKIP][45] ([Intel XE#2327]) -> [SKIP][46] ([Intel XE#6703]) +1 other test skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-10/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-bmg: [SKIP][47] ([Intel XE#1124]) -> [SKIP][48] ([Intel XE#6703]) +1 other test skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-10/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p:
- shard-bmg: [SKIP][49] ([Intel XE#2314] / [Intel XE#2894]) -> [SKIP][50] ([Intel XE#6703])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-10/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html
* igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc:
- shard-bmg: [SKIP][51] ([Intel XE#2887]) -> [SKIP][52] ([Intel XE#6703]) +2 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc.html
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_chamelium_hpd@hdmi-hpd-storm-disable:
- shard-bmg: [SKIP][53] ([Intel XE#2252]) -> [SKIP][54] ([Intel XE#6703]) +1 other test skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html
* igt@kms_content_protection@dp-mst-type-1:
- shard-bmg: [SKIP][55] ([Intel XE#2390] / [Intel XE#6974]) -> [SKIP][56] ([Intel XE#6703])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-10/igt@kms_content_protection@dp-mst-type-1.html
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_content_protection@dp-mst-type-1.html
* igt@kms_content_protection@legacy:
- shard-bmg: [FAIL][57] ([Intel XE#1178] / [Intel XE#3304]) -> [SKIP][58] ([Intel XE#6703])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_content_protection@legacy.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_content_protection@legacy.html
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-bmg: [SKIP][59] ([Intel XE#2321]) -> [SKIP][60] ([Intel XE#6703])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_cursor_crc@cursor-sliding-512x512.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_cursor_crc@cursor-sliding-512x512.html
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
- shard-bmg: [SKIP][61] ([Intel XE#4210]) -> [SKIP][62] ([Intel XE#6703])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling:
- shard-bmg: [SKIP][63] ([Intel XE#2293] / [Intel XE#2380]) -> [SKIP][64] ([Intel XE#6703]) +1 other test skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-10/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff:
- shard-bmg: [SKIP][65] ([Intel XE#2311]) -> [SKIP][66] ([Intel XE#6703]) +3 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-blt:
- shard-bmg: [SKIP][67] ([Intel XE#4141]) -> [SKIP][68] ([Intel XE#6703]) +1 other test skip
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-blt.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt:
- shard-bmg: [SKIP][69] ([Intel XE#2313]) -> [SKIP][70] ([Intel XE#6703]) +4 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt.html
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][71] ([Intel XE#3544]) -> [SKIP][72] ([Intel XE#3374] / [Intel XE#3544])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-2/igt@kms_hdr@brightness-with-hdr.html
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-8/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area:
- shard-bmg: [SKIP][73] ([Intel XE#1406] / [Intel XE#1489]) -> [SKIP][74] ([Intel XE#1406] / [Intel XE#6703]) +1 other test skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area.html
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area.html
* igt@kms_psr@pr-primary-render:
- shard-bmg: [SKIP][75] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) -> [SKIP][76] ([Intel XE#1406] / [Intel XE#6703]) +1 other test skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_psr@pr-primary-render.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@kms_psr@pr-primary-render.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][77] ([Intel XE#2426]) -> [SKIP][78] ([Intel XE#2509])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-4/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@xe_eudebug@basic-vms:
- shard-bmg: [SKIP][79] ([Intel XE#4837]) -> [SKIP][80] ([Intel XE#6703])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@xe_eudebug@basic-vms.html
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@xe_eudebug@basic-vms.html
* igt@xe_eudebug_online@writes-caching-vram-bb-sram-target-sram:
- shard-bmg: [SKIP][81] ([Intel XE#4837] / [Intel XE#6665]) -> [SKIP][82] ([Intel XE#6703])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@xe_eudebug_online@writes-caching-vram-bb-sram-target-sram.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@xe_eudebug_online@writes-caching-vram-bb-sram-target-sram.html
* igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-rebind:
- shard-bmg: [SKIP][83] ([Intel XE#2322]) -> [SKIP][84] ([Intel XE#6703])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-10/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-rebind.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-rebind.html
* igt@xe_exec_multi_queue@many-queues-preempt-mode-priority-smem:
- shard-bmg: [SKIP][85] ([Intel XE#6874]) -> [SKIP][86] ([Intel XE#6703]) +5 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@xe_exec_multi_queue@many-queues-preempt-mode-priority-smem.html
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@xe_exec_multi_queue@many-queues-preempt-mode-priority-smem.html
* igt@xe_exec_system_allocator@threads-many-large-mmap-huge-nomemset:
- shard-bmg: [SKIP][87] ([Intel XE#4943]) -> [SKIP][88] ([Intel XE#6703]) +4 other tests skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@xe_exec_system_allocator@threads-many-large-mmap-huge-nomemset.html
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@xe_exec_system_allocator@threads-many-large-mmap-huge-nomemset.html
* igt@xe_query@multigpu-query-invalid-size:
- shard-bmg: [SKIP][89] ([Intel XE#944]) -> [SKIP][90] ([Intel XE#6703])
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4426-956025ffb8ada6041420e7df5f3311e139195474/shard-bmg-3/igt@xe_query@multigpu-query-invalid-size.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/shard-bmg-2/igt@xe_query@multigpu-query-invalid-size.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
[Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
[Intel XE#4210]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4210
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
[Intel XE#4488]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4488
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5213]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5213
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
[Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6557]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6557
[Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
[Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
[Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
[Intel XE#6715]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6715
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#7023]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7023
[Intel XE#7024]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7024
[Intel XE#7063]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7063
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-4426-956025ffb8ada6041420e7df5f3311e139195474 -> xe-pw-160360v2
IGT_8709: 16ce286cac6acc9669a1c758572ae9fceb483c46 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4426-956025ffb8ada6041420e7df5f3311e139195474: 956025ffb8ada6041420e7df5f3311e139195474
xe-pw-160360v2: 160360v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160360v2/index.html
[-- Attachment #2: Type: text/html, Size: 31032 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2026-01-22 13:38 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-21 12:59 [PATCH v4 0/8] dma-buf: Use revoke mechanism to invalidate shared buffers Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 1/8] dma-buf: Rename .move_notify() callback to a clearer identifier Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 2/8] dma-buf: Rename dma_buf_move_notify() to dma_buf_invalidate_mappings() Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 3/8] dma-buf: Always build with DMABUF_MOVE_NOTIFY Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 4/8] dma-buf: Make .invalidate_mapping() truly optional Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 5/8] dma-buf: Add check function for revoke semantics Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 6/8] iommufd: Pin dma-buf importer " Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 7/8] vfio: Wait for dma-buf invalidation to complete Leon Romanovsky
2026-01-21 12:59 ` [PATCH v4 8/8] vfio: Validate dma-buf revocation semantics Leon Romanovsky
[not found] ` <20260121134712.GZ961572@ziepe.ca>
2026-01-21 14:18 ` Christian König
2026-01-21 14:22 ` Pranjal Shrivastava
2026-01-21 14:25 ` Leon Romanovsky
2026-01-21 14:47 ` Pranjal Shrivastava
2026-01-21 14:47 ` Leon Romanovsky
[not found] ` <20260121154137.GD961572@ziepe.ca>
2026-01-21 15:46 ` Leon Romanovsky
2026-01-21 13:06 ` ✗ CI.checkpatch: warning for dma-buf: Use revoke mechanism to invalidate shared buffers (rev2) Patchwork
2026-01-21 13:07 ` ✓ CI.KUnit: success " Patchwork
2026-01-21 13:22 ` ✗ CI.checksparse: warning " Patchwork
2026-01-21 13:45 ` ✓ Xe.CI.BAT: success " Patchwork
2026-01-21 20:51 ` ✗ Xe.CI.Full: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox