mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-11-10 20:48:12 +00:00
drm/xe: batch CT pagefault acks with periodic flush
Pagefault storms can generate long chains of acknowledgments back to the GuC. Sending each ack as a full CT submission forces a barrier, descriptor update and doorbell per fault. Extend xe_guc_ct_send_locked() with a “defer-flush” mode that copies the message into the H2G ring but defers publishing the descriptor and ringing the doorbell. Add xe_guc_ct_send_flush() to publish pending writes and notify GuC once per batch. Wire this into the pagefault producer via new ack_fault_begin/ack_fault_end callbacks and CT lock wrappers. To avoid excessive flush latency while still amortizing MMIO costs, use a simple periodic flush heuristic for GuC pagefault acks: batch most acks as defer-flush and force a publish at a fixed interval (e.g., every 16th ack), with a final flush at end-of-batch. Also increase the H2G CTB size to 16K to better absorb bursts. Assisted-by: ChatGPT:gpt-5 # Documentation Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Francois Dugast <francois.dugast@intel.com> Link: https://patch.msgid.link/20260806185202.3922432-12-matthew.brost@intel.com
This commit is contained in:
parent
dd157120f7
commit
d4a7e16117
6 changed files with 172 additions and 25 deletions
Loading…
Add table
Add a link
Reference in a new issue