@@ -342,6 +342,16 @@ static int emit_no_arbitration(struct i915_request *rq)
342
342
return 0 ;
343
343
}
344
344
345
+ static int max_pte_pkt_size (struct i915_request * rq , int pkt )
346
+ {
347
+ struct intel_ring * ring = rq -> ring ;
348
+
349
+ pkt = min_t (int , pkt , (ring -> space - rq -> reserved_space ) / sizeof (u32 ) + 5 );
350
+ pkt = min_t (int , pkt , (ring -> size - ring -> emit ) / sizeof (u32 ) + 5 );
351
+
352
+ return pkt ;
353
+ }
354
+
345
355
static int emit_pte (struct i915_request * rq ,
346
356
struct sgt_dma * it ,
347
357
enum i915_cache_level cache_level ,
@@ -388,8 +398,7 @@ static int emit_pte(struct i915_request *rq,
388
398
return PTR_ERR (cs );
389
399
390
400
/* Pack as many PTE updates as possible into a single MI command */
391
- pkt = min_t (int , dword_length , ring -> space / sizeof (u32 ) + 5 );
392
- pkt = min_t (int , pkt , (ring -> size - ring -> emit ) / sizeof (u32 ) + 5 );
401
+ pkt = max_pte_pkt_size (rq , dword_length );
393
402
394
403
hdr = cs ;
395
404
* cs ++ = MI_STORE_DATA_IMM | REG_BIT (21 ); /* as qword elements */
@@ -422,8 +431,7 @@ static int emit_pte(struct i915_request *rq,
422
431
}
423
432
}
424
433
425
- pkt = min_t (int , dword_rem , ring -> space / sizeof (u32 ) + 5 );
426
- pkt = min_t (int , pkt , (ring -> size - ring -> emit ) / sizeof (u32 ) + 5 );
434
+ pkt = max_pte_pkt_size (rq , dword_rem );
427
435
428
436
hdr = cs ;
429
437
* cs ++ = MI_STORE_DATA_IMM | REG_BIT (21 );
0 commit comments