diff --git a/level_zero/core/source/memory/cpu_page_fault_memory_manager.cpp b/level_zero/core/source/memory/cpu_page_fault_memory_manager.cpp index efd51e7358..5053cc6101 100644 --- a/level_zero/core/source/memory/cpu_page_fault_memory_manager.cpp +++ b/level_zero/core/source/memory/cpu_page_fault_memory_manager.cpp @@ -63,6 +63,7 @@ void transferAndUnprotectMemoryWithHints(NEO::PageFaultManager *pageFaultHandler pageFaultHandler->transferToCpu(allocPtr, pageFaultData.size, pageFaultData.cmdQ); end = std::chrono::steady_clock::now(); long long elapsedTime = std::chrono::duration_cast(end - start).count(); + pageFaultData.unifiedMemoryManager->nonGpuDomainAllocs.push_back(allocPtr); if (NEO::DebugManager.flags.PrintUmdSharedMigration.get()) { printf("UMD transferred shared allocation 0x%llx (%zu B) from GPU to CPU (%f us)\n", reinterpret_cast(allocPtr), pageFaultData.size, elapsedTime / 1e3); diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_1.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_1.cpp index 387a3aa38f..94c4662390 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_1.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_1.cpp @@ -545,7 +545,11 @@ TEST_F(CommandListMemAdvisePageFault, givenValidPtrAndPageFaultHandlerAndGpuDoma NEO::PageFaultManager::PageFaultData pageData; pageData.cmdQ = deviceImp; pageData.domain = NEO::PageFaultManager::AllocationDomain::Gpu; + pageData.unifiedMemoryManager = device->getDriverHandle()->getSvmAllocsManager(); + EXPECT_EQ(0u, device->getDriverHandle()->getSvmAllocsManager()->nonGpuDomainAllocs.size()); mockPageFaultManager->gpuDomainHandler(mockPageFaultManager, ptr, pageData); + EXPECT_EQ(1u, device->getDriverHandle()->getSvmAllocsManager()->nonGpuDomainAllocs.size()); + flags = deviceImp->memAdviseSharedAllocations[allocData]; EXPECT_EQ(0, flags.cpuMigrationBlocked); @@ -616,6 +620,7 @@ TEST_F(CommandListMemAdvisePageFault, givenValidPtrAndPageFaultHandlerAndGpuDoma NEO::PageFaultManager::PageFaultData pageData; pageData.cmdQ = deviceImp; pageData.domain = NEO::PageFaultManager::AllocationDomain::Gpu; + pageData.unifiedMemoryManager = device->getDriverHandle()->getSvmAllocsManager(); mockPageFaultManager->gpuDomainHandler(mockPageFaultManager, ptr, pageData); flags = deviceImp->memAdviseSharedAllocations[allocData]; EXPECT_EQ(0, flags.cpuMigrationBlocked); @@ -669,6 +674,7 @@ TEST_F(CommandListMemAdvisePageFault, givenValidPtrAndPageFaultHandlerAndGpuDoma NEO::PageFaultManager::PageFaultData pageData; pageData.cmdQ = deviceImp; pageData.domain = NEO::PageFaultManager::AllocationDomain::Gpu; + pageData.unifiedMemoryManager = device->getDriverHandle()->getSvmAllocsManager(); mockPageFaultManager->gpuDomainHandler(mockPageFaultManager, ptr, pageData); flags = deviceImp->memAdviseSharedAllocations[allocData]; EXPECT_EQ(0, flags.cpuMigrationBlocked); @@ -715,6 +721,7 @@ TEST_F(CommandListMemAdvisePageFault, givenValidPtrAndPageFaultHandlerAndGpuDoma NEO::PageFaultManager::PageFaultData pageData; pageData.cmdQ = deviceImp; pageData.domain = NEO::PageFaultManager::AllocationDomain::Cpu; + pageData.unifiedMemoryManager = device->getDriverHandle()->getSvmAllocsManager(); mockPageFaultManager->gpuDomainHandler(mockPageFaultManager, ptr, pageData); flags = deviceImp->memAdviseSharedAllocations[allocData]; EXPECT_EQ(0, flags.cpuMigrationBlocked); @@ -761,6 +768,7 @@ TEST_F(CommandListMemAdvisePageFault, givenInvalidPtrAndPageFaultHandlerAndGpuDo NEO::PageFaultManager::PageFaultData pageData; pageData.cmdQ = deviceImp; pageData.domain = NEO::PageFaultManager::AllocationDomain::Gpu; + pageData.unifiedMemoryManager = device->getDriverHandle()->getSvmAllocsManager(); void *alloc = reinterpret_cast(0x1); mockPageFaultManager->gpuDomainHandler(mockPageFaultManager, alloc, pageData); flags = deviceImp->memAdviseSharedAllocations[allocData];