From 7f1167d5fe3fb35e23f9a273d0fe3ce7b6378270 Mon Sep 17 00:00:00 2001 From: Brandon Yates Date: Wed, 15 Nov 2023 21:46:47 +0000 Subject: [PATCH] fix(debugger): Fix handling pf event with flat hierarchy Related-to: GSD-6918 Signed-off-by: Brandon Yates --- .../tools/source/debug/linux/prelim/debug_session.cpp | 7 +++++-- .../debug/linux/prelim/tile_debug_session_linux_tests.cpp | 6 +++--- 2 files changed, 8 insertions(+), 5 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 92751cd891..6248063258 100644 --- a/level_zero/tools/source/debug/linux/prelim/debug_session.cpp +++ b/level_zero/tools/source/debug/linux/prelim/debug_session.cpp @@ -1391,9 +1391,12 @@ void DebugSessionLinuxi915::handlePageFaultEvent(prelim_drm_i915_debug_event_pag lock = std::unique_lock(threadStateMutex); } for (auto &threadId : threadsWithPF) { - PRINT_DEBUGGER_INFO_LOG("PageFault event for thread %s", EuThread::toString(threadId).c_str()); - allThreads[threadId]->setPageFault(true); + if (tileSessionsEnabled) { + static_cast(tileSessions[tileIndex].first)->allThreads[threadId]->setPageFault(true); + } else { + allThreads[threadId]->setPageFault(true); + } } for (auto &threadId : stoppedThreads) { if (tileSessionsEnabled) { diff --git a/level_zero/tools/test/unit_tests/sources/debug/linux/prelim/tile_debug_session_linux_tests.cpp b/level_zero/tools/test/unit_tests/sources/debug/linux/prelim/tile_debug_session_linux_tests.cpp index 935b80712d..351bb0f5bb 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/linux/prelim/tile_debug_session_linux_tests.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/linux/prelim/tile_debug_session_linux_tests.cpp @@ -856,8 +856,8 @@ TEST_F(TileAttachTest, givenStoppedThreadsWhenHandlingPageFaultEventThenStoppedT auto &hwInfo = neoDevice->getHardwareInfo(); auto &l0GfxCoreHelper = neoDevice->getRootDeviceEnvironment().getHelper(); - l0GfxCoreHelper.getAttentionBitmaskForSingleThreads({thread}, hwInfo, bitmaskBefore, bitmaskSize); - l0GfxCoreHelper.getAttentionBitmaskForSingleThreads({thread}, hwInfo, bitmaskAfter, bitmaskSize); + l0GfxCoreHelper.getAttentionBitmaskForSingleThreads({}, hwInfo, bitmaskBefore, bitmaskSize); + l0GfxCoreHelper.getAttentionBitmaskForSingleThreads({}, hwInfo, bitmaskAfter, bitmaskSize); l0GfxCoreHelper.getAttentionBitmaskForSingleThreads({thread}, hwInfo, bitmaskResolved, bitmaskSize); prelim_drm_i915_debug_event_page_fault pf = {}; @@ -879,10 +879,10 @@ TEST_F(TileAttachTest, givenStoppedThreadsWhenHandlingPageFaultEventThenStoppedT memcpy(ptrOffset(data, offsetof(prelim_drm_i915_debug_event_page_fault, bitmask) + (2 * bitmaskSize)), bitmaskResolved.get(), bitmaskSize); rootSession->handleEvent(reinterpret_cast(data)); - auto expectedThreadsToCheck = hwInfo.capabilityTable.fusedEuEnabled ? 2u : 1u; EXPECT_EQ(expectedThreadsToCheck, tileSessions[1]->newlyStoppedThreads.size()); EXPECT_TRUE(tileSessions[1]->triggerEvents); + EXPECT_TRUE(tileSessions[1]->allThreads[thread]->getPageFault()); } TEST_F(TileAttachTest, GivenBlockingOnCpuDetachedTileAndZebinModulesWithEventsToAckWhenDetachingTileThenNoAckIoctlIsCalled) {