L0Debug - per tile isa and modules in debug session

Related-To: NEO-5784

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2022-08-08 12:15:29 +00:00
committed by Compute-Runtime-Automation
parent eb8cd33dc6
commit 52133e61ce
3 changed files with 74 additions and 70 deletions

View File

@@ -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<IsaAllocation>();
@@ -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<std::mutex> 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<std::mutex> 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;

View File

@@ -114,10 +114,10 @@ struct DebugSessionLinux : DebugSessionImp {
};
struct Module {
std::unordered_set<uint64_t> loadAddresses;
std::unordered_set<uint64_t> 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<uint64_t, BindInfo> vmToStateBaseAreaBindInfo;
std::unordered_map<uint64_t, uint32_t> vmToTile;
std::unordered_map<uint64_t, std::unique_ptr<IsaAllocation>> isaMap;
std::unordered_map<uint64_t, std::unique_ptr<IsaAllocation>> isaMap[NEO::EngineLimits::maxHandleCount];
std::unordered_map<uint64_t, uint64_t> elfMap;
std::unordered_map<uint64_t, ContextHandle> lrcToContextHandle;

View File

@@ -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<prelim_drm_i915_debug_event_vm_bind *>(&vmBindIsaData);
auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap;
auto &isaMap = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->isaMap[0];
auto isa = std::make_unique<DebugSessionLinux::IsaAllocation>();
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 = {};