[PATCH] drm/xe: Fix flushing of garbage collector work
Niranjana Vishwanathapura
niranjana.vishwanathapura at intel.com
Wed May 7 17:52:16 UTC 2025
The svm garbage collector work structure is only initialized
if CONFIG_DRM_XE_GPUSVM is enabled. Add xe_svm_flush() and
use it to flush svm garbage collector work instead of directly
flushing it.
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura at intel.com>
---
drivers/gpu/drm/xe/xe_svm.h | 7 +++++++
drivers/gpu/drm/xe/xe_vm.c | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 3d441eb1f7ea..bd831f6104fe 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -87,6 +87,9 @@ static inline bool xe_svm_range_has_dma_mapping(struct xe_svm_range *range)
return range->base.flags.has_dma_mapping;
}
+#define xe_svm_flush(vm__) \
+ flush_work(&(vm__)->svm.garbage_collector.work)
+
#define xe_svm_assert_in_notifier(vm__) \
lockdep_assert_held_write(&(vm__)->svm.gpusvm.notifier_lock)
@@ -170,6 +173,10 @@ void xe_svm_range_debug(struct xe_svm_range *range, const char *operation)
{
}
+static inline void xe_svm_flush(struct xe_vm *vm)
+{
+}
+
#define xe_svm_assert_in_notifier(...) do {} while (0)
#define xe_svm_range_has_dma_mapping(...) false
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 80e56e232685..7f848491ada5 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -3332,7 +3332,7 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
/* Ensure all UNMAPs visible */
if (xe_vm_in_fault_mode(vm))
- flush_work(&vm->svm.garbage_collector.work);
+ xe_svm_flush(vm);
err = down_write_killable(&vm->lock);
if (err)
--
2.43.0
More information about the Intel-xe
mailing list