diff --git a/shared/source/built_ins/built_ins.cpp b/shared/source/built_ins/built_ins.cpp index e33e89bf59..9faed9231e 100644 --- a/shared/source/built_ins/built_ins.cpp +++ b/shared/source/built_ins/built_ins.cpp @@ -73,7 +73,7 @@ const SipKernel &BuiltIns::getSipKernel(SipKernelType type, Device &device) { sipBuiltIn.first->parseBinaryForContextId(); } - if (debugManager.flags.ForceSipClass.get() == static_cast(SipClassType::builtins) && type == SipKernelType::csr) { + if (type == SipKernelType::csr) { rootDeviceEnvironment.getMutableHardwareInfo()->capabilityTable.requiredPreemptionSurfaceSize = sipBuiltIn.first->getStateSaveAreaSize(&device); } }; diff --git a/shared/source/os_interface/product_helper.cpp b/shared/source/os_interface/product_helper.cpp index 3be10fcb17..56adf305d1 100644 --- a/shared/source/os_interface/product_helper.cpp +++ b/shared/source/os_interface/product_helper.cpp @@ -26,9 +26,6 @@ void ProductHelper::setupPreemptionSurfaceSize(HardwareInfo &hwInfo, const RootD hwInfo.gtSystemInfo.CsrSizeInMb = static_cast(debugManager.flags.OverridePreemptionSurfaceSizeInMb.get()); } - if (debugManager.flags.ForceSipClass.get() == static_cast(SipClassType::builtins)) { - return; - } auto &gfxCoreHelper = rootDeviceEnvironment.getHelper(); hwInfo.capabilityTable.requiredPreemptionSurfaceSize = hwInfo.gtSystemInfo.CsrSizeInMb * MemoryConstants::megaByte; diff --git a/shared/test/common/mocks/mock_compilers.cpp b/shared/test/common/mocks/mock_compilers.cpp index 7bb509852b..5a1b31e2c2 100644 --- a/shared/test/common/mocks/mock_compilers.cpp +++ b/shared/test/common/mocks/mock_compilers.cpp @@ -545,12 +545,15 @@ bool MockIgcOclDeviceCtx::GetSystemRoutine(IGC::SystemRoutineType::SystemRoutine if (debugVars.binaryToReturnSize > 0 && debugVars.binaryToReturn != nullptr) { outSystemRoutineBuffer->PushBackRawBytes(debugVars.binaryToReturn, debugVars.binaryToReturnSize); - stateSaveAreaHeaderInit->PushBackRawBytes(mockData2, 64); - return true; + } else { + outSystemRoutineBuffer->PushBackRawBytes(mockData1, 64); } - outSystemRoutineBuffer->PushBackRawBytes(mockData1, 64); - stateSaveAreaHeaderInit->PushBackRawBytes(mockData2, 64); + if (debugVars.stateSaveAreaHeaderToReturnSize > 0 && debugVars.stateSaveAreaHeaderToReturn != nullptr) { + stateSaveAreaHeaderInit->PushBackRawBytes(debugVars.stateSaveAreaHeaderToReturn, debugVars.stateSaveAreaHeaderToReturnSize); + } else { + stateSaveAreaHeaderInit->PushBackRawBytes(mockData2, 64); + } return true; } diff --git a/shared/test/common/mocks/mock_compilers.h b/shared/test/common/mocks/mock_compilers.h index 6d4674646d..3ba0c49fd9 100644 --- a/shared/test/common/mocks/mock_compilers.h +++ b/shared/test/common/mocks/mock_compilers.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2023 Intel Corporation + * Copyright (C) 2018-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -37,6 +37,8 @@ struct MockCompilerDebugVars { size_t debugDataToReturnSize = 0; void *binaryToReturn = nullptr; size_t binaryToReturnSize = 0; + void *stateSaveAreaHeaderToReturn = nullptr; + size_t stateSaveAreaHeaderToReturnSize = 0; bool failCreatePlatformInterface = false; bool failCreateGtSystemInfoInterface = false; bool failCreateIgcFeWaInterface = false; diff --git a/shared/test/unit_test/built_ins/sip_tests.cpp b/shared/test/unit_test/built_ins/sip_tests.cpp index 918b31cb05..03bd262a90 100644 --- a/shared/test/unit_test/built_ins/sip_tests.cpp +++ b/shared/test/unit_test/built_ins/sip_tests.cpp @@ -409,6 +409,7 @@ TEST_F(StateSaveAreaSipTest, givenCorrectStateSaveAreaHeaderWhenGetStateSaveArea auto stateSaveSize = 0x1800u * numSlices * 8 * 7 + sizeof(NEO::StateSaveAreaHeader); EXPECT_EQ(alignUp(fifoSize + stateSaveSize, MemoryConstants::pageSize), SipKernel::getSipKernel(*pDevice, nullptr).getStateSaveAreaSize(pDevice)); } + TEST_F(StateSaveAreaSipTest, givenStateSaveAreaHeaderVersion4WhenGetStateSaveAreaSizeCalledThenTotalWmtpDataSizeIsReturned) { VariableBackup backupSipInitType(&MockSipData::useMockSip, true); MockSipData::mockSipKernel->mockStateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(4); @@ -417,6 +418,23 @@ TEST_F(StateSaveAreaSipTest, givenStateSaveAreaHeaderVersion4WhenGetStateSaveAre EXPECT_EQ(MockSipData::totalWmtpDataSize, SipKernel::getSipKernel(*pDevice, nullptr).getStateSaveAreaSize(pDevice)); } +TEST_F(StateSaveAreaSipTest, givenStateSaveAreaHeaderVersion4WhenGetSipKernelIsCalledForCsrSipThenPreemptionSurfaceSizeIsUpdated) { + auto stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(4); + MockCompilerDebugVars debugVars = {}; + debugVars.stateSaveAreaHeaderToReturn = stateSaveAreaHeader.data(); + debugVars.stateSaveAreaHeaderToReturnSize = stateSaveAreaHeader.size(); + gEnvironment->igcPushDebugVars(debugVars); + std::unique_ptr igcDebugVarsAutoPop{&gEnvironment, [](void *) -> void { gEnvironment->igcPopDebugVars(); }}; + + auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo(); + hwInfo->capabilityTable.requiredPreemptionSurfaceSize = static_cast(MockSipData::totalWmtpDataSize * 4); + EXPECT_NE(hwInfo->capabilityTable.requiredPreemptionSurfaceSize, MockSipData::totalWmtpDataSize); + + auto builtins = pDevice->getBuiltIns(); + EXPECT_EQ(MockSipData::totalWmtpDataSize, builtins->getSipKernel(SipKernelType::csr, *pDevice).getStateSaveAreaSize(pDevice)); + EXPECT_EQ(hwInfo->capabilityTable.requiredPreemptionSurfaceSize, MockSipData::totalWmtpDataSize); +} + TEST_F(StateSaveAreaSipTest, givenNotsupportedStateSaveAreaHeaderVersionWhenGetStateSaveAreaSizeCalledThenNoSizeIsReturned) { VariableBackup backupSipInitType(&MockSipData::useMockSip, true); MockSipData::mockSipKernel->mockStateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(1); diff --git a/shared/test/unit_test/os_interface/product_helper_tests.cpp b/shared/test/unit_test/os_interface/product_helper_tests.cpp index 4900ba14a4..7cb1694f01 100644 --- a/shared/test/unit_test/os_interface/product_helper_tests.cpp +++ b/shared/test/unit_test/os_interface/product_helper_tests.cpp @@ -1011,18 +1011,6 @@ HWTEST2_F(ProductHelperTest, givenPatIndexWhenCheckIsCoherentAllocationThenRetur } } -TEST(ProductHelperPreemptionSettingTest, whenSipClassIsForcedToBuiltinThenRequiredPreemptionSizeIsNotAdjusted) { - MockExecutionEnvironment executionEnvironment{}; - DebugManagerStateRestore restorer; - debugManager.flags.ForceSipClass.set(static_cast(SipClassType::builtins)); - auto hwInfo = *defaultHwInfo; - hwInfo.gtSystemInfo.CsrSizeInMb = 1; - constexpr uint32_t initialPreemptionSurfaceSize = 0xdeadbeef; - hwInfo.capabilityTable.requiredPreemptionSurfaceSize = initialPreemptionSurfaceSize; - MockProductHelper::setupPreemptionSurfaceSize(hwInfo, *executionEnvironment.rootDeviceEnvironments[0]); - EXPECT_EQ(initialPreemptionSurfaceSize, hwInfo.capabilityTable.requiredPreemptionSurfaceSize); -} - HWTEST2_F(ProductHelperTest, givenProductHelperWhenItsPreXe2ThenCacheLineSizeIs64Bytes, IsAtMostPVC) { EXPECT_EQ(productHelper->getCacheLineSize(), 64u); }