[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