mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	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: 3338e4f90c ("drm/xe: Use topology to determine page fault queue size")
Cc: stable@vger.kernel.org
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Jagmeet Randhawa <jagmeet.randhawa@intel.com>
Link: https://lore.kernel.org/r/20250408155915.78770-1-matthew.brost@intel.com
			
			
This commit is contained in:
		
							parent
							
								
									3ded92c439
								
							
						
					
					
						commit
						29582e0ea7
					
				
					 1 changed files with 9 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue