diff --git a/shared/source/built_ins/sip.cpp b/shared/source/built_ins/sip.cpp index 586481f3be..0892a39768 100644 --- a/shared/source/built_ins/sip.cpp +++ b/shared/source/built_ins/sip.cpp @@ -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 * diff --git a/shared/test/unit_test/built_ins/sip_tests.cpp b/shared/test/unit_test/built_ins/sip_tests.cpp index f94a3b82e5..1a2e53f008 100644 --- a/shared/test/unit_test/built_ins/sip_tests.cpp +++ b/shared/test/unit_test/built_ins/sip_tests.cpp @@ -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 backupSipInitType(&MockSipData::useMockSip, true); + MockSipData::mockSipKernel->mockStateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(1); + auto header = reinterpret_cast(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);