Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] drm/xe: flush gtt before signalling user fence on all engines
@ 2024-05-22  7:27 Andrzej Hajda
  2024-05-22  7:33 ` ✓ CI.Patch_applied: success for " Patchwork
                   ` (17 more replies)
  0 siblings, 18 replies; 32+ messages in thread
From: Andrzej Hajda @ 2024-05-22  7:27 UTC (permalink / raw)
  To: intel-xe
  Cc: Lucas De Marchi, Thomas Hellström, Maarten Lankhorst,
	Matthew Auld, Andrzej Hajda, Matthew Brost

Tests show that user fence signalling requires kind of write barrier,
otherwise not all writes performed by the workload will be available
to userspace. It is already done for render and compute, we need it
also for the rest: video, gsc, copy.

v2: added gsc and copy engines, added fixes and r-b tags

Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1488
Fixes: dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
Changes in v2:
- Added fixes and r-b tags
- Link to v1: https://lore.kernel.org/r/20240521-xu_flush_vcs_before_ufence-v1-1-ded38b56c8c9@intel.com
---
Matthew,

I have extended patch to copy and gsc engines. I have kept your r-b,
since the change is similar, I hope it is OK.
---
 drivers/gpu/drm/xe/xe_ring_ops.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ring_ops.c b/drivers/gpu/drm/xe/xe_ring_ops.c
index a3ca718456f6..a46a1257a24f 100644
--- a/drivers/gpu/drm/xe/xe_ring_ops.c
+++ b/drivers/gpu/drm/xe/xe_ring_ops.c
@@ -234,13 +234,13 @@ static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc
 
 	i = emit_bb_start(batch_addr, ppgtt_flag, dw, i);
 
+	i = emit_flush_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, false, dw, i);
+
 	if (job->user_fence.used)
 		i = emit_store_imm_ppgtt_posted(job->user_fence.addr,
 						job->user_fence.value,
 						dw, i);
 
-	i = emit_flush_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, false, dw, i);
-
 	i = emit_user_interrupt(dw, i);
 
 	xe_gt_assert(gt, i <= MAX_JOB_SIZE_DW);
@@ -293,13 +293,13 @@ static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc,
 
 	i = emit_bb_start(batch_addr, ppgtt_flag, dw, i);
 
+	i = emit_flush_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, false, dw, i);
+
 	if (job->user_fence.used)
 		i = emit_store_imm_ppgtt_posted(job->user_fence.addr,
 						job->user_fence.value,
 						dw, i);
 
-	i = emit_flush_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, false, dw, i);
-
 	i = emit_user_interrupt(dw, i);
 
 	xe_gt_assert(gt, i <= MAX_JOB_SIZE_DW);

---
base-commit: 188ced1e0ff892f0948f20480e2e0122380ae46d
change-id: 20240521-xu_flush_vcs_before_ufence-a7b45d94cf33

Best regards,
-- 
Andrzej Hajda <andrzej.hajda@intel.com>


^ permalink raw reply related	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2024-06-03 22:28 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-22  7:27 [PATCH v2] drm/xe: flush gtt before signalling user fence on all engines Andrzej Hajda
2024-05-22  7:33 ` ✓ CI.Patch_applied: success for " Patchwork
2024-05-22  7:33 ` ✓ CI.checkpatch: " Patchwork
2024-05-22  7:34 ` ✓ CI.KUnit: " Patchwork
2024-05-22  7:46 ` ✓ CI.Build: " Patchwork
2024-05-22  7:48 ` ✓ CI.Hooks: " Patchwork
2024-05-22  7:50 ` ✓ CI.checksparse: " Patchwork
2024-05-22  8:40 ` ✗ CI.BAT: failure " Patchwork
2024-05-24 14:22   ` â " Andrzej Hajda
2024-05-22 10:34 ` ✗ CI.FULL: " Patchwork
2024-05-24 14:30   ` â " Andrzej Hajda
2024-05-24 14:33 ` ✓ CI.Patch_applied: success for drm/xe: flush gtt before signalling user fence on all engines (rev2) Patchwork
2024-05-24 14:33 ` ✓ CI.checkpatch: " Patchwork
2024-05-24 14:34 ` ✓ CI.KUnit: " Patchwork
2024-05-24 14:45 ` ✓ CI.Build: " Patchwork
2024-05-24 14:48 ` ✓ CI.Hooks: " Patchwork
2024-05-24 14:49 ` ✓ CI.checksparse: " Patchwork
2024-05-24 15:17 ` ✓ CI.BAT: " Patchwork
2024-05-27 13:31 ` ✓ CI.FULL: " Patchwork
2024-05-28 11:35 ` [PATCH v2] drm/xe: flush gtt before signalling user fence on all engines Andrzej Hajda
2024-05-28 12:41   ` Nirmoy Das
2024-05-30 11:17 ` Thomas Hellström
2024-05-30 20:45   ` Matthew Brost
2024-06-03  7:35     ` Thomas Hellström
2024-06-03  8:11       ` Andrzej Hajda
2024-06-03  8:47         ` Thomas Hellström
2024-06-03  9:31           ` Thomas Hellström
2024-06-03 10:19             ` Andrzej Hajda
2024-06-03 11:59               ` Thomas Hellström
2024-06-03 17:42           ` Matthew Brost
2024-06-03 20:35             ` Thomas Hellström
2024-06-03 22:28               ` Matthew Brost

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox