Skip to content

Commit e8a9099

Browse files
Refactor register access functions
- use ThreadId instead of api ze_dvice_thread_t Related-To: NEO-5784 Signed-off-by: Mateusz Hoppe <[email protected]>
1 parent 5dd25d9 commit e8a9099

File tree

3 files changed

+27
-29
lines changed

3 files changed

+27
-29
lines changed

level_zero/tools/source/debug/debug_session_imp.cpp

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -347,14 +347,13 @@ bool DebugSessionImp::writeResumeCommand(const std::vector<EuThread::ThreadId> &
347347
auto reg = std::make_unique<uint32_t[]>(regSize / sizeof(uint32_t));
348348

349349
for (auto &threadID : threadIds) {
350-
auto apiThread = convertToApi(threadID);
351350
memset(reg.get(), 0, regSize);
352351

353-
if (readRegistersImp(apiThread, registerType, 0, 1, reg.get()) != ZE_RESULT_SUCCESS) {
352+
if (readRegistersImp(threadID, registerType, 0, 1, reg.get()) != ZE_RESULT_SUCCESS) {
354353
success = false;
355354
} else {
356355
reg[dword] |= sipResumeValue;
357-
if (writeRegistersImp(apiThread, registerType, 0, 1, reg.get()) != ZE_RESULT_SUCCESS) {
356+
if (writeRegistersImp(threadID, registerType, 0, 1, reg.get()) != ZE_RESULT_SUCCESS) {
358357
success = false;
359358
}
360359
}
@@ -636,8 +635,7 @@ void DebugSessionImp::fillResumeAndStoppedThreadsFromNewlyStopped(std::vector<Eu
636635
for (auto &newlyStopped : newlyStoppedThreads) {
637636
if (allThreads[newlyStopped]->isStopped()) {
638637
memset(reg.get(), 0, regSize);
639-
ze_device_thread_t apiThread = convertToApi(newlyStopped);
640-
readRegistersImp(apiThread, ZET_DEBUG_REGSET_TYPE_CR_INTEL_GPU, 0, 1, reg.get());
638+
readRegistersImp(newlyStopped, ZET_DEBUG_REGSET_TYPE_CR_INTEL_GPU, 0, 1, reg.get());
641639

642640
if (isForceExceptionOrForceExternalHaltOnlyExceptionReason(reg.get())) {
643641
PRINT_DEBUGGER_THREAD_LOG("RESUME accidentally stopped thread = %s\n", allThreads[newlyStopped]->toString().c_str());
@@ -822,7 +820,7 @@ size_t DebugSessionImp::calculateRegisterOffsetInThreadSlot(const SIP::regset_de
822820
return regdesc->offset + regdesc->bytes * start;
823821
}
824822

825-
ze_result_t DebugSessionImp::readSbaRegisters(ze_device_thread_t thread, uint32_t start, uint32_t count, void *pRegisterValues) {
823+
ze_result_t DebugSessionImp::readSbaRegisters(EuThread::ThreadId threadId, uint32_t start, uint32_t count, void *pRegisterValues) {
826824
auto sbaRegDesc = DebugSessionImp::getSbaRegsetDesc();
827825

828826
if (start >= sbaRegDesc->num) {
@@ -836,7 +834,7 @@ ze_result_t DebugSessionImp::readSbaRegisters(ze_device_thread_t thread, uint32_
836834
ze_result_t ret = ZE_RESULT_SUCCESS;
837835

838836
NEO::SbaTrackedAddresses sbaBuffer;
839-
ret = readSbaBuffer(convertToThreadId(thread), sbaBuffer);
837+
ret = readSbaBuffer(threadId, sbaBuffer);
840838
if (ret != ZE_RESULT_SUCCESS) {
841839
return ret;
842840
}
@@ -845,7 +843,7 @@ ze_result_t DebugSessionImp::readSbaRegisters(ze_device_thread_t thread, uint32_
845843
const auto regSize = std::max(getRegisterSize(ZET_DEBUG_REGSET_TYPE_GRF_INTEL_GPU), hwInfo.capabilityTable.grfSize);
846844
auto r0 = std::make_unique<uint32_t[]>(regSize / sizeof(uint32_t));
847845

848-
ret = readRegistersImp(thread, ZET_DEBUG_REGSET_TYPE_GRF_INTEL_GPU, 0, 1, r0.get());
846+
ret = readRegistersImp(threadId, ZET_DEBUG_REGSET_TYPE_GRF_INTEL_GPU, 0, 1, r0.get());
849847
if (ret != ZE_RESULT_SUCCESS) {
850848
return ret;
851849
}
@@ -862,14 +860,14 @@ ze_result_t DebugSessionImp::readSbaRegisters(ze_device_thread_t thread, uint32_
862860
constexpr size_t renderSurfaceStateSize = 64;
863861
std::vector<char> renderSurfaceState(renderSurfaceStateSize, 0);
864862

865-
ret = readGpuMemory(allThreads[convertToThreadId(thread)]->getMemoryHandle(), renderSurfaceState.data(), renderSurfaceStateSize, renderSurfaceStateGpuVa);
863+
ret = readGpuMemory(allThreads[threadId]->getMemoryHandle(), renderSurfaceState.data(), renderSurfaceStateSize, renderSurfaceStateGpuVa);
866864

867865
if (ret != ZE_RESULT_SUCCESS) {
868866
return ret;
869867
}
870868

871869
auto scratchSpacePTSize = hwHelper.getRenderSurfaceStatePitch(renderSurfaceState.data());
872-
auto threadOffset = getPerThreadScratchOffset(scratchSpacePTSize, convertToThreadId(thread));
870+
auto threadOffset = getPerThreadScratchOffset(scratchSpacePTSize, threadId);
873871
auto gmmHelper = connectedDevice->getNEODevice()->getGmmHelper();
874872
auto scratchAllocationBase = gmmHelper->decanonize(hwHelper.getRenderSurfaceStateBaseAddress(renderSurfaceState.data()));
875873
if (scratchAllocationBase != 0) {
@@ -1017,19 +1015,19 @@ ze_result_t DebugSessionImp::readRegisters(ze_device_thread_t thread, uint32_t t
10171015
}
10181016

10191017
if (type == ZET_DEBUG_REGSET_TYPE_SBA_INTEL_GPU) {
1020-
return readSbaRegisters(thread, start, count, pRegisterValues);
1018+
return readSbaRegisters(convertToThreadId(thread), start, count, pRegisterValues);
10211019
}
10221020

1023-
return readRegistersImp(thread, type, start, count, pRegisterValues);
1021+
return readRegistersImp(convertToThreadId(thread), type, start, count, pRegisterValues);
10241022
}
10251023

1026-
ze_result_t DebugSessionImp::readRegistersImp(ze_device_thread_t thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) {
1024+
ze_result_t DebugSessionImp::readRegistersImp(EuThread::ThreadId threadId, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) {
10271025
auto regdesc = typeToRegsetDesc(type);
10281026
if (nullptr == regdesc) {
10291027
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
10301028
}
10311029

1032-
return registersAccessHelper(allThreads[convertToThreadId(thread)].get(), regdesc, start, count, pRegisterValues, false);
1030+
return registersAccessHelper(allThreads[threadId].get(), regdesc, start, count, pRegisterValues, false);
10331031
}
10341032

10351033
ze_result_t DebugSessionImp::writeRegisters(ze_device_thread_t thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) {
@@ -1042,10 +1040,10 @@ ze_result_t DebugSessionImp::writeRegisters(ze_device_thread_t thread, uint32_t
10421040
return ZE_RESULT_ERROR_UNKNOWN;
10431041
}
10441042

1045-
return writeRegistersImp(thread, type, start, count, pRegisterValues);
1043+
return writeRegistersImp(convertToThreadId(thread), type, start, count, pRegisterValues);
10461044
}
10471045

1048-
ze_result_t DebugSessionImp::writeRegistersImp(ze_device_thread_t thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) {
1046+
ze_result_t DebugSessionImp::writeRegistersImp(EuThread::ThreadId threadId, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) {
10491047
auto regdesc = typeToRegsetDesc(type);
10501048
if (nullptr == regdesc) {
10511049
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
@@ -1055,7 +1053,7 @@ ze_result_t DebugSessionImp::writeRegistersImp(ze_device_thread_t thread, uint32
10551053
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
10561054
}
10571055

1058-
return registersAccessHelper(allThreads[convertToThreadId(thread)].get(), regdesc, start, count, pRegisterValues, true);
1056+
return registersAccessHelper(allThreads[threadId].get(), regdesc, start, count, pRegisterValues, true);
10591057
}
10601058

10611059
bool DebugSessionImp::isValidGpuAddress(uint64_t address) const {

level_zero/tools/source/debug/debug_session_imp.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ struct DebugSessionImp : DebugSession {
4343
constexpr static int64_t interruptTimeout = 2000;
4444

4545
protected:
46-
MOCKABLE_VIRTUAL ze_result_t readRegistersImp(ze_device_thread_t thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues);
47-
MOCKABLE_VIRTUAL ze_result_t writeRegistersImp(ze_device_thread_t thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues);
46+
MOCKABLE_VIRTUAL ze_result_t readRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues);
47+
MOCKABLE_VIRTUAL ze_result_t writeRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues);
4848
Error resumeThreadsWithinDevice(uint32_t deviceIndex, ze_device_thread_t physicalThread);
4949
MOCKABLE_VIRTUAL bool writeResumeCommand(const std::vector<EuThread::ThreadId> &threadIds);
5050
MOCKABLE_VIRTUAL bool checkThreadIsResumed(const EuThread::ThreadId &threadID);
@@ -59,7 +59,7 @@ struct DebugSessionImp : DebugSession {
5959
virtual void enqueueApiEvent(zet_debug_event_t &debugEvent) = 0;
6060
virtual bool readSystemRoutineIdent(EuThread *thread, uint64_t vmHandle, SIP::sr_ident &srMagic) = 0;
6161

62-
ze_result_t readSbaRegisters(ze_device_thread_t thread, uint32_t start, uint32_t count, void *pRegisterValues);
62+
ze_result_t readSbaRegisters(EuThread::ThreadId thread, uint32_t start, uint32_t count, void *pRegisterValues);
6363
MOCKABLE_VIRTUAL bool isForceExceptionOrForceExternalHaltOnlyExceptionReason(uint32_t *cr0);
6464
void sendInterrupts();
6565
MOCKABLE_VIRTUAL void markPendingInterruptsOrAddToNewlyStoppedFromRaisedAttention(EuThread::ThreadId threadId, uint64_t memoryHandle);

level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ struct MockDebugSession : public L0::DebugSessionImp {
7979
ze_result_t acknowledgeEvent(const zet_debug_event_t *event) override {
8080
return ZE_RESULT_SUCCESS;
8181
}
82-
ze_result_t readRegistersImp(ze_device_thread_t thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) override {
82+
ze_result_t readRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) override {
8383
readRegistersCallCount++;
8484
readRegistersReg = type;
8585

@@ -92,7 +92,7 @@ struct MockDebugSession : public L0::DebugSessionImp {
9292
return DebugSessionImp::readRegistersImp(thread, type, start, count, pRegisterValues);
9393
}
9494

95-
ze_result_t writeRegistersImp(ze_device_thread_t thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) override {
95+
ze_result_t writeRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) override {
9696
writeRegistersCallCount++;
9797
writeRegistersReg = type;
9898

@@ -798,7 +798,7 @@ TEST(DebugSessionTest, givenErrorFromReadSbaBufferWhenReadSbaRegistersCalledThen
798798

799799
ze_device_thread_t thread = {0, 0, 0, 0};
800800
uint64_t sba[9];
801-
auto result = sessionMock->readSbaRegisters(thread, 0, 9, sba);
801+
auto result = sessionMock->readSbaRegisters(EuThread::ThreadId(0, thread), 0, 9, sba);
802802
EXPECT_EQ(ZE_RESULT_ERROR_UNKNOWN, result);
803803
}
804804

@@ -815,7 +815,7 @@ TEST(DebugSessionTest, givenErrorFromReadRegistersWhenReadSbaRegistersCalledThen
815815

816816
ze_device_thread_t thread = {0, 0, 0, 0};
817817
uint64_t sba[9];
818-
auto result = sessionMock->readSbaRegisters(thread, 0, 9, sba);
818+
auto result = sessionMock->readSbaRegisters(EuThread::ThreadId(0, thread), 0, 9, sba);
819819
EXPECT_EQ(ZE_RESULT_ERROR_UNKNOWN, result);
820820
}
821821

@@ -838,7 +838,7 @@ HWTEST2_F(DebugSessionTest, givenErrorFromReadMemoryWhenReadSbaRegistersCalledTh
838838
ze_device_thread_t thread = {0, 0, 0, 0};
839839
uint64_t sba[9];
840840

841-
auto result = sessionMock->readSbaRegisters(thread, 0, 9, sba);
841+
auto result = sessionMock->readSbaRegisters(EuThread::ThreadId(0, thread), 0, 9, sba);
842842

843843
auto &hwHelper = HwHelper::get(neoDevice->getHardwareInfo().platform.eRenderCoreFamily);
844844
EXPECT_TRUE(hwHelper.isScratchSpaceSurfaceStateAccessible());
@@ -2029,7 +2029,7 @@ TEST_F(DebugSessionRegistersAccessTest, WhenReadingSbaRegistersThenCorrectAddres
20292029
r0Thread0[5] = 0;
20302030
}
20312031

2032-
EXPECT_EQ(ZE_RESULT_SUCCESS, session->readSbaRegisters(thread, 0, ZET_DEBUG_SBA_COUNT_INTEL_GPU, sba));
2032+
EXPECT_EQ(ZE_RESULT_SUCCESS, session->readSbaRegisters(threadId, 0, ZET_DEBUG_SBA_COUNT_INTEL_GPU, sba));
20332033
EXPECT_EQ(0ULL, sba[ZET_DEBUG_SBA_SCRATCH_SPACE_INTEL_GPU]);
20342034

20352035
scratchAllocationBase = sbaExpected[ZET_DEBUG_SBA_SCRATCH_SPACE_INTEL_GPU];
@@ -2054,7 +2054,7 @@ TEST_F(DebugSessionRegistersAccessTest, WhenReadingSbaRegistersThenCorrectAddres
20542054

20552055
sbaExpected[ZET_DEBUG_SBA_BINDING_TABLE_INTEL_GPU] = ((r0Thread0[4] >> 5) << 5) + sbaExpected[ZET_DEBUG_SBA_SURFACE_STATE_INTEL_GPU];
20562056

2057-
EXPECT_EQ(ZE_RESULT_SUCCESS, session->readSbaRegisters(thread, 0, ZET_DEBUG_SBA_COUNT_INTEL_GPU, sba));
2057+
EXPECT_EQ(ZE_RESULT_SUCCESS, session->readSbaRegisters(threadId, 0, ZET_DEBUG_SBA_COUNT_INTEL_GPU, sba));
20582058

20592059
EXPECT_EQ(sbaExpected[ZET_DEBUG_SBA_GENERAL_STATE_INTEL_GPU], sba[ZET_DEBUG_SBA_GENERAL_STATE_INTEL_GPU]);
20602060
EXPECT_EQ(sbaExpected[ZET_DEBUG_SBA_SURFACE_STATE_INTEL_GPU], sba[ZET_DEBUG_SBA_SURFACE_STATE_INTEL_GPU]);
@@ -2083,7 +2083,7 @@ TEST_F(DebugSessionRegistersAccessTest, WhenReadingSbaRegistersThenCorrectAddres
20832083

20842084
sbaExpected[ZET_DEBUG_SBA_BINDING_TABLE_INTEL_GPU] = ((r0Thread1[4] >> 5) << 5) + sbaExpected[ZET_DEBUG_SBA_SURFACE_STATE_INTEL_GPU];
20852085

2086-
EXPECT_EQ(ZE_RESULT_SUCCESS, session->readSbaRegisters(thread1, 0, ZET_DEBUG_SBA_COUNT_INTEL_GPU, sba));
2086+
EXPECT_EQ(ZE_RESULT_SUCCESS, session->readSbaRegisters(threadId1, 0, ZET_DEBUG_SBA_COUNT_INTEL_GPU, sba));
20872087

20882088
EXPECT_EQ(sbaExpected[ZET_DEBUG_SBA_GENERAL_STATE_INTEL_GPU], sba[ZET_DEBUG_SBA_GENERAL_STATE_INTEL_GPU]);
20892089
EXPECT_EQ(sbaExpected[ZET_DEBUG_SBA_SURFACE_STATE_INTEL_GPU], sba[ZET_DEBUG_SBA_SURFACE_STATE_INTEL_GPU]);
@@ -2108,7 +2108,7 @@ TEST_F(DebugSessionRegistersAccessTest, WhenReadingSbaRegistersThenCorrectAddres
21082108
}
21092109
sbaExpected[ZET_DEBUG_SBA_SCRATCH_SPACE_INTEL_GPU] = 0;
21102110

2111-
EXPECT_EQ(ZE_RESULT_SUCCESS, session->readSbaRegisters(thread1, 0, ZET_DEBUG_SBA_COUNT_INTEL_GPU, sba));
2111+
EXPECT_EQ(ZE_RESULT_SUCCESS, session->readSbaRegisters(threadId1, 0, ZET_DEBUG_SBA_COUNT_INTEL_GPU, sba));
21122112
EXPECT_EQ(sbaExpected[ZET_DEBUG_SBA_SCRATCH_SPACE_INTEL_GPU], sba[ZET_DEBUG_SBA_SCRATCH_SPACE_INTEL_GPU]);
21132113
}
21142114

0 commit comments

Comments
 (0)