[PATCH v3 01/13] drm/xe/psmi: Add GuC flag to enable PSMI
Lucas De Marchi
lucas.demarchi at intel.com
Fri Aug 15 21:34:39 UTC 2025
On Tue, Aug 12, 2025 at 05:38:14PM -0700, Belgaumkar, Vinay wrote:
>
>On 8/8/2025 10:29 AM, Lucas De Marchi wrote:
>>PSMI allows to capture data from the GPU useful for early
>>validation. From the kernel side there isn't much to be done, just a few
>>things:
>>
>> 1) Toggle the feature support in GuC
>> 2) Enable some additional WAs
>> 3) Allocate buffers
>>
>>Here is the first step, with the next ones to follow. For now everything
>>is disabled through a check in configfs that is currently hardcoded to
>>disabled.
>>
>>Cc: Matt Roper <matthew.d.roper at intel.com>
>>Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
>>Cc: John Harrison <John.C.Harrison at Intel.com>
>>Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>>---
>> drivers/gpu/drm/xe/xe_configfs.h | 2 ++
>> drivers/gpu/drm/xe/xe_guc.c | 7 ++++++-
>> drivers/gpu/drm/xe/xe_guc_fwif.h | 1 +
>> 3 files changed, 9 insertions(+), 1 deletion(-)
>>
>>diff --git a/drivers/gpu/drm/xe/xe_configfs.h b/drivers/gpu/drm/xe/xe_configfs.h
>>index fb87640080896..c14588b86e833 100644
>>--- a/drivers/gpu/drm/xe/xe_configfs.h
>>+++ b/drivers/gpu/drm/xe/xe_configfs.h
>>@@ -16,12 +16,14 @@ void xe_configfs_exit(void);
>> bool xe_configfs_get_survivability_mode(struct pci_dev *pdev);
>> void xe_configfs_clear_survivability_mode(struct pci_dev *pdev);
>> u64 xe_configfs_get_engines_allowed(struct pci_dev *pdev);
>>+static inline bool xe_configfs_get_psmi_enabled(struct pci_dev *pdev) { return false; }
>> #else
>> static inline int xe_configfs_init(void) { return 0; }
>> static inline void xe_configfs_exit(void) { }
>> static inline bool xe_configfs_get_survivability_mode(struct pci_dev *pdev) { return false; }
>> static inline void xe_configfs_clear_survivability_mode(struct pci_dev *pdev) { }
>> static inline u64 xe_configfs_get_engines_allowed(struct pci_dev *pdev) { return U64_MAX; }
>>+static inline bool xe_configfs_get_psmi_enabled(struct pci_dev *pdev) { return false; }
>> #endif
>> #endif
>>diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
>>index 9e34401e4489f..cb757a53de856 100644
>>--- a/drivers/gpu/drm/xe/xe_guc.c
>>+++ b/drivers/gpu/drm/xe/xe_guc.c
>>@@ -16,6 +16,7 @@
>> #include "regs/xe_guc_regs.h"
>> #include "regs/xe_irq_regs.h"
>> #include "xe_bo.h"
>>+#include "xe_configfs.h"
>> #include "xe_device.h"
>> #include "xe_force_wake.h"
>> #include "xe_gt.h"
>>@@ -81,11 +82,15 @@ static u32 guc_ctl_debug_flags(struct xe_guc *guc)
>> static u32 guc_ctl_feature_flags(struct xe_guc *guc)
>> {
>>+ struct xe_device *xe = guc_to_xe(guc);
>> u32 flags = GUC_CTL_ENABLE_LITE_RESTORE;
>>- if (!guc_to_xe(guc)->info.skip_guc_pc)
>>+ if (!xe->info.skip_guc_pc)
>> flags |= GUC_CTL_ENABLE_SLPC;
>>+ if (xe_configfs_get_psmi_enabled(to_pci_dev(xe->drm.dev)))
>>+ flags |= GUC_CTL_ENABLE_PSMI;
>>+
>> return flags;
>> }
>>diff --git a/drivers/gpu/drm/xe/xe_guc_fwif.h b/drivers/gpu/drm/xe/xe_guc_fwif.h
>>index ca9f999d38d1e..4dc000c977faf 100644
>>--- a/drivers/gpu/drm/xe/xe_guc_fwif.h
>>+++ b/drivers/gpu/drm/xe/xe_guc_fwif.h
>>@@ -112,6 +112,7 @@ struct guc_update_exec_queue_policy {
>> #define GUC_CTL_FEATURE 2
>> #define GUC_CTL_ENABLE_SLPC BIT(2)
>> #define GUC_CTL_ENABLE_LITE_RESTORE BIT(4)
>>+#define GUC_CTL_ENABLE_PSMI BIT(7)
>
>Should we have this as GUC_CTL_ENABLE_PSMI_LOGGING to match the GuC
>nomenclature?
done, thanks.
Lucas De Marchi
>
>Thanks,
>
>Vinay.
>
>> #define GUC_CTL_DISABLE_SCHEDULER BIT(14)
>> #define GUC_CTL_DEBUG 3
>>
More information about the Intel-xe
mailing list