aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Brost <matthew.brost@intel.com>2023-01-20 09:17:50 -0800
committerRodrigo Vivi <rodrigo.vivi@intel.com>2023-12-19 18:27:45 -0500
commit5b643660875d01c203782a86ac5e3353849bc513 (patch)
tree317a7817f77280156fe4b22824c4978b4502d887
parente89b384cde622f6f553a740c73870327ee86fcc5 (diff)
drm/xe: Don't process TLB invalidation done in CT fast-path
We can't currently do this due to TLB invalidation done handler expecting the seqno being received in-order, with the fast-path a TLB invalidation done could pass one being processed in the slow-path in an extreme corner case. Remove TLB invalidation done from the fast-path for now and in a follow up reenable this once the TLB invalidation done handler can deal with out of order seqno. Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
-rw-r--r--drivers/gpu/drm/xe/xe_guc_ct.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index f48eb01847ef..6e25c1d5d43e 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -966,7 +966,14 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
return 0;
switch (FIELD_GET(GUC_HXG_EVENT_MSG_0_ACTION, msg[1])) {
- case XE_GUC_ACTION_TLB_INVALIDATION_DONE:
+ /*
+ * FIXME: We really should process
+ * XE_GUC_ACTION_TLB_INVALIDATION_DONE here in the fast-path as
+ * these critical for page fault performance. We currently can't
+ * due to TLB invalidation done algorithm expecting the seqno
+ * returned in-order. With some small changes to the algorithm
+ * and locking we should be able to support out-of-order seqno.
+ */
case XE_GUC_ACTION_REPORT_PAGE_FAULT_REQ_DESC:
break; /* Process these in fast-path */
default: