From 7c42c255b99174c75f58e8493df5a81485a1e4f9 Mon Sep 17 00:00:00 2001 From: Jemale Lockett Date: Fri, 28 Jun 2024 21:29:44 +0000 Subject: [PATCH] fix: Make debug area resident for subdevices Resolves: NEO-9455 Signed-off-by: Jemale Lockett --- shared/source/debugger/debugger_l0.cpp | 5 +++++ .../test/unit_test/debugger/test_l0_debugger.cpp | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/shared/source/debugger/debugger_l0.cpp b/shared/source/debugger/debugger_l0.cpp index b7a3e35bdf..20fbc44344 100644 --- a/shared/source/debugger/debugger_l0.cpp +++ b/shared/source/debugger/debugger_l0.cpp @@ -95,6 +95,11 @@ void DebuggerL0::initialize() { NEO::MemoryOperationsHandler *memoryOperationsIface = rootDeviceEnvironment.memoryOperationsInterface.get(); if (memoryOperationsIface) { memoryOperationsIface->makeResident(device, ArrayRef(&moduleDebugArea, 1)); + auto numSubDevices = device->getNumSubDevices(); + for (uint32_t i = 0; i < numSubDevices; i++) { + auto subDevice = device->getSubDevice(i); + memoryOperationsIface->makeResident(subDevice, ArrayRef(&moduleDebugArea, 1)); + } } const auto &productHelper = device->getProductHelper(); diff --git a/shared/test/unit_test/debugger/test_l0_debugger.cpp b/shared/test/unit_test/debugger/test_l0_debugger.cpp index 94eef44148..567b908f8a 100644 --- a/shared/test/unit_test/debugger/test_l0_debugger.cpp +++ b/shared/test/unit_test/debugger/test_l0_debugger.cpp @@ -216,6 +216,22 @@ HWTEST_F(L0DebuggerTest, givenDebuggerWhenCreatedThenModuleHeapDebugAreaIsCreate neoDevice->getMemoryManager()->freeGraphicsMemory(allocation); } +HWTEST_F(L0DebuggerTest, givenDebuggerCreatedWhenSubdevicesExistThenModuleHeapDebugAreaIsResidentForSubDevices) { + DebugManagerStateRestore restorer; + constexpr auto numSubDevices = 2; + debugManager.flags.CreateMultipleSubDevices.set(numSubDevices); + auto executionEnvironment = new NEO::ExecutionEnvironment; + auto devices = NEO::DeviceFactory::createDevices(*executionEnvironment); + auto neoDevice = devices[0].get(); + + auto memoryOperationsHandler = new NEO::MockMemoryOperations(); + memoryOperationsHandler->makeResidentCalledCount = 0; + neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->memoryOperationsInterface.reset(memoryOperationsHandler); + auto debugger = std::make_unique>(neoDevice); + + EXPECT_EQ((1 + numSubDevices), memoryOperationsHandler->makeResidentCalledCount); +} + HWTEST_F(L0DebuggerTest, givenBindlessSipWhenModuleHeapDebugAreaIsCreatedThenReservedFieldIsSet) { DebugManagerStateRestore restorer; NEO::debugManager.flags.UseBindlessDebugSip.set(1);