From 5b643660875d01c203782a86ac5e3353849bc513 Mon Sep 17 00:00:00 2001 From: Matthew Brost Date: Fri, 20 Jan 2023 09:17:50 -0800 Subject: [PATCH] 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 Reviewed-by: Niranjana Vishwanathapura Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/xe/xe_guc_ct.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c index f48eb01847efa..6e25c1d5d43ea 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: -- 2.30.2