[PATCH v3 07/13] drm/xe/configfs: Allow to enable PSMI

Lucas De Marchi lucas.demarchi at intel.com
Wed Aug 13 11:23:21 UTC 2025


On Wed, Aug 13, 2025 at 12:28:07PM +0530, Riana Tauro wrote:
>
>
>On 8/8/2025 10:59 PM, Lucas De Marchi wrote:
>>Now that additional WAs are in place and it's possible to allocate
>>buffers through debugfs, add the configfs attribute to turn PSMI on.
>>
>>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.c | 66 +++++++++++++++++++++++++++++++++++++---
>>  drivers/gpu/drm/xe/xe_configfs.h |  2 +-
>>  2 files changed, 63 insertions(+), 5 deletions(-)
>>
>>diff --git a/drivers/gpu/drm/xe/xe_configfs.c b/drivers/gpu/drm/xe/xe_configfs.c
>>index 17b1d6ae1ff6a..8cf6b1375b7d4 100644
>>--- a/drivers/gpu/drm/xe/xe_configfs.c
>>+++ b/drivers/gpu/drm/xe/xe_configfs.c
>>@@ -77,6 +77,16 @@
>>   * available for migrations, but it's disabled. This is intended for debugging
>>   * purposes only.
>>   *
>>+ * PSMI
>>+ * ----
>>+ *
>>+ * Enable extra debugging capabilities to trace engine execution. Only useful
>>+ * during early platform enabling and requiring additional hardware connected.
>
>%s/requiring/requires
>
>>+ * Once it's enabled, additionals WAs are added and runtime configuration is
>>+ * done via debugfs. Example to enable it::
>>+ *
>>+ *	# echo 1 > /sys/kernel/config/xe/0000:03:00.0/enable_psmi
>>+ *
>>   * Remove devices
>>   * ==============
>>   *
>>@@ -89,8 +99,9 @@ struct xe_config_group_device {
>>  	struct config_group group;
>>  	struct xe_config_device {
>>-		bool survivability_mode;
>>  		u64 engines_allowed;
>>+		bool survivability_mode;
>>+		bool enable_psmi;
>>  	} config;
>>  	/* protects attributes */
>>@@ -98,8 +109,9 @@ struct xe_config_group_device {
>>  };
>>  static const struct xe_config_device device_defaults = {
>>-	.survivability_mode = false,
>>  	.engines_allowed = U64_MAX,
>>+	.survivability_mode = false,
>>+	.enable_psmi = false,
>>  };
>>  static void set_device_defaults(struct xe_config_device *config)
>>@@ -243,12 +255,38 @@ static ssize_t engines_allowed_store(struct config_item *item, const char *page,
>>  	return len;
>>  }
>>-CONFIGFS_ATTR(, survivability_mode);
>>+static ssize_t enable_psmi_show(struct config_item *item, char *page)
>>+{
>>+	struct xe_config_group_device *dev = to_xe_config_group_device(item);
>
>To have consistency with other functions, we can use
>
>struct xe_config_device *dev = to_xe_config_device(item);

The struct and function got renamed a week or so ago. I think you don't
have this commit in the codebase you are looking at:

88df7939d728 ("drm/xe/configfs: Rename struct xe_config_device")

thanks
Lucas De Marchi

>
>>+
>>+	return sprintf(page, "%d\n", dev->config.enable_psmi);
>>+}
>>+
>>+static ssize_t enable_psmi_store(struct config_item *item, const char *page, size_t len)
>>+{
>>+	struct xe_config_group_device *dev = to_xe_config_group_device(item);
>>+	bool val;
>>+	int ret;
>>+
>>+	ret = kstrtobool(page, &val);
>>+	if (ret)
>>+		return ret;
>>+
>>+	mutex_lock(&dev->lock);
>>+	dev->config.enable_psmi = val;
>>+	mutex_unlock(&dev->lock);
>>+
>>+	return len;
>>+}
>>+
>>  CONFIGFS_ATTR(, engines_allowed);
>>+CONFIGFS_ATTR(, survivability_mode);
>>+CONFIGFS_ATTR(, enable_psmi);
>
>alphabetical?
>
>Thanks
>Riana
>
>>  static struct configfs_attribute *xe_config_device_attrs[] = {
>>-	&attr_survivability_mode,
>>  	&attr_engines_allowed,
>>+	&attr_survivability_mode,
>>+	&attr_enable_psmi,
>>  	NULL,
>>  };
>>@@ -443,6 +481,26 @@ u64 xe_configfs_get_engines_allowed(struct pci_dev *pdev)
>>  	return engines_allowed;
>>  }
>>+/**
>>+ * xe_configfs_get_psmi_enabled - get configfs enable_psmi setting
>>+ * @pdev: pci device
>>+ *
>>+ * Return: enable_psmi setting in configfs
>>+ */
>>+bool xe_configfs_get_psmi_enabled(struct pci_dev *pdev)
>>+{
>>+	struct xe_config_group_device *dev = find_xe_config_group_device(pdev);
>>+	bool ret;
>>+
>>+	if (!dev)
>>+		return false;
>>+
>>+	ret = dev->config.enable_psmi;
>>+	config_item_put(&dev->group.cg_item);
>>+
>>+	return ret;
>>+}
>>+
>>  int __init xe_configfs_init(void)
>>  {
>>  	int ret;
>>diff --git a/drivers/gpu/drm/xe/xe_configfs.h b/drivers/gpu/drm/xe/xe_configfs.h
>>index c14588b86e833..603dd7796c8b2 100644
>>--- a/drivers/gpu/drm/xe/xe_configfs.h
>>+++ b/drivers/gpu/drm/xe/xe_configfs.h
>>@@ -16,7 +16,7 @@ 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; }
>>+bool xe_configfs_get_psmi_enabled(struct pci_dev *pdev);
>>  #else
>>  static inline int xe_configfs_init(void) { return 0; }
>>  static inline void xe_configfs_exit(void) { }
>>
>


More information about the Intel-xe mailing list