* [PATCH v2 1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo
@ 2026-01-19 15:03 Farah Kassabri
2026-01-19 15:03 ` [PATCH v2 2/2] drm/xe: add kernel VM BO unbind helper Farah Kassabri
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Farah Kassabri @ 2026-01-19 15:03 UTC (permalink / raw)
To: intel-xe; +Cc: farah.kassabri, ilia.levi
The existing function `xe_vm_bind_kernel_bo` was originally used to bind
a buffer object to the kernel VM, but the name implies it only works for
kernel BOs. To clarify its purpose, the function is renamed to
`xe_kernel_vm_bind_bo`.
Signed-off-by: Farah Kassabri <farah.kassabri@intel.com>
---
drivers/gpu/drm/xe/xe_pxp_submit.c | 2 +-
drivers/gpu/drm/xe/xe_vm.c | 7 +++----
drivers/gpu/drm/xe/xe_vm.h | 2 +-
3 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.c b/drivers/gpu/drm/xe/xe_pxp_submit.c
index e60526e30030..e23ee12d8e1d 100644
--- a/drivers/gpu/drm/xe/xe_pxp_submit.c
+++ b/drivers/gpu/drm/xe/xe_pxp_submit.c
@@ -130,7 +130,7 @@ static int allocate_gsc_client_resources(struct xe_gt *gt,
if (err)
goto vm_out;
- fence = xe_vm_bind_kernel_bo(vm, bo, NULL, 0, XE_CACHE_WB);
+ fence = xe_vm_kernel_bind_bo(vm, bo, NULL, 0, XE_CACHE_WB);
if (IS_ERR(fence)) {
err = PTR_ERR(fence);
goto bo_out;
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 694f592a0f01..a27145a4137e 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -3830,20 +3830,19 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
}
/**
- * xe_vm_bind_kernel_bo - bind a kernel BO to a VM
+ * xe_vm_kernel_bind_bo - bind a BO to a kernel owned VM
* @vm: VM to bind the BO to
* @bo: BO to bind
* @q: exec queue to use for the bind (optional)
* @addr: address at which to bind the BO
* @cache_lvl: PAT cache level to use
*
- * Execute a VM bind map operation on a kernel-owned BO to bind it into a
- * kernel-owned VM.
+ * Execute a VM bind map operation on a BO to bind it into a kernel-owned VM.
*
* Returns a dma_fence to track the binding completion if the job to do so was
* successfully submitted, an error pointer otherwise.
*/
-struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo,
+struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo,
struct xe_exec_queue *q, u64 addr,
enum xe_cache_level cache_lvl)
{
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 6cc98df47291..ff32f43aa1d8 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -268,7 +268,7 @@ int xe_vm_lock_vma(struct drm_exec *exec, struct xe_vma *vma);
int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec,
unsigned int num_fences);
-struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo,
+struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo,
struct xe_exec_queue *q, u64 addr,
enum xe_cache_level cache_lvl);
--
2.43.0
---------------------------------------------------------------------
Intel Israel (74) Limited
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 2/2] drm/xe: add kernel VM BO unbind helper 2026-01-19 15:03 [PATCH v2 1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo Farah Kassabri @ 2026-01-19 15:03 ` Farah Kassabri 2026-01-20 22:56 ` Matthew Brost 2026-02-06 0:49 ` Matthew Brost 2026-01-19 15:10 ` ✗ CI.KUnit: failure for series starting with [v2,1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo Patchwork 2026-01-20 22:51 ` [PATCH v2 1/2] " Matthew Brost 2 siblings, 2 replies; 6+ messages in thread From: Farah Kassabri @ 2026-01-19 15:03 UTC (permalink / raw) To: intel-xe; +Cc: farah.kassabri, ilia.levi Add xe_kernel_vm_unbind_bo() as the counterpart to xe_kernel_vm_bind_bo() to provide symmetry in the kernel VM BO lifecycle. The new helper allows explicit unbinding of buffer objects from the kernel VM, enabling proper cleanup and preventing stale kernel VM mappings when BOs are no longer needed. Signed-off-by: Farah Kassabri <farah.kassabri@intel.com> Reviewed-by: Ilia Levi <ilia.levi@intel.com> Changes in v2: pass cache_lvl argument to the map operation instead of 0. --- drivers/gpu/drm/xe/xe_vm.c | 59 ++++++++++++++++++++++++++++++++------ drivers/gpu/drm/xe/xe_vm.h | 3 ++ 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c index a27145a4137e..425f406712b8 100644 --- a/drivers/gpu/drm/xe/xe_vm.c +++ b/drivers/gpu/drm/xe/xe_vm.c @@ -3830,21 +3830,22 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file) } /** - * xe_vm_kernel_bind_bo - bind a BO to a kernel owned VM + * __xe_kernel_vm_bind_bo - internal helper to bind/unbind a BO to/from kernel owned VM * @vm: VM to bind the BO to * @bo: BO to bind * @q: exec queue to use for the bind (optional) * @addr: address at which to bind the BO * @cache_lvl: PAT cache level to use + * @do_bind: true for bind, false for unbind * - * Execute a VM bind map operation on a BO to bind it into a kernel-owned VM. + * Common code for binding and un-binding a BO. * * Returns a dma_fence to track the binding completion if the job to do so was * successfully submitted, an error pointer otherwise. */ -struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, - struct xe_exec_queue *q, u64 addr, - enum xe_cache_level cache_lvl) +static struct dma_fence *__xe_kernel_vm_bind_bo(struct xe_vm *vm, struct xe_bo *bo, + struct xe_exec_queue *q, u64 addr, + enum xe_cache_level cache_lvl, bool do_bind) { struct xe_vma_ops vops; struct drm_gpuva_ops *ops = NULL; @@ -3860,9 +3861,13 @@ struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, xe_vma_ops_init(&vops, vm, q, NULL, 0); - ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, xe_bo_size(bo), - DRM_XE_VM_BIND_OP_MAP, 0, 0, - vm->xe->pat.idx[cache_lvl]); + if (do_bind) + ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, xe_bo_size(bo), + DRM_XE_VM_BIND_OP_MAP, 0, 0, + vm->xe->pat.idx[cache_lvl]); + else + ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, xe_bo_size(bo), + DRM_XE_VM_BIND_OP_UNMAP, 0, 0, 0); if (IS_ERR(ops)) { err = PTR_ERR(ops); goto release_vm_lock; @@ -3903,6 +3908,44 @@ struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, return fence; } +/** + * xe_vm_kernel_bind_bo - bind a BO to a kernel owned VM + * @vm: VM to bind the BO to + * @bo: BO to bind + * @q: exec queue to use for the bind (optional) + * @addr: address at which to bind the BO + * @cache_lvl: PAT cache level to use + * + * Execute a VM bind map operation on a BO to bind it into a kernel-owned VM. + * + * Returns a dma_fence to track the binding completion if the job to do so was + * successfully submitted, an error pointer otherwise. + */ +struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, + struct xe_exec_queue *q, u64 addr, + enum xe_cache_level cache_lvl) +{ + return __xe_kernel_vm_bind_bo(vm, bo, q, addr, cache_lvl, true); +} + +/** + * xe_vm_kernel_unbind_bo - unbind a BO from a kernel owned VM + * @vm: VM to unbind the BO from + * @bo: BO to unbind + * @q: exec queue to use for the unbind (optional) + * @addr: address at which the BO was bound + * + * Execute a VM bind unmap operation on a BO to remove it from a kernel-owned VM. + * + * Returns a dma_fence to track the unbinding completion if the job to do so was + * successfully submitted, an error pointer otherwise. + */ +struct dma_fence *xe_vm_kernel_unbind_bo(struct xe_vm *vm, struct xe_bo *bo, + struct xe_exec_queue *q, u64 addr) +{ + return __xe_kernel_vm_bind_bo(vm, bo, q, addr, 0, false); +} + /** * xe_vm_lock() - Lock the vm's dma_resv object * @vm: The struct xe_vm whose lock is to be locked diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h index ff32f43aa1d8..b87e80227c79 100644 --- a/drivers/gpu/drm/xe/xe_vm.h +++ b/drivers/gpu/drm/xe/xe_vm.h @@ -272,6 +272,9 @@ struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, struct xe_exec_queue *q, u64 addr, enum xe_cache_level cache_lvl); +struct dma_fence *xe_vm_kernel_unbind_bo(struct xe_vm *vm, struct xe_bo *bo, + struct xe_exec_queue *q, u64 addr); + void xe_vm_resume_rebind_worker(struct xe_vm *vm); /** -- 2.43.0 --------------------------------------------------------------------- Intel Israel (74) Limited This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] drm/xe: add kernel VM BO unbind helper 2026-01-19 15:03 ` [PATCH v2 2/2] drm/xe: add kernel VM BO unbind helper Farah Kassabri @ 2026-01-20 22:56 ` Matthew Brost 2026-02-06 0:49 ` Matthew Brost 1 sibling, 0 replies; 6+ messages in thread From: Matthew Brost @ 2026-01-20 22:56 UTC (permalink / raw) To: Farah Kassabri; +Cc: intel-xe, ilia.levi On Mon, Jan 19, 2026 at 05:03:30PM +0200, Farah Kassabri wrote: > Add xe_kernel_vm_unbind_bo() as the counterpart to > xe_kernel_vm_bind_bo() to provide symmetry in the kernel VM BO > lifecycle. > > The new helper allows explicit unbinding of buffer objects from > the kernel VM, enabling proper cleanup and preventing stale > kernel VM mappings when BOs are no longer needed. > > Signed-off-by: Farah Kassabri <farah.kassabri@intel.com> > Reviewed-by: Ilia Levi <ilia.levi@intel.com> > > Changes in v2: > pass cache_lvl argument to the map operation instead of 0. > --- > drivers/gpu/drm/xe/xe_vm.c | 59 ++++++++++++++++++++++++++++++++------ > drivers/gpu/drm/xe/xe_vm.h | 3 ++ > 2 files changed, 54 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c > index a27145a4137e..425f406712b8 100644 > --- a/drivers/gpu/drm/xe/xe_vm.c > +++ b/drivers/gpu/drm/xe/xe_vm.c > @@ -3830,21 +3830,22 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file) > } > > /** > - * xe_vm_kernel_bind_bo - bind a BO to a kernel owned VM > + * __xe_kernel_vm_bind_bo - internal helper to bind/unbind a BO to/from kernel owned VM > * @vm: VM to bind the BO to > * @bo: BO to bind > * @q: exec queue to use for the bind (optional) > * @addr: address at which to bind the BO > * @cache_lvl: PAT cache level to use > + * @do_bind: true for bind, false for unbind > * > - * Execute a VM bind map operation on a BO to bind it into a kernel-owned VM. > + * Common code for binding and un-binding a BO. > * > * Returns a dma_fence to track the binding completion if the job to do so was > * successfully submitted, an error pointer otherwise. > */ > -struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > - struct xe_exec_queue *q, u64 addr, > - enum xe_cache_level cache_lvl) > +static struct dma_fence *__xe_kernel_vm_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > + struct xe_exec_queue *q, u64 addr, > + enum xe_cache_level cache_lvl, bool do_bind) > { > struct xe_vma_ops vops; > struct drm_gpuva_ops *ops = NULL; > @@ -3860,9 +3861,13 @@ struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > > xe_vma_ops_init(&vops, vm, q, NULL, 0); > > - ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, xe_bo_size(bo), > - DRM_XE_VM_BIND_OP_MAP, 0, 0, > - vm->xe->pat.idx[cache_lvl]); > + if (do_bind) > + ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, xe_bo_size(bo), > + DRM_XE_VM_BIND_OP_MAP, 0, 0, > + vm->xe->pat.idx[cache_lvl]); > + else > + ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, xe_bo_size(bo), > + DRM_XE_VM_BIND_OP_UNMAP, 0, 0, 0); > if (IS_ERR(ops)) { > err = PTR_ERR(ops); > goto release_vm_lock; > @@ -3903,6 +3908,44 @@ struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > return fence; > } > > +/** > + * xe_vm_kernel_bind_bo - bind a BO to a kernel owned VM > + * @vm: VM to bind the BO to > + * @bo: BO to bind > + * @q: exec queue to use for the bind (optional) > + * @addr: address at which to bind the BO > + * @cache_lvl: PAT cache level to use > + * > + * Execute a VM bind map operation on a BO to bind it into a kernel-owned VM. > + * > + * Returns a dma_fence to track the binding completion if the job to do so was > + * successfully submitted, an error pointer otherwise. > + */ > +struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > + struct xe_exec_queue *q, u64 addr, > + enum xe_cache_level cache_lvl) > +{ > + return __xe_kernel_vm_bind_bo(vm, bo, q, addr, cache_lvl, true); > +} > + > +/** > + * xe_vm_kernel_unbind_bo - unbind a BO from a kernel owned VM > + * @vm: VM to unbind the BO from > + * @bo: BO to unbind > + * @q: exec queue to use for the unbind (optional) > + * @addr: address at which the BO was bound > + * > + * Execute a VM bind unmap operation on a BO to remove it from a kernel-owned VM. > + * > + * Returns a dma_fence to track the unbinding completion if the job to do so was > + * successfully submitted, an error pointer otherwise. > + */ > +struct dma_fence *xe_vm_kernel_unbind_bo(struct xe_vm *vm, struct xe_bo *bo, > + struct xe_exec_queue *q, u64 addr) > +{ > + return __xe_kernel_vm_bind_bo(vm, bo, q, addr, 0, false); > +} > + > /** > * xe_vm_lock() - Lock the vm's dma_resv object > * @vm: The struct xe_vm whose lock is to be locked > diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h > index ff32f43aa1d8..b87e80227c79 100644 > --- a/drivers/gpu/drm/xe/xe_vm.h > +++ b/drivers/gpu/drm/xe/xe_vm.h > @@ -272,6 +272,9 @@ struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > struct xe_exec_queue *q, u64 addr, > enum xe_cache_level cache_lvl); > > +struct dma_fence *xe_vm_kernel_unbind_bo(struct xe_vm *vm, struct xe_bo *bo, > + struct xe_exec_queue *q, u64 addr); > + > void xe_vm_resume_rebind_worker(struct xe_vm *vm); > > /** > -- > 2.43.0 > > --------------------------------------------------------------------- > Intel Israel (74) Limited > You should remove your footer for public mailing list posts. But patch LGTM. Reviewed-by: Matthew Brost <matthew.brost@intel.com> > This e-mail and any attachments may contain confidential material for > the sole use of the intended recipient(s). Any review or distribution > by others is strictly prohibited. If you are not the intended > recipient, please contact the sender and delete all copies. > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] drm/xe: add kernel VM BO unbind helper 2026-01-19 15:03 ` [PATCH v2 2/2] drm/xe: add kernel VM BO unbind helper Farah Kassabri 2026-01-20 22:56 ` Matthew Brost @ 2026-02-06 0:49 ` Matthew Brost 1 sibling, 0 replies; 6+ messages in thread From: Matthew Brost @ 2026-02-06 0:49 UTC (permalink / raw) To: Farah Kassabri; +Cc: intel-xe, ilia.levi On Mon, Jan 19, 2026 at 05:03:30PM +0200, Farah Kassabri wrote: > Add xe_kernel_vm_unbind_bo() as the counterpart to > xe_kernel_vm_bind_bo() to provide symmetry in the kernel VM BO > lifecycle. > > The new helper allows explicit unbinding of buffer objects from > the kernel VM, enabling proper cleanup and preventing stale > kernel VM mappings when BOs are no longer needed. > > Signed-off-by: Farah Kassabri <farah.kassabri@intel.com> > Reviewed-by: Ilia Levi <ilia.levi@intel.com> > I was a bit hasty on my previous RB, thought about this more and have some more feedback. > Changes in v2: > pass cache_lvl argument to the map operation instead of 0. > --- > drivers/gpu/drm/xe/xe_vm.c | 59 ++++++++++++++++++++++++++++++++------ > drivers/gpu/drm/xe/xe_vm.h | 3 ++ > 2 files changed, 54 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c > index a27145a4137e..425f406712b8 100644 > --- a/drivers/gpu/drm/xe/xe_vm.c > +++ b/drivers/gpu/drm/xe/xe_vm.c > @@ -3830,21 +3830,22 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file) > } > > /** > - * xe_vm_kernel_bind_bo - bind a BO to a kernel owned VM > + * __xe_kernel_vm_bind_bo - internal helper to bind/unbind a BO to/from kernel owned VM > * @vm: VM to bind the BO to > * @bo: BO to bind > * @q: exec queue to use for the bind (optional) > * @addr: address at which to bind the BO > * @cache_lvl: PAT cache level to use > + * @do_bind: true for bind, false for unbind > * > - * Execute a VM bind map operation on a BO to bind it into a kernel-owned VM. > + * Common code for binding and un-binding a BO. > * > * Returns a dma_fence to track the binding completion if the job to do so was > * successfully submitted, an error pointer otherwise. > */ > -struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > - struct xe_exec_queue *q, u64 addr, > - enum xe_cache_level cache_lvl) > +static struct dma_fence *__xe_kernel_vm_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > + struct xe_exec_queue *q, u64 addr, > + enum xe_cache_level cache_lvl, bool do_bind) To make this a bit more robust / flexible - how about: u64 range, u64 offset, u32 operation arguments which then are passed into vm_bind_ioctl_ops_create. Then to reflect this is a kernel binding op... s/__xe_kernel_vm_bind_bo/__xe_kernel_vm_bind_op > { > struct xe_vma_ops vops; > struct drm_gpuva_ops *ops = NULL; > @@ -3860,9 +3861,13 @@ struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > > xe_vma_ops_init(&vops, vm, q, NULL, 0); > > - ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, xe_bo_size(bo), > - DRM_XE_VM_BIND_OP_MAP, 0, 0, > - vm->xe->pat.idx[cache_lvl]); > + if (do_bind) We then can drop this if statement. > + ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, xe_bo_size(bo), s/xe_bo_size(bo)/range to avoid UNMAP having to pass in a BO which isn't required. also s/bo, 0,/bo, offsets/ also s/DRM_XE_VM_BIND_OP_MAP/operation > + DRM_XE_VM_BIND_OP_MAP, 0, 0, > + vm->xe->pat.idx[cache_lvl]); > + else > + ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, xe_bo_size(bo), > + DRM_XE_VM_BIND_OP_UNMAP, 0, 0, 0); > if (IS_ERR(ops)) { > err = PTR_ERR(ops); > goto release_vm_lock; > @@ -3903,6 +3908,44 @@ struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > return fence; > } > > +/** > + * xe_vm_kernel_bind_bo - bind a BO to a kernel owned VM > + * @vm: VM to bind the BO to > + * @bo: BO to bind > + * @q: exec queue to use for the bind (optional) > + * @addr: address at which to bind the BO > + * @cache_lvl: PAT cache level to use > + * > + * Execute a VM bind map operation on a BO to bind it into a kernel-owned VM. > + * > + * Returns a dma_fence to track the binding completion if the job to do so was > + * successfully submitted, an error pointer otherwise. > + */ > +struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > + struct xe_exec_queue *q, u64 addr, > + enum xe_cache_level cache_lvl) > +{ You could keep the signature the same, but it probably makes sense to add 'u64 range, u64 offset' here and update the existing callers. > + return __xe_kernel_vm_bind_bo(vm, bo, q, addr, cache_lvl, true); > +} > + > +/** > + * xe_vm_kernel_unbind_bo - unbind a BO from a kernel owned VM > + * @vm: VM to unbind the BO from > + * @bo: BO to unbind > + * @q: exec queue to use for the unbind (optional) > + * @addr: address at which the BO was bound > + * > + * Execute a VM bind unmap operation on a BO to remove it from a kernel-owned VM. > + * > + * Returns a dma_fence to track the unbinding completion if the job to do so was > + * successfully submitted, an error pointer otherwise. > + */ > +struct dma_fence *xe_vm_kernel_unbind_bo(struct xe_vm *vm, struct xe_bo *bo, > + struct xe_exec_queue *q, u64 addr) > +{ This signature should change to roughly: xe_vm_kernel_unbind(struct xe_vm *vm, u64 addr, u64 range); Matt > + return __xe_kernel_vm_bind_bo(vm, bo, q, addr, 0, false); > +} > + > /** > * xe_vm_lock() - Lock the vm's dma_resv object > * @vm: The struct xe_vm whose lock is to be locked > diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h > index ff32f43aa1d8..b87e80227c79 100644 > --- a/drivers/gpu/drm/xe/xe_vm.h > +++ b/drivers/gpu/drm/xe/xe_vm.h > @@ -272,6 +272,9 @@ struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > struct xe_exec_queue *q, u64 addr, > enum xe_cache_level cache_lvl); > > +struct dma_fence *xe_vm_kernel_unbind_bo(struct xe_vm *vm, struct xe_bo *bo, > + struct xe_exec_queue *q, u64 addr); > + > void xe_vm_resume_rebind_worker(struct xe_vm *vm); > > /** > -- > 2.43.0 > > --------------------------------------------------------------------- > Intel Israel (74) Limited > > This e-mail and any attachments may contain confidential material for > the sole use of the intended recipient(s). Any review or distribution > by others is strictly prohibited. If you are not the intended > recipient, please contact the sender and delete all copies. > ^ permalink raw reply [flat|nested] 6+ messages in thread
* ✗ CI.KUnit: failure for series starting with [v2,1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo 2026-01-19 15:03 [PATCH v2 1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo Farah Kassabri 2026-01-19 15:03 ` [PATCH v2 2/2] drm/xe: add kernel VM BO unbind helper Farah Kassabri @ 2026-01-19 15:10 ` Patchwork 2026-01-20 22:51 ` [PATCH v2 1/2] " Matthew Brost 2 siblings, 0 replies; 6+ messages in thread From: Patchwork @ 2026-01-19 15:10 UTC (permalink / raw) To: Farah Kassabri; +Cc: intel-xe == Series Details == Series: series starting with [v2,1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo URL : https://patchwork.freedesktop.org/series/160308/ State : failure == Summary == + trap cleanup EXIT + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [15:08:51] Configuring KUnit Kernel ... Generating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [15:08:55] 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=25 [15:09:35] Starting KUnit Kernel (1/1)... [15:09:35] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [15:09:35] ================== guc_buf (11 subtests) =================== [15:09:35] [PASSED] test_smallest [15:09:35] [PASSED] test_largest [15:09:35] [PASSED] test_granular [15:09:35] [PASSED] test_unique [15:09:35] [PASSED] test_overlap [15:09:35] [PASSED] test_reusable [15:09:35] [PASSED] test_too_big [15:09:35] [PASSED] test_flush [15:09:35] [PASSED] test_lookup [15:09:35] [PASSED] test_data [15:09:35] [PASSED] test_class [15:09:35] ===================== [PASSED] guc_buf ===================== [15:09:35] =================== guc_dbm (7 subtests) =================== [15:09:35] [PASSED] test_empty [15:09:35] [PASSED] test_default [15:09:35] ======================== test_size ======================== [15:09:35] [PASSED] 4 [15:09:35] [PASSED] 8 [15:09:35] [PASSED] 32 [15:09:35] [PASSED] 256 [15:09:35] ==================== [PASSED] test_size ==================== [15:09:35] ======================= test_reuse ======================== [15:09:35] [PASSED] 4 [15:09:35] [PASSED] 8 [15:09:35] [PASSED] 32 [15:09:35] [PASSED] 256 [15:09:35] =================== [PASSED] test_reuse ==================== [15:09:35] =================== test_range_overlap ==================== [15:09:35] [PASSED] 4 [15:09:35] [PASSED] 8 [15:09:35] [PASSED] 32 [15:09:35] [PASSED] 256 [15:09:35] =============== [PASSED] test_range_overlap ================ [15:09:35] =================== test_range_compact ==================== [15:09:35] [PASSED] 4 [15:09:35] [PASSED] 8 [15:09:35] [PASSED] 32 [15:09:35] [PASSED] 256 [15:09:35] =============== [PASSED] test_range_compact ================ [15:09:35] ==================== test_range_spare ===================== [15:09:35] [PASSED] 4 [15:09:35] [PASSED] 8 [15:09:35] [PASSED] 32 [15:09:35] [PASSED] 256 [15:09:35] ================ [PASSED] test_range_spare ================= [15:09:35] ===================== [PASSED] guc_dbm ===================== [15:09:35] =================== guc_idm (6 subtests) =================== [15:09:35] [PASSED] bad_init [15:09:35] [PASSED] no_init [15:09:35] [PASSED] init_fini [15:09:35] [PASSED] check_used [15:09:35] [PASSED] check_quota [15:09:35] [PASSED] check_all [15:09:35] ===================== [PASSED] guc_idm ===================== [15:09:35] ================== no_relay (3 subtests) =================== [15:09:35] [PASSED] xe_drops_guc2pf_if_not_ready [15:09:35] [PASSED] xe_drops_guc2vf_if_not_ready [15:09:35] [PASSED] xe_rejects_send_if_not_ready [15:09:35] ==================== [PASSED] no_relay ===================== [15:09:35] ================== pf_relay (14 subtests) ================== [15:09:35] [PASSED] pf_rejects_guc2pf_too_short [15:09:35] [PASSED] pf_rejects_guc2pf_too_long [15:09:35] [PASSED] pf_rejects_guc2pf_no_payload [15:09:35] [PASSED] pf_fails_no_payload [15:09:35] [PASSED] pf_fails_bad_origin [15:09:35] [PASSED] pf_fails_bad_type [15:09:35] [PASSED] pf_txn_reports_error [15:09:35] [PASSED] pf_txn_sends_pf2guc [15:09:35] [PASSED] pf_sends_pf2guc [15:09:35] [SKIPPED] pf_loopback_nop [15:09:35] [SKIPPED] pf_loopback_echo [15:09:35] [SKIPPED] pf_loopback_fail [15:09:35] [SKIPPED] pf_loopback_busy [15:09:35] [SKIPPED] pf_loopback_retry [15:09:35] ==================== [PASSED] pf_relay ===================== [15:09:35] ================== vf_relay (3 subtests) =================== [15:09:35] [PASSED] vf_rejects_guc2vf_too_short [15:09:35] [PASSED] vf_rejects_guc2vf_too_long [15:09:35] [PASSED] vf_rejects_guc2vf_no_payload [15:09:35] ==================== [PASSED] vf_relay ===================== [15:09:35] ================ pf_gt_config (6 subtests) ================= [15:09:35] [PASSED] fair_contexts_1vf [15:09:35] [PASSED] fair_doorbells_1vf [15:09:35] [PASSED] fair_ggtt_1vf [15:09:35] ====================== fair_contexts ====================== [15:09:35] [PASSED] 1 VF [15:09:35] [PASSED] 2 VFs [15:09:35] [PASSED] 3 VFs [15:09:35] [PASSED] 4 VFs [15:09:35] [PASSED] 5 VFs [15:09:35] [PASSED] 6 VFs [15:09:35] [PASSED] 7 VFs [15:09:35] [PASSED] 8 VFs [15:09:35] [PASSED] 9 VFs [15:09:35] [PASSED] 10 VFs [15:09:35] [PASSED] 11 VFs [15:09:35] [PASSED] 12 VFs [15:09:35] [PASSED] 13 VFs [15:09:35] [PASSED] 14 VFs [15:09:35] [PASSED] 15 VFs [15:09:35] [PASSED] 16 VFs [15:09:35] [PASSED] 17 VFs [15:09:35] [PASSED] 18 VFs [15:09:35] [PASSED] 19 VFs [15:09:35] [PASSED] 20 VFs [15:09:35] [PASSED] 21 VFs [15:09:35] [PASSED] 22 VFs [15:09:35] [PASSED] 23 VFs [15:09:35] [PASSED] 24 VFs [15:09:35] [PASSED] 25 VFs [15:09:35] [PASSED] 26 VFs [15:09:35] [PASSED] 27 VFs [15:09:35] [PASSED] 28 VFs [15:09:35] [PASSED] 29 VFs [15:09:35] [PASSED] 30 VFs [15:09:35] [PASSED] 31 VFs [15:09:35] [PASSED] 32 VFs [15:09:35] [PASSED] 33 VFs [15:09:35] [PASSED] 34 VFs [15:09:35] [PASSED] 35 VFs [15:09:35] [PASSED] 36 VFs [15:09:35] [PASSED] 37 VFs [15:09:35] [PASSED] 38 VFs [15:09:35] [PASSED] 39 VFs [15:09:35] [PASSED] 40 VFs [15:09:35] [PASSED] 41 VFs [15:09:35] [PASSED] 42 VFs [15:09:35] [PASSED] 43 VFs [15:09:35] [PASSED] 44 VFs [15:09:35] [PASSED] 45 VFs [15:09:35] [PASSED] 46 VFs [15:09:35] [PASSED] 47 VFs [15:09:35] [PASSED] 48 VFs [15:09:35] [PASSED] 49 VFs [15:09:35] [PASSED] 50 VFs [15:09:35] [PASSED] 51 VFs [15:09:35] [PASSED] 52 VFs [15:09:35] [PASSED] 53 VFs [15:09:35] [PASSED] 54 VFs [15:09:35] [PASSED] 55 VFs [15:09:35] [PASSED] 56 VFs [15:09:35] [PASSED] 57 VFs [15:09:35] [PASSED] 58 VFs [15:09:35] [PASSED] 59 VFs [15:09:35] [PASSED] 60 VFs [15:09:35] [PASSED] 61 VFs [15:09:35] [PASSED] 62 VFs [15:09:35] [PASSED] 63 VFs [15:09:35] ================== [PASSED] fair_contexts ================== [15:09:35] ===================== fair_doorbells ====================== [15:09:35] [PASSED] 1 VF [15:09:35] [PASSED] 2 VFs [15:09:35] [PASSED] 3 VFs [15:09:35] [PASSED] 4 VFs [15:09:35] [PASSED] 5 VFs [15:09:35] [PASSED] 6 VFs [15:09:35] [PASSED] 7 VFs [15:09:35] [PASSED] 8 VFs [15:09:35] [PASSED] 9 VFs [15:09:35] [PASSED] 10 VFs [15:09:35] [PASSED] 11 VFs [15:09:35] [PASSED] 12 VFs [15:09:35] [PASSED] 13 VFs [15:09:35] [PASSED] 14 VFs [15:09:35] [PASSED] 15 VFs [15:09:35] [PASSED] 16 VFs [15:09:35] [PASSED] 17 VFs [15:09:35] [PASSED] 18 VFs [15:09:35] [PASSED] 19 VFs [15:09:35] [PASSED] 20 VFs [15:09:35] [PASSED] 21 VFs [15:09:35] [PASSED] 22 VFs [15:09:35] [PASSED] 23 VFs [15:09:35] [PASSED] 24 VFs [15:09:35] [PASSED] 25 VFs [15:09:35] [PASSED] 26 VFs [15:09:35] [PASSED] 27 VFs [15:09:35] [PASSED] 28 VFs [15:09:35] [PASSED] 29 VFs [15:09:35] [PASSED] 30 VFs [15:09:35] [PASSED] 31 VFs [15:09:35] [PASSED] 32 VFs [15:09:35] [PASSED] 33 VFs [15:09:35] [PASSED] 34 VFs [15:09:35] [PASSED] 35 VFs [15:09:35] [PASSED] 36 VFs [15:09:35] [PASSED] 37 VFs [15:09:35] [PASSED] 38 VFs [15:09:35] [PASSED] 39 VFs [15:09:35] [PASSED] 40 VFs [15:09:35] [PASSED] 41 VFs [15:09:35] [PASSED] 42 VFs [15:09:35] [PASSED] 43 VFs [15:09:35] [PASSED] 44 VFs [15:09:35] [PASSED] 45 VFs [15:09:35] [PASSED] 46 VFs [15:09:35] [PASSED] 47 VFs [15:09:35] [PASSED] 48 VFs [15:09:35] [PASSED] 49 VFs [15:09:35] [PASSED] 50 VFs [15:09:35] [PASSED] 51 VFs [15:09:35] [PASSED] 52 VFs [15:09:35] [PASSED] 53 VFs [15:09:35] [PASSED] 54 VFs [15:09:35] [PASSED] 55 VFs [15:09:35] [PASSED] 56 VFs [15:09:35] [PASSED] 57 VFs [15:09:35] [PASSED] 58 VFs [15:09:35] [PASSED] 59 VFs [15:09:35] [PASSED] 60 VFs [15:09:35] [PASSED] 61 VFs [15:09:35] [PASSED] 62 VFs [15:09:35] [PASSED] 63 VFs [15:09:35] ================= [PASSED] fair_doorbells ================== [15:09:35] ======================== fair_ggtt ======================== [15:09:35] [PASSED] 1 VF [15:09:35] [PASSED] 2 VFs [15:09:35] [PASSED] 3 VFs [15:09:35] [PASSED] 4 VFs [15:09:35] [PASSED] 5 VFs [15:09:35] [PASSED] 6 VFs [15:09:35] [PASSED] 7 VFs [15:09:35] [PASSED] 8 VFs [15:09:35] [PASSED] 9 VFs [15:09:35] [PASSED] 10 VFs [15:09:35] [PASSED] 11 VFs [15:09:35] [PASSED] 12 VFs [15:09:35] [PASSED] 13 VFs [15:09:35] [PASSED] 14 VFs [15:09:35] [PASSED] 15 VFs [15:09:35] [PASSED] 16 VFs [15:09:35] [PASSED] 17 VFs [15:09:35] [PASSED] 18 VFs [15:09:35] [PASSED] 19 VFs [15:09:35] [PASSED] 20 VFs [15:09:35] [PASSED] 21 VFs [15:09:35] [PASSED] 22 VFs [15:09:35] [PASSED] 23 VFs [15:09:35] [PASSED] 24 VFs [15:09:35] [PASSED] 25 VFs [15:09:35] [PASSED] 26 VFs [15:09:35] [PASSED] 27 VFs [15:09:35] [PASSED] 28 VFs [15:09:35] [PASSED] 29 VFs [15:09:35] [PASSED] 30 VFs [15:09:35] [PASSED] 31 VFs [15:09:35] [PASSED] 32 VFs [15:09:35] [PASSED] 33 VFs [15:09:35] [PASSED] 34 VFs [15:09:35] [PASSED] 35 VFs [15:09:35] [PASSED] 36 VFs [15:09:35] [PASSED] 37 VFs [15:09:35] [PASSED] 38 VFs [15:09:35] [PASSED] 39 VFs [15:09:35] [PASSED] 40 VFs [15:09:35] [PASSED] 41 VFs [15:09:35] [PASSED] 42 VFs [15:09:35] [PASSED] 43 VFs [15:09:35] [PASSED] 44 VFs [15:09:35] [PASSED] 45 VFs [15:09:35] [PASSED] 46 VFs [15:09:35] [PASSED] 47 VFs [15:09:35] [PASSED] 48 VFs [15:09:35] [PASSED] 49 VFs [15:09:35] [PASSED] 50 VFs [15:09:35] [PASSED] 51 VFs [15:09:35] [PASSED] 52 VFs [15:09:35] [PASSED] 53 VFs [15:09:35] [PASSED] 54 VFs [15:09:35] [PASSED] 55 VFs [15:09:35] [PASSED] 56 VFs [15:09:35] [PASSED] 57 VFs [15:09:35] [PASSED] 58 VFs [15:09:35] [PASSED] 59 VFs [15:09:35] [PASSED] 60 VFs [15:09:35] [PASSED] 61 VFs [15:09:35] [PASSED] 62 VFs [15:09:35] [PASSED] 63 VFs [15:09:35] ==================== [PASSED] fair_ggtt ==================== [15:09:35] ================== [PASSED] pf_gt_config =================== [15:09:35] ===================== lmtt (1 subtest) ===================== [15:09:35] ======================== test_ops ========================= [15:09:35] [PASSED] 2-level [15:09:35] [PASSED] multi-level [15:09:35] ==================== [PASSED] test_ops ===================== [15:09:35] ====================== [PASSED] lmtt ======================= [15:09:35] ================= pf_service (11 subtests) ================= [15:09:35] [PASSED] pf_negotiate_any [15:09:35] [PASSED] pf_negotiate_base_match [15:09:35] [PASSED] pf_negotiate_base_newer [15:09:35] [PASSED] pf_negotiate_base_next [15:09:35] [SKIPPED] pf_negotiate_base_older [15:09:35] [PASSED] pf_negotiate_base_prev [15:09:35] [PASSED] pf_negotiate_latest_match [15:09:35] [PASSED] pf_negotiate_latest_newer [15:09:35] [PASSED] pf_negotiate_latest_next [15:09:35] [SKIPPED] pf_negotiate_latest_older [15:09:35] [SKIPPED] pf_negotiate_latest_prev [15:09:35] =================== [PASSED] pf_service ==================== [15:09:35] ================= xe_guc_g2g (2 subtests) ================== [15:09:35] ============== xe_live_guc_g2g_kunit_default ============== [15:09:35] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ========== [15:09:35] ============== xe_live_guc_g2g_kunit_allmem =============== [15:09:35] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ========== [15:09:35] =================== [SKIPPED] xe_guc_g2g =================== [15:09:35] =================== xe_mocs (2 subtests) =================== [15:09:35] ================ xe_live_mocs_kernel_kunit ================ [15:09:35] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [15:09:35] ================ xe_live_mocs_reset_kunit ================= [15:09:35] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [15:09:35] ==================== [SKIPPED] xe_mocs ===================== [15:09:35] ================= xe_migrate (2 subtests) ================== [15:09:35] ================= xe_migrate_sanity_kunit ================= [15:09:35] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [15:09:35] ================== xe_validate_ccs_kunit ================== [15:09:35] ============= [SKIPPED] xe_validate_ccs_kunit ============== [15:09:35] =================== [SKIPPED] xe_migrate =================== [15:09:35] ================== xe_dma_buf (1 subtest) ================== [15:09:35] ==================== xe_dma_buf_kunit ===================== [15:09:35] ================ [SKIPPED] xe_dma_buf_kunit ================ [15:09:35] =================== [SKIPPED] xe_dma_buf =================== [15:09:35] ================= xe_bo_shrink (1 subtest) ================= [15:09:35] =================== xe_bo_shrink_kunit ==================== [15:09:35] =============== [SKIPPED] xe_bo_shrink_kunit =============== [15:09:35] ================== [SKIPPED] xe_bo_shrink ================== [15:09:35] ==================== xe_bo (2 subtests) ==================== [15:09:35] ================== xe_ccs_migrate_kunit =================== [15:09:35] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [15:09:35] ==================== xe_bo_evict_kunit ==================== [15:09:35] =============== [SKIPPED] xe_bo_evict_kunit ================ [15:09:35] ===================== [SKIPPED] xe_bo ====================== [15:09:35] ==================== args (13 subtests) ==================== [15:09:35] [PASSED] count_args_test [15:09:35] [PASSED] call_args_example [15:09:35] [PASSED] call_args_test [15:09:35] [PASSED] drop_first_arg_example [15:09:35] [PASSED] drop_first_arg_test [15:09:35] [PASSED] first_arg_example [15:09:35] [PASSED] first_arg_test [15:09:35] [PASSED] last_arg_example [15:09:35] [PASSED] last_arg_test [15:09:35] [PASSED] pick_arg_example [15:09:35] [PASSED] if_args_example [15:09:35] [PASSED] if_args_test [15:09:35] [PASSED] sep_comma_example [15:09:35] ====================== [PASSED] args ======================= [15:09:35] =================== xe_pci (3 subtests) ==================== [15:09:35] ==================== check_graphics_ip ==================== [15:09:35] [PASSED] 12.00 Xe_LP [15:09:35] [PASSED] 12.10 Xe_LP+ [15:09:35] [PASSED] 12.55 Xe_HPG [15:09:35] [PASSED] 12.60 Xe_HPC [15:09:35] [PASSED] 12.70 Xe_LPG [15:09:35] [PASSED] 12.71 Xe_LPG [15:09:35] [PASSED] 12.74 Xe_LPG+ [15:09:35] [PASSED] 20.01 Xe2_HPG [15:09:35] [PASSED] 20.02 Xe2_HPG [15:09:35] [PASSED] 20.04 Xe2_LPG [15:09:35] [PASSED] 30.00 Xe3_LPG [15:09:35] [PASSED] 30.01 Xe3_LPG [15:09:35] [PASSED] 30.03 Xe3_LPG [15:09:35] [PASSED] 30.04 Xe3_LPG [15:09:35] [PASSED] 30.05 Xe3_LPG [15:09:35] [PASSED] 35.11 Xe3p_XPC [15:09:35] ================ [PASSED] check_graphics_ip ================ [15:09:35] ===================== check_media_ip ====================== [15:09:35] [PASSED] 12.00 Xe_M [15:09:35] [PASSED] 12.55 Xe_HPM [15:09:35] [PASSED] 13.00 Xe_LPM+ [15:09:35] [PASSED] 13.01 Xe2_HPM [15:09:35] [PASSED] 20.00 Xe2_LPM [15:09:35] [PASSED] 30.00 Xe3_LPM [15:09:35] [PASSED] 30.02 Xe3_LPM [15:09:35] [PASSED] 35.00 Xe3p_LPM [15:09:35] [PASSED] 35.03 Xe3p_HPM [15:09:35] ================= [PASSED] check_media_ip ================== [15:09:35] =================== check_platform_desc =================== [15:09:35] [PASSED] 0x9A60 (TIGERLAKE) [15:09:35] [PASSED] 0x9A68 (TIGERLAKE) [15:09:35] [PASSED] 0x9A70 (TIGERLAKE) [15:09:35] [PASSED] 0x9A40 (TIGERLAKE) [15:09:35] [PASSED] 0x9A49 (TIGERLAKE) [15:09:35] [PASSED] 0x9A59 (TIGERLAKE) [15:09:35] [PASSED] 0x9A78 (TIGERLAKE) [15:09:35] [PASSED] 0x9AC0 (TIGERLAKE) [15:09:35] [PASSED] 0x9AC9 (TIGERLAKE) [15:09:35] [PASSED] 0x9AD9 (TIGERLAKE) [15:09:35] [PASSED] 0x9AF8 (TIGERLAKE) [15:09:35] [PASSED] 0x4C80 (ROCKETLAKE) [15:09:35] [PASSED] 0x4C8A (ROCKETLAKE) [15:09:35] [PASSED] 0x4C8B (ROCKETLAKE) [15:09:35] [PASSED] 0x4C8C (ROCKETLAKE) [15:09:35] [PASSED] 0x4C90 (ROCKETLAKE) [15:09:35] [PASSED] 0x4C9A (ROCKETLAKE) [15:09:35] [PASSED] 0x4680 (ALDERLAKE_S) [15:09:35] [PASSED] 0x4682 (ALDERLAKE_S) [15:09:35] [PASSED] 0x4688 (ALDERLAKE_S) [15:09:35] [PASSED] 0x468A (ALDERLAKE_S) [15:09:35] [PASSED] 0x468B (ALDERLAKE_S) [15:09:35] [PASSED] 0x4690 (ALDERLAKE_S) [15:09:35] [PASSED] 0x4692 (ALDERLAKE_S) [15:09:35] [PASSED] 0x4693 (ALDERLAKE_S) [15:09:35] [PASSED] 0x46A0 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46A1 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46A2 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46A3 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46A6 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46A8 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46AA (ALDERLAKE_P) [15:09:35] [PASSED] 0x462A (ALDERLAKE_P) [15:09:35] [PASSED] 0x4626 (ALDERLAKE_P) [15:09:35] [PASSED] 0x4628 (ALDERLAKE_P) stty: 'standard input': Inappropriate ioctl for device [15:09:35] [PASSED] 0x46B0 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46B1 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46B2 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46B3 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46C0 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46C1 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46C2 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46C3 (ALDERLAKE_P) [15:09:35] [PASSED] 0x46D0 (ALDERLAKE_N) [15:09:35] [PASSED] 0x46D1 (ALDERLAKE_N) [15:09:35] [PASSED] 0x46D2 (ALDERLAKE_N) [15:09:35] [PASSED] 0x46D3 (ALDERLAKE_N) [15:09:35] [PASSED] 0x46D4 (ALDERLAKE_N) [15:09:35] [PASSED] 0xA721 (ALDERLAKE_P) [15:09:35] [PASSED] 0xA7A1 (ALDERLAKE_P) [15:09:35] [PASSED] 0xA7A9 (ALDERLAKE_P) [15:09:35] [PASSED] 0xA7AC (ALDERLAKE_P) [15:09:35] [PASSED] 0xA7AD (ALDERLAKE_P) [15:09:35] [PASSED] 0xA720 (ALDERLAKE_P) [15:09:35] [PASSED] 0xA7A0 (ALDERLAKE_P) [15:09:35] [PASSED] 0xA7A8 (ALDERLAKE_P) [15:09:35] [PASSED] 0xA7AA (ALDERLAKE_P) [15:09:35] [PASSED] 0xA7AB (ALDERLAKE_P) [15:09:35] [PASSED] 0xA780 (ALDERLAKE_S) [15:09:35] [PASSED] 0xA781 (ALDERLAKE_S) [15:09:35] [PASSED] 0xA782 (ALDERLAKE_S) [15:09:35] [PASSED] 0xA783 (ALDERLAKE_S) [15:09:35] [PASSED] 0xA788 (ALDERLAKE_S) [15:09:35] [PASSED] 0xA789 (ALDERLAKE_S) [15:09:35] [PASSED] 0xA78A (ALDERLAKE_S) [15:09:35] [PASSED] 0xA78B (ALDERLAKE_S) [15:09:35] [PASSED] 0x4905 (DG1) [15:09:35] [PASSED] 0x4906 (DG1) [15:09:35] [PASSED] 0x4907 (DG1) [15:09:35] [PASSED] 0x4908 (DG1) [15:09:35] [PASSED] 0x4909 (DG1) [15:09:35] [PASSED] 0x56C0 (DG2) [15:09:35] [PASSED] 0x56C2 (DG2) [15:09:35] [PASSED] 0x56C1 (DG2) [15:09:35] [PASSED] 0x7D51 (METEORLAKE) [15:09:35] [PASSED] 0x7DD1 (METEORLAKE) [15:09:35] [PASSED] 0x7D41 (METEORLAKE) [15:09:35] [PASSED] 0x7D67 (METEORLAKE) [15:09:35] [PASSED] 0xB640 (METEORLAKE) [15:09:35] [PASSED] 0x56A0 (DG2) [15:09:35] [PASSED] 0x56A1 (DG2) [15:09:35] [PASSED] 0x56A2 (DG2) [15:09:35] [PASSED] 0x56BE (DG2) [15:09:35] [PASSED] 0x56BF (DG2) [15:09:35] [PASSED] 0x5690 (DG2) [15:09:35] [PASSED] 0x5691 (DG2) [15:09:35] [PASSED] 0x5692 (DG2) [15:09:35] [PASSED] 0x56A5 (DG2) [15:09:35] [PASSED] 0x56A6 (DG2) [15:09:35] [PASSED] 0x56B0 (DG2) [15:09:35] [PASSED] 0x56B1 (DG2) [15:09:35] [PASSED] 0x56BA (DG2) [15:09:35] [PASSED] 0x56BB (DG2) [15:09:35] [PASSED] 0x56BC (DG2) [15:09:35] [PASSED] 0x56BD (DG2) [15:09:35] [PASSED] 0x5693 (DG2) [15:09:35] [PASSED] 0x5694 (DG2) [15:09:35] [PASSED] 0x5695 (DG2) [15:09:35] [PASSED] 0x56A3 (DG2) [15:09:35] [PASSED] 0x56A4 (DG2) [15:09:35] [PASSED] 0x56B2 (DG2) [15:09:35] [PASSED] 0x56B3 (DG2) [15:09:35] [PASSED] 0x5696 (DG2) [15:09:35] [PASSED] 0x5697 (DG2) [15:09:35] [PASSED] 0xB69 (PVC) [15:09:35] [PASSED] 0xB6E (PVC) [15:09:35] [PASSED] 0xBD4 (PVC) [15:09:35] [PASSED] 0xBD5 (PVC) [15:09:35] [PASSED] 0xBD6 (PVC) [15:09:35] [PASSED] 0xBD7 (PVC) [15:09:35] [PASSED] 0xBD8 (PVC) [15:09:35] [PASSED] 0xBD9 (PVC) [15:09:35] [PASSED] 0xBDA (PVC) [15:09:35] [PASSED] 0xBDB (PVC) [15:09:35] [PASSED] 0xBE0 (PVC) [15:09:35] [PASSED] 0xBE1 (PVC) [15:09:35] [PASSED] 0xBE5 (PVC) [15:09:35] [PASSED] 0x7D40 (METEORLAKE) [15:09:35] [PASSED] 0x7D45 (METEORLAKE) [15:09:35] [PASSED] 0x7D55 (METEORLAKE) [15:09:35] [PASSED] 0x7D60 (METEORLAKE) [15:09:35] [PASSED] 0x7DD5 (METEORLAKE) [15:09:35] [PASSED] 0x6420 (LUNARLAKE) [15:09:35] [PASSED] 0x64A0 (LUNARLAKE) [15:09:35] [PASSED] 0x64B0 (LUNARLAKE) [15:09:35] [PASSED] 0xE202 (BATTLEMAGE) [15:09:35] [PASSED] 0xE209 (BATTLEMAGE) [15:09:35] [PASSED] 0xE20B (BATTLEMAGE) [15:09:35] [PASSED] 0xE20C (BATTLEMAGE) [15:09:35] [PASSED] 0xE20D (BATTLEMAGE) [15:09:35] [PASSED] 0xE210 (BATTLEMAGE) [15:09:35] [PASSED] 0xE211 (BATTLEMAGE) [15:09:35] [PASSED] 0xE212 (BATTLEMAGE) [15:09:35] [PASSED] 0xE216 (BATTLEMAGE) [15:09:35] [PASSED] 0xE220 (BATTLEMAGE) [15:09:35] [PASSED] 0xE221 (BATTLEMAGE) [15:09:35] [PASSED] 0xE222 (BATTLEMAGE) [15:09:35] [PASSED] 0xE223 (BATTLEMAGE) [15:09:35] [PASSED] 0xB080 (PANTHERLAKE) [15:09:35] [PASSED] 0xB081 (PANTHERLAKE) [15:09:35] [PASSED] 0xB082 (PANTHERLAKE) [15:09:35] [PASSED] 0xB083 (PANTHERLAKE) [15:09:35] [PASSED] 0xB084 (PANTHERLAKE) [15:09:35] [PASSED] 0xB085 (PANTHERLAKE) [15:09:35] [PASSED] 0xB086 (PANTHERLAKE) [15:09:35] [PASSED] 0xB087 (PANTHERLAKE) [15:09:35] [PASSED] 0xB08F (PANTHERLAKE) [15:09:35] [PASSED] 0xB090 (PANTHERLAKE) [15:09:35] [PASSED] 0xB0A0 (PANTHERLAKE) [15:09:35] [PASSED] 0xB0B0 (PANTHERLAKE) [15:09:35] [PASSED] 0xFD80 (PANTHERLAKE) [15:09:35] [PASSED] 0xFD81 (PANTHERLAKE) [15:09:35] [PASSED] 0xD740 (NOVALAKE_S) [15:09:35] [PASSED] 0xD741 (NOVALAKE_S) [15:09:35] [PASSED] 0xD742 (NOVALAKE_S) [15:09:35] [PASSED] 0xD743 (NOVALAKE_S) [15:09:35] [PASSED] 0xD744 (NOVALAKE_S) [15:09:35] [PASSED] 0xD745 (NOVALAKE_S) [15:09:35] [PASSED] 0x674C (CRESCENTISLAND) [15:09:35] =============== [PASSED] check_platform_desc =============== [15:09:35] ===================== [PASSED] xe_pci ====================== [15:09:35] =================== xe_rtp (2 subtests) ==================== [15:09:35] =============== xe_rtp_process_to_sr_tests ================ [15:09:35] [PASSED] coalesce-same-reg [15:09:35] [PASSED] no-match-no-add [15:09:35] [PASSED] match-or [15:09:35] [PASSED] match-or-xfail [15:09:35] [PASSED] no-match-no-add-multiple-rules [15:09:35] [PASSED] two-regs-two-entries [15:09:35] [PASSED] clr-one-set-other [15:09:35] [PASSED] set-field [15:09:35] [PASSED] conflict-duplicate [15:09:35] [PASSED] conflict-not-disjoint [15:09:35] [PASSED] conflict-reg-type [15:09:35] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [15:09:35] ================== xe_rtp_process_tests =================== [15:09:35] [PASSED] active1 [15:09:35] [PASSED] active2 [15:09:35] [PASSED] active-inactive [15:09:35] [PASSED] inactive-active [15:09:35] [PASSED] inactive-1st_or_active-inactive [15:09:35] [PASSED] inactive-2nd_or_active-inactive [15:09:35] [PASSED] inactive-last_or_active-inactive [15:09:35] [PASSED] inactive-no_or_active-inactive [15:09:35] ============== [PASSED] xe_rtp_process_tests =============== [15:09:35] ===================== [PASSED] xe_rtp ====================== [15:09:35] ==================== xe_wa (1 subtest) ===================== [15:09:35] ======================== xe_wa_gt ========================= [15:09:35] [PASSED] TIGERLAKE B0 [15:09:35] [PASSED] DG1 A0 [15:09:35] [PASSED] DG1 B0 [15:09:35] [PASSED] ALDERLAKE_S A0 [15:09:35] [PASSED] ALDERLAKE_S B0 [15:09:35] [PASSED] ALDERLAKE_S C0 [15:09:35] [PASSED] ALDERLAKE_S D0 [15:09:35] [PASSED] ALDERLAKE_P A0 [15:09:35] [PASSED] ALDERLAKE_P B0 [15:09:35] [PASSED] ALDERLAKE_P C0 [15:09:35] [PASSED] ALDERLAKE_S RPLS D0 [15:09:35] [PASSED] ALDERLAKE_P RPLU E0 [15:09:35] [PASSED] DG2 G10 C0 [15:09:35] [PASSED] DG2 G11 B1 [15:09:35] [PASSED] DG2 G12 A1 [15:09:35] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0 [15:09:35] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0 [15:09:35] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0 [15:09:35] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0 [15:09:35] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0 [15:09:35] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1 [15:09:35] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0 [15:09:35] ==================== [PASSED] xe_wa_gt ===================== [15:09:35] ====================== [PASSED] xe_wa ====================== [15:09:35] ============================================================ [15:09:35] Testing complete. Ran 512 tests: passed: 494, skipped: 18 [15:09:35] Elapsed time: 44.074s total, 4.386s configuring, 39.171s building, 0.489s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig ERROR:root:../drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c: In function ‘drm_test_check_reject_hdr_infoframe_bpc_10’: ../drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c:2926:49: warning: passing argument 6 of ‘drm_property_replace_blob_from_id’ makes integer from pointer without a cast [-Wint-conversion] 2926 | &replaced); | ^~~~~~~~~ | | | bool * {aka _Bool *} In file included from ../include/drm/drm_connector.h:33, from ../include/drm/drm_modes.h:33, from ../include/drm/drm_crtc.h:32, from ../include/drm/drm_atomic.h:31, from ../drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c:7: ../include/drm/drm_property.h:287:47: note: expected ‘ssize_t’ {aka ‘long int’} but argument is of type ‘bool *’ {aka ‘_Bool *’} 287 | ssize_t max_size, | ~~~~~~~~^~~~~~~~ ../drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c:2922:15: error: too few arguments to function ‘drm_property_replace_blob_from_id’ 2922 | ret = drm_property_replace_blob_from_id(drm, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../include/drm/drm_property.h:282:5: note: declared here 282 | int drm_property_replace_blob_from_id(struct drm_device *dev, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ make[7]: *** [../scripts/Makefile.build:287: drivers/gpu/drm/tests/drm_hdmi_state_helper_test.o] Error 1 make[7]: *** Waiting for unfinished jobs.... make[6]: *** [../scripts/Makefile.build:544: drivers/gpu/drm/tests] Error 2 make[6]: *** Waiting for unfinished jobs.... make[5]: *** [../scripts/Makefile.build:544: drivers/gpu/drm] Error 2 make[4]: *** [../scripts/Makefile.build:544: drivers/gpu] Error 2 make[3]: *** [../scripts/Makefile.build:544: drivers] Error 2 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/kernel/Makefile:2054: .] Error 2 make[1]: *** [/kernel/Makefile:248: __sub-make] Error 2 make: *** [Makefile:248: __sub-make] Error 2 [15:09:35] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [15:09:37] 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=25 + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo 2026-01-19 15:03 [PATCH v2 1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo Farah Kassabri 2026-01-19 15:03 ` [PATCH v2 2/2] drm/xe: add kernel VM BO unbind helper Farah Kassabri 2026-01-19 15:10 ` ✗ CI.KUnit: failure for series starting with [v2,1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo Patchwork @ 2026-01-20 22:51 ` Matthew Brost 2 siblings, 0 replies; 6+ messages in thread From: Matthew Brost @ 2026-01-20 22:51 UTC (permalink / raw) To: Farah Kassabri; +Cc: intel-xe, ilia.levi On Mon, Jan 19, 2026 at 05:03:29PM +0200, Farah Kassabri wrote: > The existing function `xe_vm_bind_kernel_bo` was originally used to bind > a buffer object to the kernel VM, but the name implies it only works for > kernel BOs. To clarify its purpose, the function is renamed to > `xe_kernel_vm_bind_bo`. > > Signed-off-by: Farah Kassabri <farah.kassabri@intel.com> > --- > drivers/gpu/drm/xe/xe_pxp_submit.c | 2 +- > drivers/gpu/drm/xe/xe_vm.c | 7 +++---- > drivers/gpu/drm/xe/xe_vm.h | 2 +- > 3 files changed, 5 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.c b/drivers/gpu/drm/xe/xe_pxp_submit.c > index e60526e30030..e23ee12d8e1d 100644 > --- a/drivers/gpu/drm/xe/xe_pxp_submit.c > +++ b/drivers/gpu/drm/xe/xe_pxp_submit.c > @@ -130,7 +130,7 @@ static int allocate_gsc_client_resources(struct xe_gt *gt, > if (err) > goto vm_out; > > - fence = xe_vm_bind_kernel_bo(vm, bo, NULL, 0, XE_CACHE_WB); > + fence = xe_vm_kernel_bind_bo(vm, bo, NULL, 0, XE_CACHE_WB); > if (IS_ERR(fence)) { > err = PTR_ERR(fence); > goto bo_out; > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c > index 694f592a0f01..a27145a4137e 100644 > --- a/drivers/gpu/drm/xe/xe_vm.c > +++ b/drivers/gpu/drm/xe/xe_vm.c > @@ -3830,20 +3830,19 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file) > } > > /** > - * xe_vm_bind_kernel_bo - bind a kernel BO to a VM > + * xe_vm_kernel_bind_bo - bind a BO to a kernel owned VM While you are here - s/xe_vm_kernel_bind_bo/xe_vm_kernel_bind_bo() foo() is the prefered style [1], we are going to fixup all of Xe shortly. Anyways I can fix that when merging this one, with that: Reviewed-by: Matthew Brost <matthew.brost@intel.com> [1] https://docs.kernel.org/doc-guide/kernel-doc.html > * @vm: VM to bind the BO to > * @bo: BO to bind > * @q: exec queue to use for the bind (optional) > * @addr: address at which to bind the BO > * @cache_lvl: PAT cache level to use > * > - * Execute a VM bind map operation on a kernel-owned BO to bind it into a > - * kernel-owned VM. > + * Execute a VM bind map operation on a BO to bind it into a kernel-owned VM. > * > * Returns a dma_fence to track the binding completion if the job to do so was > * successfully submitted, an error pointer otherwise. > */ > -struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo, > +struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > struct xe_exec_queue *q, u64 addr, > enum xe_cache_level cache_lvl) > { > diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h > index 6cc98df47291..ff32f43aa1d8 100644 > --- a/drivers/gpu/drm/xe/xe_vm.h > +++ b/drivers/gpu/drm/xe/xe_vm.h > @@ -268,7 +268,7 @@ int xe_vm_lock_vma(struct drm_exec *exec, struct xe_vma *vma); > int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec, > unsigned int num_fences); > > -struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo, > +struct dma_fence *xe_vm_kernel_bind_bo(struct xe_vm *vm, struct xe_bo *bo, > struct xe_exec_queue *q, u64 addr, > enum xe_cache_level cache_lvl); > > -- > 2.43.0 > > --------------------------------------------------------------------- > Intel Israel (74) Limited > > This e-mail and any attachments may contain confidential material for > the sole use of the intended recipient(s). Any review or distribution > by others is strictly prohibited. If you are not the intended > recipient, please contact the sender and delete all copies. > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-02-06 0:49 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-01-19 15:03 [PATCH v2 1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo Farah Kassabri 2026-01-19 15:03 ` [PATCH v2 2/2] drm/xe: add kernel VM BO unbind helper Farah Kassabri 2026-01-20 22:56 ` Matthew Brost 2026-02-06 0:49 ` Matthew Brost 2026-01-19 15:10 ` ✗ CI.KUnit: failure for series starting with [v2,1/2] drm/xe: s/xe_vm_bind_kernel_bo/xe_kernel_vm_bind_bo Patchwork 2026-01-20 22:51 ` [PATCH v2 1/2] " Matthew Brost
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox