fix: handle not recognized state save area header version

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski 2024-08-22 12:38:46 +00:00 committed by Compute-Runtime-Automation
parent 556ba1b7c4
commit 06bc53fa9d
2 changed files with 10 additions and 2 deletions

View File

@ -98,7 +98,7 @@ size_t SipKernel::getStateSaveAreaSize(Device *device) const {
auto numSlices = NEO::GfxCoreHelper::getHighestEnabledSlice(hwInfo);
size_t stateSaveAreaSize = 0;
if (hdr->versionHeader.version.major >= 3) {
if (hdr->versionHeader.version.major == 3) {
stateSaveAreaSize = numSlices *
hdr->regHeaderV3.num_subslices_per_slice *
hdr->regHeaderV3.num_eus_per_subslice *
@ -107,7 +107,7 @@ size_t SipKernel::getStateSaveAreaSize(Device *device) const {
hdr->versionHeader.size * 8 + hdr->regHeaderV3.state_area_offset;
stateSaveAreaSize += hdr->regHeaderV3.fifo_size * sizeof(SIP::fifo_node);
} else {
} else if (hdr->versionHeader.version.major < 3) {
stateSaveAreaSize = numSlices *
hdr->regHeader.num_subslices_per_slice *
hdr->regHeader.num_eus_per_subslice *

View File

@ -407,6 +407,14 @@ TEST_F(StateSaveAreaSipTest, givenCorrectStateSaveAreaHeaderWhenGetStateSaveArea
EXPECT_EQ(alignUp(fifoSize + stateSaveSize, MemoryConstants::pageSize), SipKernel::getSipKernel(*pDevice, nullptr).getStateSaveAreaSize(pDevice));
}
TEST_F(StateSaveAreaSipTest, givenNotsupportedStateSaveAreaHeaderVersionWhenGetStateSaveAreaSizeCalledThenNoSizeIsReturned) {
VariableBackup<bool> backupSipInitType(&MockSipData::useMockSip, true);
MockSipData::mockSipKernel->mockStateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(1);
auto header = reinterpret_cast<SIP::StateSaveAreaHeader *>(MockSipData::mockSipKernel->mockStateSaveAreaHeader.data());
header->versionHeader.version.major = 4u;
EXPECT_EQ(0u, SipKernel::getSipKernel(*pDevice, nullptr).getStateSaveAreaSize(pDevice));
}
TEST(DebugBindlessSip, givenDebuggerAndUseBindlessDebugSipWhenGettingSipTypeThenDebugBindlessTypeIsReturned) {
DebugManagerStateRestore restorer;
NEO::debugManager.flags.UseBindlessDebugSip.set(1);