Commit 487524c8 authored by Daniele Ceraolo Spurio's avatar Daniele Ceraolo Spurio Committed by Michal Wajdeczko
Browse files

drm/xe/pf: Add handling for MLRC adverse event threshold



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: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Acked-by: default avatarMatthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251216214902.1429-5-michal.wajdeczko@intel.com
parent 4cffecaf
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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:
 */
+1 −0
Original line number Diff line number Diff line
@@ -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 */

/**