From 3989471ffc25198497a411db19bc04a06d009920 Mon Sep 17 00:00:00 2001 From: "Vysochyn, Illia" Date: Wed, 28 May 2025 01:00:05 +0000 Subject: [PATCH] fix: Use round robin after stall as a default arbitration mode Related-To: NEO-14251,HSD-18042035684,HSD-18041638491,HSD-18042040816 Signed-off-by: Vysochyn, Illia --- shared/source/generated/xe3_core/hw_cmds_generated_xe3_core.inl | 2 +- shared/source/xe3_core/command_encoder_xe3_core.cpp | 2 +- .../test/unit_test/xe3_core/command_encoder_xe3_core_tests.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/shared/source/generated/xe3_core/hw_cmds_generated_xe3_core.inl b/shared/source/generated/xe3_core/hw_cmds_generated_xe3_core.inl index 8b30cce5d3..535aed6437 100644 --- a/shared/source/generated/xe3_core/hw_cmds_generated_xe3_core.inl +++ b/shared/source/generated/xe3_core/hw_cmds_generated_xe3_core.inl @@ -5408,7 +5408,7 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA { } PREFERRED_SLM_ALLOCATION_SIZE; inline void init() { memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.EuThreadSchedulingModeOverride = EU_THREAD_SCHEDULING_MODE_OVERRIDE_HW_DEFAULT; + TheStructure.Common.EuThreadSchedulingModeOverride = EU_THREAD_SCHEDULING_MODE_OVERRIDE_STALL_BASED_ROUND_ROBIN; // patched TheStructure.Common.FloatingPointMode = FLOATING_POINT_MODE_IEEE_754; TheStructure.Common.SingleProgramFlow = SINGLE_PROGRAM_FLOW_MULTIPLE; TheStructure.Common.DenormMode = DENORM_MODE_FTZ; diff --git a/shared/source/xe3_core/command_encoder_xe3_core.cpp b/shared/source/xe3_core/command_encoder_xe3_core.cpp index 6128ad0fec..42c87b4e70 100644 --- a/shared/source/xe3_core/command_encoder_xe3_core.cpp +++ b/shared/source/xe3_core/command_encoder_xe3_core.cpp @@ -153,7 +153,7 @@ void EncodeDispatchKernel::encodeEuSchedulingPolicy(InterfaceDescriptorT pInterfaceDescriptor->setEuThreadSchedulingModeOverride(INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_STALL_BASED_ROUND_ROBIN); break; default: - pInterfaceDescriptor->setEuThreadSchedulingModeOverride(INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_HW_DEFAULT); + pInterfaceDescriptor->setEuThreadSchedulingModeOverride(INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_STALL_BASED_ROUND_ROBIN); } } } diff --git a/shared/test/unit_test/xe3_core/command_encoder_xe3_core_tests.cpp b/shared/test/unit_test/xe3_core/command_encoder_xe3_core_tests.cpp index 9e75b25f55..7bfcfbd702 100644 --- a/shared/test/unit_test/xe3_core/command_encoder_xe3_core_tests.cpp +++ b/shared/test/unit_test/xe3_core/command_encoder_xe3_core_tests.cpp @@ -206,7 +206,7 @@ XE3_CORETEST_F(Xe3CoreCommandEncoderTest, givenPipelinedEuThreadArbitrationPolic { kernelDescriptor.kernelAttributes.threadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent; EncodeDispatchKernel::encodeEuSchedulingPolicy(&idd, kernelDescriptor, defaultPipelinedThreadArbitrationPolicy); - EXPECT_EQ(INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_HW_DEFAULT, idd.getEuThreadSchedulingModeOverride()); + EXPECT_EQ(INTERFACE_DESCRIPTOR_DATA::EU_THREAD_SCHEDULING_MODE_OVERRIDE::EU_THREAD_SCHEDULING_MODE_OVERRIDE_STALL_BASED_ROUND_ROBIN, idd.getEuThreadSchedulingModeOverride()); } defaultPipelinedThreadArbitrationPolicy = ThreadArbitrationPolicy::RoundRobin;