Mesa (master): radeonsi: fix a critical SI hang since PIPELINESTAT_START/ STOP was added

Marek Olšák mareko at kemper.freedesktop.org
Tue Apr 12 23:05:37 UTC 2016


Module: Mesa
Branch: master
Commit: 8e70a58af394a8699aecdaad6e406a9183ce2090
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e70a58af394a8699aecdaad6e406a9183ce2090

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Apr 12 23:39:42 2016 +0200

radeonsi: fix a critical SI hang since PIPELINESTAT_START/STOP was added

For some reason unknown to me, SI hangs if the event is written after
CONTEXT_CONTROL.

---

 src/gallium/drivers/radeonsi/si_hw_context.c | 3 ++-
 src/gallium/drivers/radeonsi/si_state.c      | 8 --------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_hw_context.c b/src/gallium/drivers/radeonsi/si_hw_context.c
index 242c22c..b621b55 100644
--- a/src/gallium/drivers/radeonsi/si_hw_context.c
+++ b/src/gallium/drivers/radeonsi/si_hw_context.c
@@ -155,7 +155,8 @@ void si_begin_new_cs(struct si_context *ctx)
 			SI_CONTEXT_INV_VMEM_L1 |
 			SI_CONTEXT_INV_GLOBAL_L2 |
 			SI_CONTEXT_INV_SMEM_L1 |
-			SI_CONTEXT_INV_ICACHE;
+			SI_CONTEXT_INV_ICACHE |
+			R600_CONTEXT_START_PIPELINE_STATS;
 
 	/* set all valid group as dirty so they get reemited on
 	 * next draw command
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 664506e..4d24fa3 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -3817,14 +3817,6 @@ static void si_init_config(struct si_context *sctx)
 	si_pm4_cmd_add(pm4, 0x80000000);
 	si_pm4_cmd_end(pm4, false);
 
-	/* This enables pipeline stat & streamout queries.
-	 * They are only disabled by blits.
-	 */
-	si_pm4_cmd_begin(pm4, PKT3_EVENT_WRITE);
-	si_pm4_cmd_add(pm4, EVENT_TYPE(V_028A90_PIPELINESTAT_START) |
-		            EVENT_INDEX(0));
-	si_pm4_cmd_end(pm4, false);
-
 	si_pm4_set_reg(pm4, R_028A18_VGT_HOS_MAX_TESS_LEVEL, fui(64));
 	si_pm4_set_reg(pm4, R_028A1C_VGT_HOS_MIN_TESS_LEVEL, fui(0));
 




More information about the mesa-commit mailing list