[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