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 bba256fea0..a553e6fb76 100644 --- a/level_zero/tools/source/debug/linux/prelim/debug_session.cpp +++ b/level_zero/tools/source/debug/linux/prelim/debug_session.cpp @@ -454,8 +454,8 @@ void DebugSessionLinux::handleEvent(prelim_drm_i915_debug_event *event) { bool create = event->flags & PRELIM_DRM_I915_DEBUG_EVENT_CREATE; if (destroy && clientHandleToConnection[uuid->client_handle]->uuidMap[uuid->handle].classIndex == NEO::DrmResourceClass::L0ZebinModule) { - DEBUG_BREAK_IF(clientHandleToConnection[uuid->client_handle]->uuidToModule[uuid->handle].segmentVmBindCounter != 0 || - clientHandleToConnection[uuid->client_handle]->uuidToModule[uuid->handle].loadAddresses.size() > 0); + DEBUG_BREAK_IF(clientHandleToConnection[uuid->client_handle]->uuidToModule[uuid->handle].segmentVmBindCounter[0] != 0 || + clientHandleToConnection[uuid->client_handle]->uuidToModule[uuid->handle].loadAddresses[0].size() > 0); clientHandleToConnection[uuid->client_handle]->uuidToModule.erase(uuid->handle); } @@ -542,7 +542,10 @@ void DebugSessionLinux::handleEvent(prelim_drm_i915_debug_event *event) { auto &newModule = connection->uuidToModule[handle]; newModule.segmentCount = 0; - newModule.segmentVmBindCounter = 0; + for (uint32_t i = 0; i < NEO::EngineLimits::maxHandleCount; i++) { + newModule.segmentVmBindCounter[i] = 0; + newModule.loadAddresses[i].clear(); + } } extractUuidData(uuid->client_handle, uuidData); } @@ -706,6 +709,7 @@ void DebugSessionLinux::handleVmBindEvent(prelim_drm_i915_debug_event_vm_bind *v uint32_t index = 0; auto connection = clientHandleToConnection[vmBind->client_handle].get(); const auto uuid = vmBind->uuids[index]; + const auto tileIndex = 0; if (connection->uuidMap.find(uuid) == connection->uuidMap.end()) { PRINT_DEBUGGER_ERROR_LOG("Unknown UUID handle = %llu\n", (uint64_t)uuid); @@ -754,9 +758,9 @@ void DebugSessionLinux::handleVmBindEvent(prelim_drm_i915_debug_event_vm_bind *v } } - if (connection->isaMap.find(vmBind->va_start) == connection->isaMap.end() && createEvent) { + if (connection->isaMap[tileIndex].find(vmBind->va_start) == connection->isaMap[tileIndex].end() && createEvent) { - auto &isaMap = connection->isaMap; + auto &isaMap = connection->isaMap[tileIndex]; auto &elfMap = connection->elfMap; auto isa = std::make_unique(); @@ -806,7 +810,7 @@ void DebugSessionLinux::handleVmBindEvent(prelim_drm_i915_debug_event_vm_bind *v // If ACK flag is not set when triggering MODULE LOAD event, auto-ack immediately if ((vmBind->base.flags & PRELIM_DRM_I915_DEBUG_EVENT_NEED_ACK) == 0) { - connection->isaMap[vmBind->va_start]->moduleLoadEventAck = true; + isaMap[vmBind->va_start]->moduleLoadEventAck = true; } memLock.unlock(); @@ -818,20 +822,20 @@ void DebugSessionLinux::handleVmBindEvent(prelim_drm_i915_debug_event_vm_bind *v if (createEvent) { std::unique_lock lock(asyncThreadMutex); - if (!connection->isaMap[vmBind->va_start]->moduleLoadEventAck && perKernelModules) { + if (!connection->isaMap[tileIndex][vmBind->va_start]->moduleLoadEventAck && perKernelModules) { PRINT_DEBUGGER_INFO_LOG("Add event to ack, seqno = %llu", (uint64_t)vmBind->base.seqno); - connection->isaMap[vmBind->va_start]->ackEvents.push_back(vmBind->base); + connection->isaMap[tileIndex][vmBind->va_start]->ackEvents.push_back(vmBind->base); shouldAckEvent = false; } - connection->isaMap[vmBind->va_start]->vmBindCounter++; + connection->isaMap[tileIndex][vmBind->va_start]->vmBindCounter++; } - if (destroyEvent && connection->isaMap.find(vmBind->va_start) != connection->isaMap.end()) { - DEBUG_BREAK_IF(connection->isaMap[vmBind->va_start]->vmBindCounter == 0); - connection->isaMap[vmBind->va_start]->vmBindCounter--; - if (connection->isaMap[vmBind->va_start]->vmBindCounter == 0) { - const auto &isa = connection->isaMap[vmBind->va_start]; + if (destroyEvent && connection->isaMap[tileIndex].find(vmBind->va_start) != connection->isaMap[tileIndex].end()) { + DEBUG_BREAK_IF(connection->isaMap[tileIndex][vmBind->va_start]->vmBindCounter == 0); + connection->isaMap[tileIndex][vmBind->va_start]->vmBindCounter--; + if (connection->isaMap[tileIndex][vmBind->va_start]->vmBindCounter == 0) { + const auto &isa = connection->isaMap[tileIndex][vmBind->va_start]; zet_debug_event_t debugEvent = {}; @@ -848,7 +852,7 @@ void DebugSessionLinux::handleVmBindEvent(prelim_drm_i915_debug_event_vm_bind *v pushApiEvent(debugEvent, nullptr); } std::unique_lock memLock(asyncThreadMutex); - connection->isaMap.erase(vmBind->va_start); + connection->isaMap[tileIndex].erase(vmBind->va_start); memLock.unlock(); } } @@ -860,15 +864,15 @@ void DebugSessionLinux::handleVmBindEvent(prelim_drm_i915_debug_event_vm_bind *v auto &module = connection->uuidToModule[vmBind->uuids[uuidIter]]; if (createEvent) { - module.segmentVmBindCounter++; + module.segmentVmBindCounter[tileIndex]++; - DEBUG_BREAK_IF(module.loadAddresses.size() > module.segmentCount); - bool canTriggerEvent = module.loadAddresses.size() == (module.segmentCount - 1); - module.loadAddresses.insert(vmBind->va_start); + DEBUG_BREAK_IF(module.loadAddresses[tileIndex].size() > module.segmentCount); + bool canTriggerEvent = module.loadAddresses[tileIndex].size() == (module.segmentCount - 1); + module.loadAddresses[tileIndex].insert(vmBind->va_start); - if (canTriggerEvent && module.loadAddresses.size() == module.segmentCount) { + if (canTriggerEvent && module.loadAddresses[tileIndex].size() == module.segmentCount) { auto gmmHelper = connectedDevice->getNEODevice()->getGmmHelper(); - loadAddress = gmmHelper->canonize(*std::min_element(module.loadAddresses.begin(), module.loadAddresses.end())); + loadAddress = gmmHelper->canonize(*std::min_element(module.loadAddresses[tileIndex].begin(), module.loadAddresses[tileIndex].end())); PRINT_DEBUGGER_INFO_LOG("Zebin module loaded at: %p, with %u isa allocations", (void *)loadAddress, module.segmentCount); zet_debug_event_t debugEvent = {}; @@ -883,14 +887,14 @@ void DebugSessionLinux::handleVmBindEvent(prelim_drm_i915_debug_event_vm_bind *v } } else { // destroyEvent - module.segmentVmBindCounter--; + module.segmentVmBindCounter[tileIndex]--; - if (module.segmentVmBindCounter == 0) { + if (module.segmentVmBindCounter[tileIndex] == 0) { zet_debug_event_t debugEvent = {}; auto gmmHelper = connectedDevice->getNEODevice()->getGmmHelper(); - auto loadAddress = gmmHelper->canonize(*std::min_element(module.loadAddresses.begin(), module.loadAddresses.end())); + auto loadAddress = gmmHelper->canonize(*std::min_element(module.loadAddresses[tileIndex].begin(), module.loadAddresses[tileIndex].end())); debugEvent.type = ZET_DEBUG_EVENT_TYPE_MODULE_UNLOAD; debugEvent.info.module.format = ZET_MODULE_DEBUG_INFO_FORMAT_ELF_DWARF; debugEvent.info.module.load = loadAddress; @@ -898,7 +902,7 @@ void DebugSessionLinux::handleVmBindEvent(prelim_drm_i915_debug_event_vm_bind *v debugEvent.info.module.moduleEnd = connection->uuidMap[module.elfUuidHandle].ptr + connection->uuidMap[module.elfUuidHandle].dataSize; pushApiEvent(debugEvent, nullptr); - module.loadAddresses.clear(); + module.loadAddresses[tileIndex].clear(); } } } @@ -1174,7 +1178,7 @@ ze_result_t DebugSessionLinux::interruptImp(uint32_t deviceIndex) { ze_result_t DebugSessionLinux::getISAVMHandle(const zet_debug_memory_space_desc_t *desc, size_t size, uint64_t &vmHandle) { auto accessVA = desc->address; - auto &isaMap = clientHandleToConnection[clientHandle]->isaMap; + auto &isaMap = clientHandleToConnection[clientHandle]->isaMap[0]; ze_result_t status = ZE_RESULT_ERROR_UNINITIALIZED; vmHandle = invalidHandle; @@ -1380,9 +1384,9 @@ ze_result_t DebugSessionLinux::acknowledgeEvent(const zet_debug_event_t *event) auto gmmHelper = connectedDevice->getNEODevice()->getGmmHelper(); auto isaVaStart = gmmHelper->decanonize(event->info.module.load); - auto isa = connection->isaMap.find(isaVaStart); + auto isa = connection->isaMap[0].find(isaVaStart); - if (isa != connection->isaMap.end()) { + if (isa != connection->isaMap[0].end()) { for (auto &event : isa->second->ackEvents) { prelim_drm_i915_debug_event_ack eventToAck = {}; eventToAck.type = event.type; 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 3063d25fdb..55a80c1ac8 100644 --- a/level_zero/tools/source/debug/linux/prelim/debug_session.h +++ b/level_zero/tools/source/debug/linux/prelim/debug_session.h @@ -114,10 +114,10 @@ struct DebugSessionLinux : DebugSessionImp { }; struct Module { - std::unordered_set loadAddresses; + std::unordered_set loadAddresses[NEO::EngineLimits::maxHandleCount]; uint64_t elfUuidHandle; uint32_t segmentCount; - int segmentVmBindCounter; + int segmentVmBindCounter[NEO::EngineLimits::maxHandleCount]; }; static bool apiEventCompare(const zet_debug_event_t &event1, const zet_debug_event_t &event2) { @@ -137,7 +137,7 @@ struct DebugSessionLinux : DebugSessionImp { std::unordered_map vmToStateBaseAreaBindInfo; std::unordered_map vmToTile; - std::unordered_map> isaMap; + std::unordered_map> isaMap[NEO::EngineLimits::maxHandleCount]; std::unordered_map elfMap; std::unordered_map lrcToContextHandle; 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 41e5d778c7..f6c6e534f4 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 @@ -1853,7 +1853,7 @@ TEST_F(DebugApiLinuxTest, WhenCallingReadMemoryForISAThenMemoryIsRead) { isa->moduleBegin = 0; isa->moduleEnd = 0; - auto &isaMap = session->clientHandleToConnection[session->clientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[session->clientHandle]->isaMap[0]; isaMap[isaGpuVa] = std::move(isa); isaMap[isaGpuVa]->vmBindCounter = 5; @@ -2047,7 +2047,7 @@ TEST_F(DebugApiLinuxTest, WhenCallingReadMemoryForISAForExpectedFailureCasesThen session->ioctlHandler.reset(handler); session->clientHandle = MockDebugSessionLinux::mockClientHandle; - auto &isaMap = session->clientHandleToConnection[session->clientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[session->clientHandle]->isaMap[0]; uint64_t isaGpuVa = 0x345000; uint64_t isaSize = 0x2000; @@ -2220,7 +2220,7 @@ TEST_F(DebugApiLinuxTest, WhenCallingWriteMemoryForISAThenMemoryIsWritten) { isa->moduleBegin = 0; isa->moduleEnd = 0; - auto &isaMap = session->clientHandleToConnection[session->clientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[session->clientHandle]->isaMap[0]; isaMap[isaGpuVa] = std::move(isa); isaMap[isaGpuVa]->vmBindCounter = 5; @@ -2362,7 +2362,7 @@ TEST_F(DebugApiLinuxTest, WhenCallingWriteMemoryForExpectedFailureCasesThenError session->ioctlHandler.reset(handler); session->clientHandle = MockDebugSessionLinux::mockClientHandle; - auto &isaMap = session->clientHandleToConnection[session->clientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[session->clientHandle]->isaMap[0]; uint64_t isaGpuVa = 0x345000; uint64_t isaSize = 0x2000; @@ -3405,7 +3405,7 @@ TEST_F(DebugApiLinuxTest, GivenUuidEventForL0ZebinModuleWhenHandlingEventThenKer // inject module segment auto &module = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[l0ModuleUuid.handle]; - module.loadAddresses.insert(0x12340000); + module.loadAddresses[0].insert(0x12340000); l0ModuleUuid.base.flags = PRELIM_DRM_I915_DEBUG_EVENT_DESTROY; l0ModuleUuid.payload_size = 0; @@ -3853,8 +3853,8 @@ TEST_F(DebugApiLinuxVmBindTest, GivenEventWithAckFlagWhenHandlingEventForISAThen EXPECT_EQ(ZET_DEBUG_EVENT_FLAG_NEED_ACK, event.flags); EXPECT_EQ(ZET_DEBUG_EVENT_TYPE_MODULE_LOAD, event.type); - auto isaIter = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap.find(isaGpuVa); - ASSERT_NE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap.end(), isaIter); + auto isaIter = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0].find(isaGpuVa); + ASSERT_NE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0].end(), isaIter); EXPECT_EQ(1u, isaIter->second->ackEvents.size()); auto ackedEvent = isaIter->second->ackEvents[0]; @@ -3891,8 +3891,8 @@ TEST_F(DebugApiLinuxVmBindTest, GivenEventForISAWhenModuleLoadEventAlreadyAckedT session->handleEvent(&vmBindIsa->base); - auto isaIter = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap.find(isaGpuVa); - ASSERT_NE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap.end(), isaIter); + auto isaIter = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0].find(isaGpuVa); + ASSERT_NE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0].end(), isaIter); EXPECT_EQ(1u, isaIter->second->ackEvents.size()); auto event = session->apiEvents.front(); @@ -3935,8 +3935,8 @@ TEST_F(DebugApiLinuxVmBindTest, GivenEventForIsaWithoutAckTriggeredBeforeAttachW session->handleEvent(&vmBindIsa->base); - auto isaIter = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap.find(isaGpuVa); - ASSERT_NE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap.end(), isaIter); + auto isaIter = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0].find(isaGpuVa); + ASSERT_NE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0].end(), isaIter); EXPECT_EQ(0u, isaIter->second->ackEvents.size()); // Auto-acked event EXPECT_TRUE(isaIter->second->moduleLoadEventAck); @@ -3983,15 +3983,15 @@ TEST_F(DebugApiLinuxVmBindTest, GivenIsaRemovedWhenModuleLoadEventIsAckedThenSuc session->handleEvent(&vmBindIsa->base); - auto isaIter = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap.find(isaGpuVa); - ASSERT_NE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap.end(), isaIter); + auto isaIter = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0].find(isaGpuVa); + ASSERT_NE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0].end(), isaIter); EXPECT_EQ(1u, isaIter->second->ackEvents.size()); zet_debug_event_t event = {}; auto result = session->readEvent(0, &event); EXPECT_EQ(ZE_RESULT_SUCCESS, result); - session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap.clear(); + session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0].clear(); result = session->acknowledgeEvent(&event); EXPECT_EQ(ZE_RESULT_SUCCESS, result); @@ -4043,7 +4043,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindEventWithAckNeededForIsaWhenHandlingE session->handleEvent(&vmBindIsa->base); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(1u, isaMap.size()); EXPECT_NE(isaMap.end(), isaMap.find(isaGpuVa)); @@ -4087,7 +4087,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenCookieWhenHandlingVmBindForIsaThenIsaAlloca session->handleEvent(&vmBindIsa->base); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(1u, isaMap.size()); EXPECT_NE(isaMap.end(), isaMap.find(isaGpuVa)); @@ -4125,7 +4125,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenNoCookieWhenHandlingVmBindForIsaThenIsaAllo session->handleEvent(&vmBindIsa->base); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(1u, isaMap.size()); EXPECT_NE(isaMap.end(), isaMap.find(isaGpuVa)); @@ -4162,7 +4162,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenTwoVmBindEventForTheSameIsaInDifferentVMWhe session->handleEvent(&vmBindIsa->base); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(1u, isaMap.size()); EXPECT_NE(isaMap.end(), isaMap.find(isaGpuVa)); auto isaAllocation = isaMap[isaGpuVa].get(); @@ -4201,7 +4201,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindDestroyEventForIsaWhenHandlingEventTh session->handleEvent(&vmBindIsa->base); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(0u, isaMap.size()); } @@ -4227,7 +4227,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindEventForIsaWhenReadingEventThenModule memcpy(uuids, uuidsTemp, sizeof(uuidsTemp)); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(0u, isaMap.size()); session->handleEvent(&vmBindIsa->base); @@ -4278,7 +4278,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindCreateAndDestroyEventsForIsaWhenReadi memcpy(uuids, uuidsTemp, sizeof(uuidsTemp)); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(0u, isaMap.size()); session->handleEvent(&vmBindIsa->base); @@ -4318,7 +4318,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenIsaBoundMultipleTimesWhenHandlingVmBindDest uint64_t vmBindIsaData[sizeof(prelim_drm_i915_debug_event_vm_bind) / sizeof(uint64_t) + 3 * sizeof(typeOfUUID)]; prelim_drm_i915_debug_event_vm_bind *vmBindIsa = reinterpret_cast(&vmBindIsaData); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; auto isa = std::make_unique(); isa->bindInfo = {isaGpuVa, isaSize}; @@ -4428,10 +4428,10 @@ TEST_F(DebugApiLinuxVmBindTest, GivenEventWithL0ZebinModuleWhenHandlingEventThen EXPECT_EQ(0u, session->apiEvents.size()); EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule.size()); - EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses.size()); + EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses[0].size()); // event not pushed to ack - EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[isaGpuVa]->ackEvents.size()); + EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0][isaGpuVa]->ackEvents.size()); EXPECT_EQ(1, handler->ioctlCalled); // ACK EXPECT_EQ(vmBindIsa->base.seqno, handler->debugEventAcked.seqno); @@ -4444,19 +4444,19 @@ TEST_F(DebugApiLinuxVmBindTest, GivenEventWithL0ZebinModuleWhenHandlingEventThen EXPECT_EQ(1u, session->apiEvents.size()); EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule.size()); - EXPECT_EQ(2u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses.size()); + EXPECT_EQ(2u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses[0].size()); EXPECT_EQ(2u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].segmentCount); // event not pushed to ack - EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[isaGpuVa2]->ackEvents.size()); + EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0][isaGpuVa2]->ackEvents.size()); EXPECT_EQ(0, handler->ioctlCalled); EXPECT_EQ(0u, handler->debugEventAcked.seqno); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(2u, isaMap.size()); - EXPECT_FALSE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[isaGpuVa]->moduleLoadEventAck); - EXPECT_FALSE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[isaGpuVa2]->moduleLoadEventAck); + EXPECT_FALSE(isaMap[isaGpuVa]->moduleLoadEventAck); + EXPECT_FALSE(isaMap[isaGpuVa2]->moduleLoadEventAck); zet_debug_event_t event = {}; ze_result_t result = zetDebugReadEvent(session->toHandle(), 0, &event); @@ -4543,10 +4543,10 @@ TEST_F(DebugApiLinuxVmBindTest, GivenAttachAfterModuleCreateWhenHandlingEventWit EXPECT_EQ(0u, session->apiEvents.size()); EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule.size()); - EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses.size()); + EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses[0].size()); // event not pushed to ack - EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[isaGpuVa]->ackEvents.size()); + EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0][isaGpuVa]->ackEvents.size()); EXPECT_EQ(0, handler->ioctlCalled); EXPECT_EQ(0u, handler->debugEventAcked.seqno); @@ -4558,19 +4558,19 @@ TEST_F(DebugApiLinuxVmBindTest, GivenAttachAfterModuleCreateWhenHandlingEventWit EXPECT_EQ(1u, session->apiEvents.size()); EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule.size()); - EXPECT_EQ(2u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses.size()); + EXPECT_EQ(2u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses[0].size()); EXPECT_EQ(2u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].segmentCount); // event not pushed to ack - EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[isaGpuVa]->ackEvents.size()); + EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0][isaGpuVa]->ackEvents.size()); EXPECT_EQ(0, handler->ioctlCalled); EXPECT_EQ(0u, handler->debugEventAcked.seqno); // Not acked - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(2u, isaMap.size()); - EXPECT_TRUE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[isaGpuVa]->moduleLoadEventAck); - EXPECT_TRUE(session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[isaGpuVa2]->moduleLoadEventAck); + EXPECT_TRUE(isaMap[isaGpuVa2]->moduleLoadEventAck); + EXPECT_TRUE(isaMap[isaGpuVa]->moduleLoadEventAck); zet_debug_event_t event = {}; ze_result_t result = zetDebugReadEvent(session->toHandle(), 0, &event); @@ -4710,7 +4710,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenMultipleBindEventsWithZebinModuleWhenHandli EXPECT_EQ(1u, session->apiEvents.size()); EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule.size()); - EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses.size()); + EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses[0].size()); EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].segmentCount); vmBindIsa->vm_handle = vmHandleForVmBind + 1000; @@ -4718,10 +4718,10 @@ TEST_F(DebugApiLinuxVmBindTest, GivenMultipleBindEventsWithZebinModuleWhenHandli EXPECT_EQ(1u, session->apiEvents.size()); EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule.size()); - EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses.size()); + EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].loadAddresses[0].size()); EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->uuidToModule[zebinModuleUUID].segmentCount); - auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap; + auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0]; EXPECT_EQ(1u, isaMap.size()); zet_debug_event_t event = {};