]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/pf: Add handling for MLRC adverse event threshold
authorDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Tue, 16 Dec 2025 21:48:59 +0000 (22:48 +0100)
committerMichal Wajdeczko <michal.wajdeczko@intel.com>
Wed, 17 Dec 2025 22:42:46 +0000 (23:42 +0100)
Since it is illegal to register a MLRC context when scheduler groups are
enabled, the GuC consider the VF doing so as an adverse event. Like for
other adverse event, there is a threshold for how many times the event
can happen before the GuC throws an error, which we need to add support
for.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Acked-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251216214902.1429-5-michal.wajdeczko@intel.com
drivers/gpu/drm/xe/abi/guc_klvs_abi.h
drivers/gpu/drm/xe/xe_guc_klv_thresholds_set_types.h

index 265a135e7061ebac70d02a4c6f97b6a61f6334fa..89a4f8c504e6cbb7229f91d29946f107c8d7f2f8 100644 (file)
@@ -352,6 +352,12 @@ enum  {
  *      :1: NORMAL = schedule VF always, irrespective of whether it has work or not
  *      :2: HIGH = schedule VF in the next time-slice after current active
  *          time-slice completes if it has active work
+ *
+ * _`GUC_KLV_VF_CFG_THRESHOLD_MULTI_LRC_COUNT` : 0x8A0D
+ *      Given that multi-LRC contexts are incompatible with SRIOV scheduler
+ *      groups and cause the latter to be turned off when registered with the
+ *      GuC, this config allows the PF to set a threshold for multi-LRC context
+ *      registrations by VFs to monitor their behavior.
  */
 
 #define GUC_KLV_VF_CFG_GGTT_START_KEY          0x0001
@@ -410,6 +416,9 @@ enum  {
 #define   GUC_SCHED_PRIORITY_NORMAL            1u
 #define   GUC_SCHED_PRIORITY_HIGH              2u
 
+#define GUC_KLV_VF_CFG_THRESHOLD_MULTI_LRC_COUNT_KEY   0x8a0d
+#define GUC_KLV_VF_CFG_THRESHOLD_MULTI_LRC_COUNT_LEN   1u
+
 /*
  * Workaround keys:
  */
index 5f84da3d10d31420c878660c033e173a0117a6ca..45ab5a3b5218873002617f8a66a6265cffa2eb5a 100644 (file)
@@ -37,6 +37,7 @@
        define(H2G_STORM, guc_time_us)                  \
        define(IRQ_STORM, irq_time_us)                  \
        define(DOORBELL_STORM, doorbell_time_us)        \
+       define(MULTI_LRC_COUNT, multi_lrc_count, 70, 53)\
        /* end */
 
 /**