From: Stuart Summers <stuart.summers@intel.com>
Cc: intel-xe@lists.freedesktop.org, rodrigo.vivi@intel.com,
matthew.brost@intel.com, umesh.nerlige.ramappa@intel.com,
Michal.Wajdeczko@intel.com, matthew.d.roper@intel.com,
daniele.ceraolospurio@intel.com, shuicheng.lin@intel.com,
Stuart Summers <stuart.summers@intel.com>
Subject: [PATCH 8/9] drm/xe: Migrate existing debug configfs entries to params infrastructure
Date: Wed, 22 Jul 2026 21:47:04 +0000 [thread overview]
Message-ID: <20260722214656.107936-19-stuart.summers@intel.com> (raw)
In-Reply-To: <20260722214656.107936-11-stuart.summers@intel.com>
Move the existing debug configfs entries whose semantics fit the
generic show/store template into the new parameter list.
Add validators for the guc_log_level and guc_log_target.
Add a custom getter for the guc_log_level to fall back to the modparam.
The new parameters are intentionally longer than the normal 80
character limit for readability.
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Assisted-by: Copilot:claude-sonnet-4.6,claude-opus-4.7,claude-sonnet-5
---
drivers/gpu/drm/xe/xe_configfs.c | 17 +-
drivers/gpu/drm/xe/xe_configfs_debug.c | 271 +-----------------
drivers/gpu/drm/xe/xe_configfs_debug.h | 20 +-
drivers/gpu/drm/xe/xe_configfs_debug_params.c | 1 +
drivers/gpu/drm/xe/xe_configfs_debug_params.h | 21 +-
drivers/gpu/drm/xe/xe_configfs_types.h | 7 +-
drivers/gpu/drm/xe/xe_guc.c | 2 +-
drivers/gpu/drm/xe/xe_psmi.c | 2 +-
drivers/gpu/drm/xe/xe_rtp.c | 2 +-
9 files changed, 46 insertions(+), 297 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_configfs.c b/drivers/gpu/drm/xe/xe_configfs.c
index c5d5017cd506..62d3406c61b6 100644
--- a/drivers/gpu/drm/xe/xe_configfs.c
+++ b/drivers/gpu/drm/xe/xe_configfs.c
@@ -100,11 +100,9 @@ const struct xe_config_device xe_configfs_device_defaults = {
.debug = {
.engines_allowed = U64_MAX,
.gt_types_allowed = U64_MAX,
- .guc_log_level = XE_GUC_LOG_LEVEL_UNSET,
- .guc_log_target = XE_DEFAULT_GUC_LOG_TARGET,
- .enable_multi_queue = true,
- .enable_psmi = false,
- .survivability_mode = false,
+ .params = {
+ XE_CONFIGFS_DEBUG_PARAMS_DEFAULTS
+ },
},
#endif
.sriov = {
@@ -420,11 +418,10 @@ static void dump_custom_dev_config(struct pci_dev *pdev,
#if IS_ENABLED(CONFIG_DRM_XE_DEBUG)
PRI_CUSTOM_ATTR("%llx", debug.engines_allowed);
PRI_CUSTOM_ATTR("%llx", debug.gt_types_allowed);
- PRI_CUSTOM_ATTR("%d", debug.guc_log_level);
- PRI_CUSTOM_ATTR("%d", debug.guc_log_target);
- PRI_CUSTOM_ATTR("%d", debug.enable_multi_queue);
- PRI_CUSTOM_ATTR("%d", debug.enable_psmi);
- PRI_CUSTOM_ATTR("%d", debug.survivability_mode);
+#define _XE_PARAM_DUMP(_T, _name, _def, _val, _vis, _get, _fallback) \
+ PRI_CUSTOM_ATTR(XE_PARAM_FMT_##_T, debug.params._name);
+ XE_CONFIGFS_DEBUG_PARAMS_FOR_EACH(_XE_PARAM_DUMP)
+#undef _XE_PARAM_DUMP
#endif
PRI_CUSTOM_ATTR("%u", sriov.admin_only_pf);
diff --git a/drivers/gpu/drm/xe/xe_configfs_debug.c b/drivers/gpu/drm/xe/xe_configfs_debug.c
index 32cbe12734fd..b068c64e42bf 100644
--- a/drivers/gpu/drm/xe/xe_configfs_debug.c
+++ b/drivers/gpu/drm/xe/xe_configfs_debug.c
@@ -786,274 +786,21 @@ static ssize_t gt_types_allowed_store(struct config_item *item, const char *page
return len;
}
-/**
- * xe_configfs_get_guc_log_level - get configfs guc_log_level setting
- * @pdev: pci device
- *
- * Returns the guc_log_level value configured via configfs. If the configfs
- * value is negative (the default is %XE_GUC_LOG_LEVEL_UNSET, -1), the value
- * of the ``guc_log_level`` module parameter is returned instead, allowing
- * the configfs entry to override the module parameter without affecting
- * users that rely solely on the module parameter.
- *
- * Return: GuC log level to use for this device.
- */
-int xe_configfs_get_guc_log_level(struct pci_dev *pdev)
-{
- struct xe_config_group_device *dev = find_device(pdev);
- int level = xe_modparam.guc_log_level;
-
- if (!dev)
- goto out;
-
- if (dev->config.debug.guc_log_level >= 0)
- level = dev->config.debug.guc_log_level;
-
- config_group_put(&dev->group);
-out:
- return level;
-}
-
-static ssize_t guc_log_level_show(struct config_item *item, char *page)
-{
- struct xe_config_device *dev = xe_configfs_subgroup_to_device(item);
-
- return sprintf(page, "%d\n", dev->debug.guc_log_level);
-}
-
-static ssize_t guc_log_level_store(struct config_item *item, const char *page, size_t len)
-{
- struct xe_config_group_device *dev = xe_configfs_subgroup_to_group_device(item);
- int val;
- int ret;
-
- ret = kstrtoint(page, 0, &val);
- if (ret)
- return ret;
-
- if (val > GUC_LOG_LEVEL_MAX)
- return -EINVAL;
-
- guard(mutex)(&dev->lock);
- if (xe_configfs_is_bound(dev))
- return -EBUSY;
-
- dev->config.debug.guc_log_level = val;
-
- return len;
-}
-
-/**
- * xe_configfs_get_guc_log_target - get configfs GuC log target attribute
- * @pdev: pci device
- *
- * Return: guc_log_target attribute in configfs
- */
-u8 xe_configfs_get_guc_log_target(struct pci_dev *pdev)
-{
- struct xe_config_group_device *dev = find_device(pdev);
- u8 target;
-
- if (!dev)
- return xe_configfs_device_defaults.debug.guc_log_target;
-
- target = dev->config.debug.guc_log_target;
- config_group_put(&dev->group);
-
- return target;
-}
-
-static ssize_t guc_log_target_show(struct config_item *item, char *page)
-{
- struct xe_config_device *dev = xe_configfs_subgroup_to_device(item);
-
- return sprintf(page, "%d\n", dev->debug.guc_log_target);
-}
-
-static ssize_t guc_log_target_store(struct config_item *item, const char *page, size_t len)
-{
- struct xe_config_group_device *dev = xe_configfs_subgroup_to_group_device(item);
- u8 guc_log_target;
- int ret;
-
- ret = kstrtou8(page, 0, &guc_log_target);
- if (ret)
- return ret;
-
- if (guc_log_target > GUC_LOG_TARGET_MAX)
- return -EINVAL;
-
- guard(mutex)(&dev->lock);
- if (xe_configfs_is_bound(dev))
- return -EBUSY;
-
- dev->config.debug.guc_log_target = guc_log_target;
-
- return len;
-}
-
-/**
- * xe_configfs_get_enable_multi_queue - get configfs enable_multi_queue setting
- * @pdev: pci device
- *
- * Return: true if multi-queue is enabled for this device (the default),
- * false if it has been force-disabled via configfs.
- */
-bool xe_configfs_get_enable_multi_queue(struct pci_dev *pdev)
-{
- struct xe_config_group_device *dev = find_device(pdev);
- bool ret;
-
- if (!dev)
- return xe_configfs_device_defaults.debug.enable_multi_queue;
-
- ret = dev->config.debug.enable_multi_queue;
- config_group_put(&dev->group);
-
- return ret;
-}
-
-static ssize_t enable_multi_queue_show(struct config_item *item, char *page)
-{
- struct xe_config_device *dev = xe_configfs_subgroup_to_device(item);
-
- return sprintf(page, "%d\n", dev->debug.enable_multi_queue);
-}
-
-static ssize_t enable_multi_queue_store(struct config_item *item, const char *page, size_t len)
-{
- struct xe_config_group_device *dev = xe_configfs_subgroup_to_group_device(item);
- bool val;
- int ret;
-
- ret = kstrtobool(page, &val);
- if (ret)
- return ret;
-
- guard(mutex)(&dev->lock);
- if (xe_configfs_is_bound(dev))
- return -EBUSY;
-
- dev->config.debug.enable_multi_queue = val;
-
- return len;
-}
-
-/**
- * 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_device(pdev);
- bool ret;
-
- if (!dev)
- return false;
-
- ret = dev->config.debug.enable_psmi;
- config_group_put(&dev->group);
-
- return ret;
-}
-
-static ssize_t enable_psmi_show(struct config_item *item, char *page)
-{
- struct xe_config_device *dev = xe_configfs_subgroup_to_device(item);
-
- return sprintf(page, "%d\n", dev->debug.enable_psmi);
-}
-
-static ssize_t enable_psmi_store(struct config_item *item, const char *page, size_t len)
-{
- struct xe_config_group_device *dev = xe_configfs_subgroup_to_group_device(item);
- bool val;
- int ret;
-
- ret = kstrtobool(page, &val);
- if (ret)
- return ret;
-
- guard(mutex)(&dev->lock);
- if (xe_configfs_is_bound(dev))
- return -EBUSY;
-
- dev->config.debug.enable_psmi = val;
-
- return len;
-}
-
-/**
- * xe_configfs_get_survivability_mode - get configfs survivability mode attribute
- * @pdev: pci device
- *
- * Return: survivability_mode attribute in configfs
- */
-bool xe_configfs_get_survivability_mode(struct pci_dev *pdev)
-{
- struct xe_config_group_device *dev = find_device(pdev);
- bool mode;
-
- if (!dev)
- return xe_configfs_device_defaults.debug.survivability_mode;
-
- mode = dev->config.debug.survivability_mode;
- config_group_put(&dev->group);
-
- return mode;
-}
-
-static ssize_t survivability_mode_show(struct config_item *item, char *page)
-{
- struct xe_config_device *dev = xe_configfs_subgroup_to_device(item);
-
- return sprintf(page, "%d\n", dev->debug.survivability_mode);
-}
-
-static ssize_t survivability_mode_store(struct config_item *item, const char *page, size_t len)
-{
- struct xe_config_group_device *dev = xe_configfs_subgroup_to_group_device(item);
- bool survivability_mode;
- int ret;
-
- ret = kstrtobool(page, &survivability_mode);
- if (ret)
- return ret;
-
- guard(mutex)(&dev->lock);
- if (xe_configfs_is_bound(dev))
- return -EBUSY;
-
- dev->config.debug.survivability_mode = survivability_mode;
-
- return len;
-}
-
CONFIGFS_ATTR(, ctx_restore_mid_bb);
CONFIGFS_ATTR(, ctx_restore_post_bb);
CONFIGFS_ATTR(, engines_allowed);
CONFIGFS_ATTR(, gt_types_allowed);
-CONFIGFS_ATTR(, guc_log_level);
-CONFIGFS_ATTR(, guc_log_target);
-CONFIGFS_ATTR(, enable_multi_queue);
-CONFIGFS_ATTR(, enable_psmi);
-CONFIGFS_ATTR(, survivability_mode);
static struct configfs_attribute *xe_configfs_debug_attrs[] = {
&attr_ctx_restore_mid_bb,
&attr_ctx_restore_post_bb,
&attr_engines_allowed,
&attr_gt_types_allowed,
- &attr_guc_log_level,
- &attr_guc_log_target,
- &attr_enable_multi_queue,
- &attr_enable_psmi,
- &attr_survivability_mode,
+ XE_CONFIGFS_DEBUG_PARAMS_FOR_EACH(XE_PARAM_ATTR_PTR)
NULL,
};
+
/*
* Per-parameter visibility predicates.
*
@@ -1072,16 +819,18 @@ static struct configfs_attribute *xe_configfs_debug_attrs[] = {
static bool xe_configfs_debug_is_visible(struct config_item *item,
struct configfs_attribute *attr, int n)
{
- if (attr == &attr_survivability_mode) {
- struct xe_config_group_device *dev =
- xe_configfs_to_group_device(item->ci_parent);
-
- return dev->desc->is_dgfx && dev->desc->platform >= XE_BATTLEMAGE;
- }
+#define _XE_PARAM_VIS_CHECK(_T, _name, _def, _val, _vis, _get, _fallback) \
+ if (attr == &attr_##_name) \
+ return _vis(item);
+ XE_CONFIGFS_DEBUG_PARAMS_FOR_EACH(_XE_PARAM_VIS_CHECK)
+#undef _XE_PARAM_VIS_CHECK
return true;
}
+#undef XE_PARAM_VISIBLE_ALWAYS
+#undef XE_PARAM_VISIBLE_SURVIVABILITY
+
static struct configfs_group_operations xe_configfs_debug_group_ops = {
.is_visible = xe_configfs_debug_is_visible,
};
diff --git a/drivers/gpu/drm/xe/xe_configfs_debug.h b/drivers/gpu/drm/xe/xe_configfs_debug.h
index b97a7fff6652..375ddc17ba36 100644
--- a/drivers/gpu/drm/xe/xe_configfs_debug.h
+++ b/drivers/gpu/drm/xe/xe_configfs_debug.h
@@ -7,7 +7,7 @@
#include <linux/types.h>
-#include "xe_defaults.h"
+#include "xe_configfs_debug_params.h"
#include "xe_hw_engine_types.h"
#include "xe_module.h"
@@ -26,11 +26,7 @@ u32 xe_configfs_get_ctx_restore_post_bb(struct pci_dev *pdev,
u64 xe_configfs_get_engines_allowed(struct pci_dev *pdev);
bool xe_configfs_primary_gt_allowed(struct pci_dev *pdev);
bool xe_configfs_media_gt_allowed(struct pci_dev *pdev);
-int xe_configfs_get_guc_log_level(struct pci_dev *pdev);
-u8 xe_configfs_get_guc_log_target(struct pci_dev *pdev);
-bool xe_configfs_get_enable_multi_queue(struct pci_dev *pdev);
-bool xe_configfs_get_psmi_enabled(struct pci_dev *pdev);
-bool xe_configfs_get_survivability_mode(struct pci_dev *pdev);
+XE_CONFIGFS_DEBUG_PARAMS_FOR_EACH(XE_PARAM_DECLARE_GETTER)
#else
/*
* Dummy values here are not used since these function accesses are always
@@ -46,17 +42,7 @@ static inline u32 xe_configfs_get_ctx_restore_post_bb(struct pci_dev *pdev,
static inline u64 xe_configfs_get_engines_allowed(struct pci_dev *pdev) { return U64_MAX; }
static inline bool xe_configfs_primary_gt_allowed(struct pci_dev *pdev) { return true; }
static inline bool xe_configfs_media_gt_allowed(struct pci_dev *pdev) { return true; }
-static inline int xe_configfs_get_guc_log_level(struct pci_dev *pdev)
-{
- return xe_modparam.guc_log_level;
-}
-static inline u8 xe_configfs_get_guc_log_target(struct pci_dev *pdev)
-{
- return XE_DEFAULT_GUC_LOG_TARGET;
-}
-static inline bool xe_configfs_get_enable_multi_queue(struct pci_dev *pdev) { return true; }
-static inline bool xe_configfs_get_psmi_enabled(struct pci_dev *pdev) { return false; }
-static inline bool xe_configfs_get_survivability_mode(struct pci_dev *pdev) { return false; }
+XE_CONFIGFS_DEBUG_PARAMS_FOR_EACH(XE_PARAM_DECLARE_GETTER_STUB)
#endif
#endif /* _XE_CONFIGFS_DEBUG_H_ */
diff --git a/drivers/gpu/drm/xe/xe_configfs_debug_params.c b/drivers/gpu/drm/xe/xe_configfs_debug_params.c
index 3946e56c0ef5..38af06ca7504 100644
--- a/drivers/gpu/drm/xe/xe_configfs_debug_params.c
+++ b/drivers/gpu/drm/xe/xe_configfs_debug_params.c
@@ -40,6 +40,7 @@
#include "xe_configfs_debug_params.h"
#include "xe_configfs.h"
+#include "xe_configfs_debug.h"
#define _XE_PARAM_DEFINE_OPS_NUMERIC(_T, _name, _kstrto, _fmt, _validator) \
static ssize_t _name##_show(struct config_item *item, char *page) \
diff --git a/drivers/gpu/drm/xe/xe_configfs_debug_params.h b/drivers/gpu/drm/xe/xe_configfs_debug_params.h
index 954ca4343136..57deb929fee6 100644
--- a/drivers/gpu/drm/xe/xe_configfs_debug_params.h
+++ b/drivers/gpu/drm/xe/xe_configfs_debug_params.h
@@ -10,6 +10,12 @@
#include <linux/errno.h>
#include <linux/types.h>
+#include "abi/guc_log_abi.h"
+#include "xe_defaults.h"
+#include "xe_guc_fwif.h"
+#include "xe_guc_log.h"
+#include "xe_module.h"
+
struct pci_dev;
/*
@@ -49,6 +55,11 @@ struct pci_dev;
*/
#define XE_PARAM_VALIDATE_NONE(_v) (0)
+#define XE_PARAM_VALIDATE_GUC_LOG_LEVEL(_v) \
+ ((((_v) < 0) || ((_v) <= GUC_LOG_LEVEL_MAX)) ? 0 : -EINVAL)
+#define XE_PARAM_VALIDATE_GUC_LOG_TARGET(_v) \
+ (((_v) <= GUC_LOG_TARGET_MAX) ? 0 : -EINVAL)
+
/*
* Per-parameter getter helpers.
*
@@ -71,6 +82,10 @@ struct pci_dev;
*/
#define XE_PARAM_GETTER_READ(_dev, _name) ((_dev)->config.debug.params._name)
+#define XE_PARAM_GETTER_GUC_LOG_LEVEL(_dev, _name) \
+ ({ typeof((_dev)->config.debug.params._name) __v = (_dev)->config.debug.params._name; \
+ __v >= 0 ? __v : xe_modparam.guc_log_level; })
+
/**
* XE_CONFIGFS_DEBUG_PARAMS_FOR_EACH - iterate over debug configfs params
* @param: function-like macro called as
@@ -106,7 +121,11 @@ struct pci_dev;
* at runtime if needed.
*/
#define XE_CONFIGFS_DEBUG_PARAMS_FOR_EACH(param) \
- /* No parameters yet - add entries above this line. */
+ param(int, guc_log_level, XE_GUC_LOG_LEVEL_UNSET, XE_PARAM_VALIDATE_GUC_LOG_LEVEL, XE_PARAM_VISIBLE_ALWAYS, XE_PARAM_GETTER_GUC_LOG_LEVEL, xe_modparam.guc_log_level) \
+ param(u8, guc_log_target, XE_DEFAULT_GUC_LOG_TARGET, XE_PARAM_VALIDATE_GUC_LOG_TARGET, XE_PARAM_VISIBLE_ALWAYS, XE_PARAM_GETTER_READ, XE_DEFAULT_GUC_LOG_TARGET) \
+ param(bool, enable_multi_queue, true, XE_PARAM_VALIDATE_NONE, XE_PARAM_VISIBLE_ALWAYS, XE_PARAM_GETTER_READ, true) \
+ param(bool, enable_psmi, false, XE_PARAM_VALIDATE_NONE, XE_PARAM_VISIBLE_ALWAYS, XE_PARAM_GETTER_READ, false) \
+ param(bool, survivability_mode, false, XE_PARAM_VALIDATE_NONE, XE_PARAM_VISIBLE_SURVIVABILITY, XE_PARAM_GETTER_READ, false)
/* Generate the struct that backs all debug params in xe_config_device. */
#define _XE_PARAM_MEMBER(_T, _name, _def, _val, _vis, _get, _fallback) XE_PARAM_TYPE_##_T _name;
diff --git a/drivers/gpu/drm/xe/xe_configfs_types.h b/drivers/gpu/drm/xe/xe_configfs_types.h
index 1123f6e2a668..c6eb90573866 100644
--- a/drivers/gpu/drm/xe/xe_configfs_types.h
+++ b/drivers/gpu/drm/xe/xe_configfs_types.h
@@ -9,6 +9,7 @@
#include <linux/mutex.h>
#include <linux/types.h>
+#include "xe_configfs_debug_params.h"
#include "xe_hw_engine_types.h"
#include "xe_pci_types.h"
#include "xe_sriov_types.h"
@@ -38,11 +39,7 @@ struct xe_config_group_device {
struct wa_bb ctx_restore_post_bb[XE_ENGINE_CLASS_MAX];
u64 engines_allowed;
u64 gt_types_allowed;
- int guc_log_level;
- u8 guc_log_target;
- bool enable_multi_queue;
- bool enable_psmi;
- bool survivability_mode;
+ struct xe_configfs_debug_params params;
} debug;
#endif
struct {
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 599134d3d027..83266ad78eea 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -99,7 +99,7 @@ static u32 guc_ctl_feature_flags(struct xe_guc *guc)
if (!xe->info.skip_guc_pc)
flags |= GUC_CTL_ENABLE_SLPC;
- if (xe_configfs_get_psmi_enabled(to_pci_dev(xe->drm.dev)))
+ if (xe_configfs_get_enable_psmi(to_pci_dev(xe->drm.dev)))
flags |= GUC_CTL_ENABLE_PSMI_LOGGING;
if (xe_guc_using_main_gamctrl_queues(guc))
diff --git a/drivers/gpu/drm/xe/xe_psmi.c b/drivers/gpu/drm/xe/xe_psmi.c
index 59af3d145418..ff9a14949339 100644
--- a/drivers/gpu/drm/xe/xe_psmi.c
+++ b/drivers/gpu/drm/xe/xe_psmi.c
@@ -34,7 +34,7 @@
static bool psmi_enabled(struct xe_device *xe)
{
- return xe_configfs_get_psmi_enabled(to_pci_dev(xe->drm.dev));
+ return xe_configfs_get_enable_psmi(to_pci_dev(xe->drm.dev));
}
static void psmi_free_object(struct xe_bo *bo)
diff --git a/drivers/gpu/drm/xe/xe_rtp.c b/drivers/gpu/drm/xe/xe_rtp.c
index 62068189320f..3ead1eac93f5 100644
--- a/drivers/gpu/drm/xe/xe_rtp.c
+++ b/drivers/gpu/drm/xe/xe_rtp.c
@@ -450,7 +450,7 @@ bool xe_rtp_match_psmi_enabled(const struct xe_device *xe,
const struct xe_gt *gt,
const struct xe_hw_engine *hwe)
{
- return xe_configfs_get_psmi_enabled(to_pci_dev(xe->drm.dev));
+ return xe_configfs_get_enable_psmi(to_pci_dev(xe->drm.dev));
}
bool xe_rtp_match_gt_has_discontiguous_dss_groups(const struct xe_device *xe,
--
2.43.0
next prev parent reply other threads:[~2026-07-22 21:47 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-22 21:46 [PATCH 0/9] Add new debug infrastructure for configfs Stuart Summers
2026-07-22 21:46 ` [PATCH 1/9] drm/xe: Sort xe_config_device fields Stuart Summers
2026-07-22 21:46 ` [PATCH 2/9] drm/xe: Split out configfs data structures Stuart Summers
2026-07-22 21:46 ` [PATCH 3/9] drm/xe: Add a new debug focused configfs group Stuart Summers
2026-07-22 21:47 ` [PATCH 4/9] drm/xe: Move debug configfs entries to xe_configfs_debug.c Stuart Summers
2026-07-22 21:47 ` [PATCH 5/9] drm/xe/guc: Add configfs support for guc_log_level Stuart Summers
2026-07-22 21:47 ` [PATCH 6/9] drm/xe/guc: Add support for NPK as a GuC log target Stuart Summers
2026-07-22 21:47 ` [PATCH 7/9] drm/xe: Add infrastructure for debug configfs parameters Stuart Summers
2026-07-22 21:47 ` Stuart Summers [this message]
2026-07-22 21:47 ` [PATCH 9/9] drm/xe: Taint kernel when debug configfs parameters are set Stuart Summers
2026-07-22 22:25 ` ✗ CI.checkpatch: warning for Add new debug infrastructure for configfs (rev2) Patchwork
2026-07-22 22:27 ` ✓ CI.KUnit: success " Patchwork
2026-07-22 23:18 ` ✓ Xe.CI.BAT: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260722214656.107936-19-stuart.summers@intel.com \
--to=stuart.summers@intel.com \
--cc=Michal.Wajdeczko@intel.com \
--cc=daniele.ceraolospurio@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=matthew.brost@intel.com \
--cc=matthew.d.roper@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=shuicheng.lin@intel.com \
--cc=umesh.nerlige.ramappa@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox