[PATCH v2] drm/xe/vsec: Allow for kernel context access
Johnstone, Nicholas
nicholas.johnstone at intel.com
Wed May 7 21:26:48 UTC 2025
Reviewed by: nicholas.johnstone at intel.com
Best,
Nick
________________________________
From: Ruhl, Michael J
Sent: Wednesday, May 7, 2025 2:37 PM
To: intel-xe at lists.freedesktop.org; Johnstone, Nicholas; Box, David E; Vivi, Rodrigo; De Marchi, Lucas
Cc: Ruhl, Michael J
Subject: [PATCH v2] drm/xe/vsec: Allow for kernel context access
The PMT driver API allows kernel level access to device
data. Because of this, the mutex lock use by the Xe copy
callback function turns out to be a poor choice.
Change the mutex to a spinlock to avoid sleeping when it
isn't allowed.
Fixes: 0c45e76fcc62 ("drm/xe/vsec: Support BMG devices")
Signed-off-by: Michael J. Ruhl <michael.j.ruhl at intel.com>
---
v2: checkpatch fix, update email address
drivers/gpu/drm/xe/xe_device.c | 5 ++---
drivers/gpu/drm/xe/xe_device_types.h | 2 +-
drivers/gpu/drm/xe/xe_vsec.c | 4 ++--
3 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 75e753e0a682..72c81b8203a5 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -8,6 +8,7 @@
#include <linux/aperture.h>
#include <linux/delay.h>
#include <linux/fault-inject.h>
+#include <linux/spinlock.h>
#include <linux/units.h>
#include <drm/drm_atomic_helper.h>
@@ -488,9 +489,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
goto err;
}
- err = drmm_mutex_init(&xe->drm, &xe->pmt.lock);
- if (err)
- goto err;
+ spin_lock_init(&xe->pmt.lock);
err = xe_display_create(xe);
if (WARN_ON(err))
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 06c65dace026..b57e1ba7cbdf 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -527,7 +527,7 @@ struct xe_device {
/** @pmt: Support the PMT driver callback interface */
struct {
/** @pmt.lock: protect access for telemetry data */
- struct mutex lock;
+ spinlock_t lock;
} pmt;
/**
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index b378848d3b7b..df44e28abbdf 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -6,7 +6,7 @@
#include <linux/errno.h>
#include <linux/intel_vsec.h>
#include <linux/module.h>
-#include <linux/mutex.h>
+#include <linux/spinlock.h>
#include <linux/pci.h>
#include <linux/types.h>
@@ -164,7 +164,7 @@ static int xe_pmt_telem_read(struct pci_dev *pdev, u32 guid, u64 *data, loff_t u
telem_addr += offset + user_offset;
- guard(mutex)(&xe->pmt.lock);
+ guard(spinlock)(&xe->pmt.lock);
/* indicate that we are not at an appropriate power level */
if (!xe_pm_runtime_get_if_active(xe))
--
2.49.0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-xe/attachments/20250507/6b6be315/attachment.htm>
More information about the Intel-xe
mailing list