From 5f13996262a6d72ca5b5c235647d5257ae961b66 Mon Sep 17 00:00:00 2001 From: Rafael Antognolli Date: Tue, 3 Mar 2020 08:07:32 -0800 Subject: intel/gen12+: Disable mid thread preemption. Fixes a GPU hang in Car Chase. Cc: mesa-stable@lists.freedesktop.org v2: Add comment explaining why (Jason). Reviewed-by: Jason Ekstrand Reviewed-by: Lionel Landwerlin Tested-by: Marge Bot Part-of: --- src/gallium/drivers/iris/iris_state.c | 12 ++++++++++++ src/intel/genxml/gen12.xml | 1 + src/intel/vulkan/genX_pipeline.c | 12 ++++++++++++ 3 files changed, 25 insertions(+) diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 5574b073a79..6c760e04635 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -4378,6 +4378,18 @@ iris_store_cs_state(struct iris_context *ice, desc.BarrierEnable = cs_prog_data->uses_barrier; desc.CrossThreadConstantDataReadLength = cs_prog_data->push.cross_thread.regs; +#if GEN_GEN >= 12 + /* TODO: Check if we are missing workarounds and enable mid-thread + * preemption. + * + * We still have issues with mid-thread preemption (it was already + * disabled by the kernel on gen11, due to missing workarounds). It's + * possible that we are just missing some workarounds, and could enable + * it later, but for now let's disable it to fix a GPU in compute in Car + * Chase (and possibly more). + */ + desc.ThreadPreemptionDisable = true; +#endif } } diff --git a/src/intel/genxml/gen12.xml b/src/intel/genxml/gen12.xml index 127bc549a8b..f9fd2321428 100644 --- a/src/intel/genxml/gen12.xml +++ b/src/intel/genxml/gen12.xml @@ -525,6 +525,7 @@ + diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index c9f8eaa6f51..52a363fc075 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -2354,6 +2354,18 @@ compute_pipeline_create( .CrossThreadConstantDataReadLength = cs_prog_data->push.cross_thread.regs, #endif +#if GEN_GEN >= 12 + /* TODO: Check if we are missing workarounds and enable mid-thread + * preemption. + * + * We still have issues with mid-thread preemption (it was already + * disabled by the kernel on gen11, due to missing workarounds). It's + * possible that we are just missing some workarounds, and could enable + * it later, but for now let's disable it to fix a GPU in compute in Car + * Chase (and possibly more). + */ + .ThreadPreemptionDisable = true, +#endif .NumberofThreadsinGPGPUThreadGroup = cs_prog_data->threads, }; -- cgit v1.2.1