From 59c8e8f0191f0794f0f70507e6b2b65a2cbcf2a6 Mon Sep 17 00:00:00 2001 From: Compute-Runtime-Validation Date: Thu, 25 May 2023 07:18:41 +0200 Subject: [PATCH] Revert "fix: Force Close of IPC handles at memFree" This reverts commit e1c3cb5ecd78ba27aa225f3e8596a286f52ecfba. Signed-off-by: Compute-Runtime-Validation --- .../core/source/context/context_imp.cpp | 13 ++++------- .../memory/test_memory_drm_or_wddm.cpp | 23 ------------------- .../sources/memory/test_memory_wddm.cpp | 23 ------------------- 3 files changed, 5 insertions(+), 54 deletions(-) diff --git a/level_zero/core/source/context/context_imp.cpp b/level_zero/core/source/context/context_imp.cpp index 4ef94ab5d1..e9e126df44 100644 --- a/level_zero/core/source/context/context_imp.cpp +++ b/level_zero/core/source/context/context_imp.cpp @@ -403,25 +403,22 @@ ze_result_t ContextImp::freeMem(const void *ptr, bool blocking) { return ZE_RESULT_ERROR_INVALID_ARGUMENT; } + for (auto pairDevice : this->devices) { + this->freePeerAllocations(ptr, blocking, Device::fromHandle(pairDevice.second)); + } + this->driverHandle->svmAllocsManager->freeSVMAlloc(const_cast(ptr), blocking); + std::map::iterator ipcHandleIterator; auto lockIPC = this->lockIPCHandleMap(); ipcHandleIterator = this->getIPCHandleMap().begin(); while (ipcHandleIterator != this->getIPCHandleMap().end()) { if (ipcHandleIterator->second->ptr == reinterpret_cast(ptr)) { - auto *memoryManager = driverHandle->getMemoryManager(); - memoryManager->closeInternalHandle(ipcHandleIterator->second->ipcData.handle, ipcHandleIterator->second->handleId, ipcHandleIterator->second->alloc); delete ipcHandleIterator->second; this->getIPCHandleMap().erase(ipcHandleIterator->first); break; } ipcHandleIterator++; } - - for (auto pairDevice : this->devices) { - this->freePeerAllocations(ptr, blocking, Device::fromHandle(pairDevice.second)); - } - this->driverHandle->svmAllocsManager->freeSVMAlloc(const_cast(ptr), blocking); - return ZE_RESULT_SUCCESS; } diff --git a/level_zero/core/test/unit_tests/sources/memory/test_memory_drm_or_wddm.cpp b/level_zero/core/test/unit_tests/sources/memory/test_memory_drm_or_wddm.cpp index ef988be5be..8c5f019813 100644 --- a/level_zero/core/test/unit_tests/sources/memory/test_memory_drm_or_wddm.cpp +++ b/level_zero/core/test/unit_tests/sources/memory/test_memory_drm_or_wddm.cpp @@ -72,29 +72,6 @@ TEST_F(MemoryIPCTests, EXPECT_EQ(ZE_RESULT_SUCCESS, result); } -TEST_F(MemoryIPCTests, - givenCallToGetIpcHandleWithDeviceAllocationAndCallToMemFreeThenIPCHandleIsClosed) { - size_t size = 10; - size_t alignment = 1u; - void *ptr = nullptr; - - ze_device_mem_alloc_desc_t deviceDesc = {}; - ze_result_t result = context->allocDeviceMem(device->toHandle(), - &deviceDesc, - size, alignment, &ptr); - EXPECT_EQ(ZE_RESULT_SUCCESS, result); - EXPECT_NE(nullptr, ptr); - - ze_ipc_mem_handle_t ipcHandle; - result = context->getIpcMemHandle(ptr, &ipcHandle); - EXPECT_EQ(ZE_RESULT_SUCCESS, result); - - result = context->freeMem(ptr); - EXPECT_EQ(ZE_RESULT_SUCCESS, result); - - EXPECT_EQ(0u, context->getIPCHandleMap().size()); -} - TEST_F(MemoryIPCTests, givenCallToGetIpcHandleWithDeviceAllocationAndCallToGetFdFromIpcHandleThenIPCHandleReturned) { size_t size = 10; diff --git a/level_zero/core/test/unit_tests/sources/memory/test_memory_wddm.cpp b/level_zero/core/test/unit_tests/sources/memory/test_memory_wddm.cpp index 7dd636c1f9..e040734091 100644 --- a/level_zero/core/test/unit_tests/sources/memory/test_memory_wddm.cpp +++ b/level_zero/core/test/unit_tests/sources/memory/test_memory_wddm.cpp @@ -72,29 +72,6 @@ TEST_F(MemoryIPCTests, EXPECT_EQ(ZE_RESULT_SUCCESS, result); } -TEST_F(MemoryIPCTests, - givenCallToGetIpcHandleWithDeviceAllocationAndCallToMemFreeThenIPCHandleIsClosed) { - size_t size = 10; - size_t alignment = 1u; - void *ptr = nullptr; - - ze_device_mem_alloc_desc_t deviceDesc = {}; - ze_result_t result = context->allocDeviceMem(device->toHandle(), - &deviceDesc, - size, alignment, &ptr); - EXPECT_EQ(ZE_RESULT_SUCCESS, result); - EXPECT_NE(nullptr, ptr); - - ze_ipc_mem_handle_t ipcHandle; - result = context->getIpcMemHandle(ptr, &ipcHandle); - EXPECT_EQ(ZE_RESULT_SUCCESS, result); - - result = context->freeMem(ptr); - EXPECT_EQ(ZE_RESULT_SUCCESS, result); - - EXPECT_EQ(0u, context->getIPCHandleMap().size()); -} - TEST_F(MemoryIPCTests, givenMultipleCallsToGetIpcHandleWithDeviceAllocationAndCallsToPutIpcHandleThenIpcHandleIsReturnedAndReleased) { size_t size = 10;