diff --git a/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp b/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp index 42a005a69d..de272bb6ee 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp @@ -1750,9 +1750,12 @@ TEST_F(DebugSessionTest, givenTssMagicCorruptedWhenStateSaveAreIsReadThenHeaderI Mock deviceImp(neoDevice, neoDevice->getExecutionEnvironment()); auto session = std::make_unique(config, &deviceImp); + session->readMemoryBuffer.resize(stateSaveAreaHeader.size()); + memcpy_s(session->readMemoryBuffer.data(), session->readMemoryBuffer.size(), stateSaveAreaHeader.data(), stateSaveAreaHeader.size()); + EuThread::ThreadId thread0(0, 0, 0, 0, 0); session->stateSaveAreaHeader.clear(); - session->validateAndSetStateSaveAreaHeader(session->allThreads[thread0]->getMemoryHandle(), reinterpret_cast(session->readMemoryBuffer)); + session->validateAndSetStateSaveAreaHeader(session->allThreads[thread0]->getMemoryHandle(), reinterpret_cast(session->readMemoryBuffer.data())); EXPECT_TRUE(session->stateSaveAreaHeader.empty()); } @@ -2591,7 +2594,9 @@ TEST_F(DebugSessionRegistersAccessTest, WhenReadingSbaRegistersThenCorrectAddres sbaExpected[i] = i * 0x1000; } - sbaExpected[ZET_DEBUG_SBA_SURFACE_STATE_INTEL_GPU] = reinterpret_cast(session->readMemoryBuffer); + session->readMemoryBuffer.assign(4 * gfxCoreHelper.getRenderSurfaceStateSize(), 5); + + sbaExpected[ZET_DEBUG_SBA_SURFACE_STATE_INTEL_GPU] = reinterpret_cast(session->readMemoryBuffer.data()); session->sba.instructionBaseAddress = sbaExpected[ZET_DEBUG_SBA_INSTRUCTION_INTEL_GPU]; session->sba.indirectObjectBaseAddress = sbaExpected[ZET_DEBUG_SBA_INDIRECT_OBJECT_INTEL_GPU]; @@ -2605,7 +2610,7 @@ TEST_F(DebugSessionRegistersAccessTest, WhenReadingSbaRegistersThenCorrectAddres if (gfxCoreHelper.isScratchSpaceSurfaceStateAccessible()) { const uint32_t ptss = 128; gfxCoreHelper.setRenderSurfaceStateForScratchResource(neoDevice->getRootDeviceEnvironment(), - &session->readMemoryBuffer[1 * (gfxCoreHelper.getRenderSurfaceStateSize() / sizeof(std::decay::type))], 1, scratchAllocationBase, 0, + &session->readMemoryBuffer[1 * (gfxCoreHelper.getRenderSurfaceStateSize())], 1, scratchAllocationBase, 0, ptss, nullptr, false, 6, false, true); r0Thread0[5] = 1 << 10; // first surface state @@ -2624,7 +2629,7 @@ TEST_F(DebugSessionRegistersAccessTest, WhenReadingSbaRegistersThenCorrectAddres if (gfxCoreHelper.isScratchSpaceSurfaceStateAccessible()) { const uint32_t ptss = 128; gfxCoreHelper.setRenderSurfaceStateForScratchResource(neoDevice->getRootDeviceEnvironment(), - &session->readMemoryBuffer[1 * (gfxCoreHelper.getRenderSurfaceStateSize() / sizeof(std::decay::type))], 1, scratchAllocationBase, 0, + &session->readMemoryBuffer[1 * (gfxCoreHelper.getRenderSurfaceStateSize())], 1, scratchAllocationBase, 0, ptss, nullptr, false, 6, false, true); r0Thread0[5] = 1 << 10; // first surface state @@ -2653,7 +2658,7 @@ TEST_F(DebugSessionRegistersAccessTest, WhenReadingSbaRegistersThenCorrectAddres if (gfxCoreHelper.isScratchSpaceSurfaceStateAccessible()) { const uint32_t ptss = 128; gfxCoreHelper.setRenderSurfaceStateForScratchResource(neoDevice->getRootDeviceEnvironment(), - &session->readMemoryBuffer[2 * (gfxCoreHelper.getRenderSurfaceStateSize() / sizeof(std::decay::type))], 1, scratchAllocationBase2Canonized, 0, + &session->readMemoryBuffer[2 * (gfxCoreHelper.getRenderSurfaceStateSize())], 1, scratchAllocationBase2Canonized, 0, ptss, nullptr, false, 6, false, true); r0Thread1[5] = 2 << 10; // second surface state diff --git a/level_zero/tools/test/unit_tests/sources/debug/mock_debug_session.h b/level_zero/tools/test/unit_tests/sources/debug/mock_debug_session.h index 2b1d3070e8..0bf4d8b3f6 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/mock_debug_session.h +++ b/level_zero/tools/test/unit_tests/sources/debug/mock_debug_session.h @@ -285,9 +285,10 @@ struct MockDebugSession : public L0::DebugSessionImp { memcpy_s(output, size, reinterpret_cast(gpuVa), size); } - else if (gpuVa != 0 && gpuVa >= reinterpret_cast(readMemoryBuffer) && - gpuVa <= reinterpret_cast(ptrOffset(readMemoryBuffer, sizeof(readMemoryBuffer)))) { - memcpy_s(output, size, reinterpret_cast(gpuVa), std::min(size, sizeof(readMemoryBuffer))); + else if (!readMemoryBuffer.empty() && + (gpuVa != 0 && gpuVa >= reinterpret_cast(readMemoryBuffer.data()) && + gpuVa <= reinterpret_cast(ptrOffset(readMemoryBuffer.data(), readMemoryBuffer.size())))) { + memcpy_s(output, size, reinterpret_cast(gpuVa), std::min(size, readMemoryBuffer.size())); } return readMemoryResult; } @@ -511,7 +512,7 @@ struct MockDebugSession : public L0::DebugSessionImp { std::vector> resumedThreads; NEO::SbaTrackedAddresses sba; - uint64_t readMemoryBuffer[64]; + std::vector readMemoryBuffer; uint64_t regs[16]; int returnTimeDiff = -1;