fix: correct preemption surface size when getting wmtp sip from igc

when SIP kernel is taken from IGC then state save area header
describes preemption surface size required for the SIP kernel

Related-To: NEO-12826
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2024-09-30 12:57:27 +00:00
committed by Compute-Runtime-Automation
parent 9e03c52e71
commit da8ce85f0a
6 changed files with 29 additions and 21 deletions

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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<bool> 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<void, void (*)(void *)> igcDebugVarsAutoPop{&gEnvironment, [](void *) -> void { gEnvironment->igcPopDebugVars(); }};
auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
hwInfo->capabilityTable.requiredPreemptionSurfaceSize = static_cast<size_t>(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<bool> backupSipInitType(&MockSipData::useMockSip, true);
MockSipData::mockSipKernel->mockStateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(1);

View File

@@ -1011,18 +1011,6 @@ HWTEST2_F(ProductHelperTest, givenPatIndexWhenCheckIsCoherentAllocationThenRetur
}
}
TEST(ProductHelperPreemptionSettingTest, whenSipClassIsForcedToBuiltinThenRequiredPreemptionSizeIsNotAdjusted) {
MockExecutionEnvironment executionEnvironment{};
DebugManagerStateRestore restorer;
debugManager.flags.ForceSipClass.set(static_cast<int32_t>(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);
}