Commit 391008f3 authored by Matthew Brost's avatar Matthew Brost Committed by Lucas De Marchi
Browse files

drm/xe: Add page queue multiplier



For an unknown reason the math to determine the PF queue size does is
not correct - compute UMD applications are overflowing the PF queue
which is fatal. A multippier of 8 fixes the problem.

Fixes: 3338e4f9 ("drm/xe: Use topology to determine page fault queue size")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarJagmeet Randhawa <jagmeet.randhawa@intel.com>
Link: https://lore.kernel.org/r/20250408155915.78770-1-matthew.brost@intel.com


(cherry picked from commit 29582e0e)
Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
parent 92a09c47
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -435,9 +435,16 @@ static int xe_alloc_pf_queue(struct xe_gt *gt, struct pf_queue *pf_queue)
	num_eus = bitmap_weight(gt->fuse_topo.eu_mask_per_dss,
				XE_MAX_EU_FUSE_BITS) * num_dss;

	/* user can issue separate page faults per EU and per CS */
	/*
	 * user can issue separate page faults per EU and per CS
	 *
	 * XXX: Multiplier required as compute UMD are getting PF queue errors
	 * without it. Follow on why this multiplier is required.
	 */
#define PF_MULTIPLIER	8
	pf_queue->num_dw =
		(num_eus + XE_NUM_HW_ENGINES) * PF_MSG_LEN_DW;
		(num_eus + XE_NUM_HW_ENGINES) * PF_MSG_LEN_DW * PF_MULTIPLIER;
#undef PF_MULTIPLIER

	pf_queue->gt = gt;
	pf_queue->data = devm_kcalloc(xe->drm.dev, pf_queue->num_dw,