From 8155943c5f2dce96696ef55ee558b9aa20e7b997 Mon Sep 17 00:00:00 2001 From: Pengda Xie Date: Thu, 19 Dec 2024 17:41:38 -0800 Subject: [PATCH] SWDEV-505833 - Provide functionality to avoid L2 flush for CPX mode for dispatch packets - Added DEBUG_CLR_SKIP_RELEASE_SCOPE flag to force release scope to SCOPE_NONE in AQL packet header Change-Id: Ife02cddb9d5cd4749103ce585d3d5fe9024c6868 --- rocclr/device/rocm/rocvirtual.cpp | 6 ++++++ rocclr/utils/flags.hpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/rocclr/device/rocm/rocvirtual.cpp b/rocclr/device/rocm/rocvirtual.cpp index 8ccaa949a2..84ef3125ce 100644 --- a/rocclr/device/rocm/rocvirtual.cpp +++ b/rocclr/device/rocm/rocvirtual.cpp @@ -906,6 +906,12 @@ bool VirtualGPU::dispatchGenericAqlPacket( addSystemScope_ = false; } + if (DEBUG_CLR_SKIP_RELEASE_SCOPE) { + header &= ~(HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE | + HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); + header |= (HSA_FENCE_SCOPE_NONE << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); + } + auto expected_fence_state = extractAqlBits(header, HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE, HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE); diff --git a/rocclr/utils/flags.hpp b/rocclr/utils/flags.hpp index 56130f75ab..00d1b4ce76 100644 --- a/rocclr/utils/flags.hpp +++ b/rocclr/utils/flags.hpp @@ -269,6 +269,8 @@ release(bool, DEBUG_CLR_USE_STDMUTEX_IN_AMD_MONITOR, false, \ "Use std::mutex in amd::monitor") \ release(bool, DEBUG_CLR_KERNARG_HDP_FLUSH_WA, false, \ "Toggle kernel arg copy workaround") \ +release(bool, DEBUG_CLR_SKIP_RELEASE_SCOPE, false, \ + "Forces release scope to SCOPE_NONE for aql packets") \ release(uint, DEBUG_HIP_7_PREVIEW, 0, \ "Enables specific backward incompatible changes support before 7.0," \ "using the mask. By default the changes are disabled and is set to 0")\