mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 15:20:36 +08:00
fix: Take regset_desc from correct SSH based on version major
Related-To: NEO-7988 Signed-off-by: Jitendra Sharma <jitendra.sharma@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
ede98e3d2c
commit
0b3a6df5db
@@ -1495,7 +1495,14 @@ ze_result_t DebugSessionImp::registersAccessHelper(const EuThread *thread, const
|
||||
|
||||
ze_result_t DebugSessionImp::cmdRegisterAccessHelper(const EuThread::ThreadId &threadId, SIP::sip_command &command, bool write) {
|
||||
auto stateSaveAreaHeader = getStateSaveAreaHeader();
|
||||
auto *regdesc = &stateSaveAreaHeader->regHeader.cmd;
|
||||
const SIP::regset_desc *regdesc = nullptr;
|
||||
if (stateSaveAreaHeader->versionHeader.version.major == 3) {
|
||||
regdesc = &stateSaveAreaHeader->regHeaderV3.cmd;
|
||||
} else if (stateSaveAreaHeader->versionHeader.version.major < 3) {
|
||||
regdesc = &stateSaveAreaHeader->regHeader.cmd;
|
||||
} else {
|
||||
UNRECOVERABLE_IF(true);
|
||||
}
|
||||
|
||||
PRINT_DEBUGGER_INFO_LOG("Access CMD %d for thread %s\n", command.command, EuThread::toString(threadId).c_str());
|
||||
|
||||
|
||||
@@ -2500,6 +2500,32 @@ TEST_F(MultiTileDebugSessionTest, GivenMultitileDeviceWhenCallingAreRequestedThr
|
||||
|
||||
using DebugSessionRegistersAccessTestV3 = Test<DebugSessionRegistersAccessV3>;
|
||||
|
||||
TEST_F(DebugSessionRegistersAccessTestV3, GivenSipVersion3WhenCallingResumeThenResumeInCmdRegisterIsWritten) {
|
||||
session->debugArea.reserved1 = 1u;
|
||||
|
||||
{
|
||||
auto pStateSaveAreaHeader = session->getStateSaveAreaHeader();
|
||||
auto size = pStateSaveAreaHeader->versionHeader.size * 8 +
|
||||
pStateSaveAreaHeader->regHeaderV3.state_area_offset +
|
||||
pStateSaveAreaHeader->regHeaderV3.state_save_size * 16;
|
||||
session->stateSaveAreaHeader.resize(size);
|
||||
}
|
||||
session->skipWriteResumeCommand = false;
|
||||
|
||||
ze_device_thread_t thread = {0, 0, 0, 0};
|
||||
EuThread::ThreadId threadId(0, thread);
|
||||
session->allThreads[threadId]->stopThread(1u);
|
||||
|
||||
dumpRegisterState();
|
||||
|
||||
auto result = session->resume(thread);
|
||||
EXPECT_EQ(result, ZE_RESULT_SUCCESS);
|
||||
|
||||
EXPECT_EQ(0u, session->readRegistersCallCount);
|
||||
EXPECT_EQ(0u, session->writeRegistersCallCount);
|
||||
EXPECT_EQ(1u, session->writeResumeCommandCalled);
|
||||
}
|
||||
|
||||
TEST_F(DebugSessionRegistersAccessTestV3, givenV3StateSaveHeaderWhenCalculatingSrMagicOffsetResultIsCorrect) {
|
||||
|
||||
auto pStateSaveAreaHeader = session->getStateSaveAreaHeader();
|
||||
|
||||
Reference in New Issue
Block a user