From 3a2d3b9274755835f42a008597f98e5ff50d8b80 Mon Sep 17 00:00:00 2001 From: Mateusz Hoppe Date: Tue, 9 Aug 2022 16:52:44 +0000 Subject: [PATCH] L0Debug refactor - move eventsToAck out from ClientConnection - events to ack are unrelated to client handle Signed-off-by: Mateusz Hoppe --- .../tools/source/debug/linux/prelim/debug_session.cpp | 10 +++++----- .../tools/source/debug/linux/prelim/debug_session.h | 5 ++--- .../sources/debug/linux/test_debug_api_linux.cpp | 11 ++++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/level_zero/tools/source/debug/linux/prelim/debug_session.cpp b/level_zero/tools/source/debug/linux/prelim/debug_session.cpp index c0e6c3e30f..fc3a27f053 100644 --- a/level_zero/tools/source/debug/linux/prelim/debug_session.cpp +++ b/level_zero/tools/source/debug/linux/prelim/debug_session.cpp @@ -1400,8 +1400,8 @@ ze_result_t DebugSessionLinux::accessDefaultMemForThreadAll(const zet_debug_memo ze_result_t DebugSessionLinux::acknowledgeEvent(const zet_debug_event_t *event) { std::unique_lock lock(asyncThreadMutex); - for (size_t i = 0; i < clientHandleToConnection[clientHandle]->eventsToAck.size(); i++) { - if (apiEventCompare(*event, clientHandleToConnection[clientHandle]->eventsToAck[i].first)) { + for (size_t i = 0; i < eventsToAck.size(); i++) { + if (apiEventCompare(*event, eventsToAck[i].first)) { bool perKernelIsaAcked = false; if (event->type == ZET_DEBUG_EVENT_TYPE_MODULE_LOAD) { @@ -1429,13 +1429,13 @@ ze_result_t DebugSessionLinux::acknowledgeEvent(const zet_debug_event_t *event) } if (!perKernelIsaAcked) { - auto eventToAck = clientHandleToConnection[clientHandle]->eventsToAck[i].second; + auto eventToAck = eventsToAck[i].second; auto ret = ioctl(PRELIM_I915_DEBUG_IOCTL_ACK_EVENT, &eventToAck); PRINT_DEBUGGER_INFO_LOG("PRELIM_I915_DEBUG_IOCTL_ACK_EVENT seqno = %llu, ret = %d errno = %d\n", (uint64_t)eventToAck.seqno, ret, ret != 0 ? errno : 0); } - auto iter = clientHandleToConnection[clientHandle]->eventsToAck.begin() + i; - clientHandleToConnection[clientHandle]->eventsToAck.erase(iter); + auto iter = eventsToAck.begin() + i; + eventsToAck.erase(iter); return ZE_RESULT_SUCCESS; } diff --git a/level_zero/tools/source/debug/linux/prelim/debug_session.h b/level_zero/tools/source/debug/linux/prelim/debug_session.h index 42f7022171..aeefd32d55 100644 --- a/level_zero/tools/source/debug/linux/prelim/debug_session.h +++ b/level_zero/tools/source/debug/linux/prelim/debug_session.h @@ -145,8 +145,6 @@ struct DebugSessionLinux : DebugSessionImp { uint64_t contextStateSaveAreaGpuVa = 0; uint64_t stateBaseAreaGpuVa = 0; - std::vector> eventsToAck; - std::unordered_map uuidToModule; }; @@ -182,7 +180,7 @@ struct DebugSessionLinux : DebugSessionImp { eventToAck.flags = 0; debugEvent.flags = ZET_DEBUG_EVENT_FLAG_NEED_ACK; - clientHandleToConnection[clientHandle]->eventsToAck.push_back( + eventsToAck.push_back( std::pair(debugEvent, eventToAck)); } @@ -246,6 +244,7 @@ struct DebugSessionLinux : DebugSessionImp { std::mutex internalEventThreadMutex; std::condition_variable internalEventCondition; std::queue> internalEventQueue; + std::vector> eventsToAck; int fd = 0; int ioctl(unsigned long request, void *arg); diff --git a/level_zero/tools/test/unit_tests/sources/debug/linux/test_debug_api_linux.cpp b/level_zero/tools/test/unit_tests/sources/debug/linux/test_debug_api_linux.cpp index a62a2dd495..7db8f8b726 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/linux/test_debug_api_linux.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/linux/test_debug_api_linux.cpp @@ -272,6 +272,7 @@ struct MockDebugSessionLinux : public L0::DebugSessionLinux { using L0::DebugSessionLinux::closeAsyncThread; using L0::DebugSessionLinux::debugArea; using L0::DebugSessionLinux::euControlInterruptSeqno; + using L0::DebugSessionLinux::eventsToAck; using L0::DebugSessionLinux::extractVaFromUuidString; using L0::DebugSessionLinux::getRegisterSetProperties; using L0::DebugSessionLinux::getStateSaveAreaHeader; @@ -3845,7 +3846,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenEventWithAckFlagWhenHandlingEventForISAThen session->handleEvent(&vmBindIsa->base); EXPECT_EQ(1u, session->apiEvents.size()); - EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck.size()); + EXPECT_EQ(1u, session->eventsToAck.size()); auto event = session->apiEvents.front(); session->apiEvents.pop(); @@ -4039,7 +4040,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindEventWithAckNeededForIsaWhenHandlingE memcpy(uuids, uuidsTemp, sizeof(uuidsTemp)); - EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck.size()); + EXPECT_EQ(0u, session->eventsToAck.size()); session->handleEvent(&vmBindIsa->base); @@ -4055,8 +4056,8 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindEventWithAckNeededForIsaWhenHandlingE EXPECT_EQ(3u, isaAllocation->vmHandle); EXPECT_TRUE(isaAllocation->tileInstanced); - ASSERT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck.size()); - auto eventToAck = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck[0].second; + ASSERT_EQ(1u, session->eventsToAck.size()); + auto eventToAck = session->eventsToAck[0].second; EXPECT_EQ(vmBindIsa->base.type, eventToAck.type); EXPECT_EQ(vmBindIsa->base.seqno, eventToAck.seqno); EXPECT_EQ(0u, handler->debugEventAcked.seqno); @@ -4236,7 +4237,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindEventForIsaWhenReadingEventThenModule EXPECT_EQ(isaGpuVa, isaMap[isaGpuVa]->bindInfo.gpuVa); // No event to ACK if vmBind doesn't have ACK flag - EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck.size()); + EXPECT_EQ(0u, session->eventsToAck.size()); zet_debug_event_t event = {}; ze_result_t result = zetDebugReadEvent(session->toHandle(), 0, &event);