mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-08 14:02:58 +08:00
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:
committed by
Compute-Runtime-Automation
parent
eb8cd33dc6
commit
52133e61ce
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 = {};
|
||||
|
||||
Reference in New Issue
Block a user