From 7e7e0a000f8f8b2882bbf1e2279940da815dddd1 Mon Sep 17 00:00:00 2001 From: Slawomir Milczarek Date: Thu, 3 Apr 2025 13:27:13 +0000 Subject: [PATCH] refactor: Add ioctl helper for context destruction Related-To: NEO-11817 Signed-off-by: Slawomir Milczarek --- shared/source/os_interface/linux/ioctl_helper.cpp | 4 ++++ shared/source/os_interface/linux/ioctl_helper.h | 1 + shared/source/os_interface/linux/os_context_linux.cpp | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/shared/source/os_interface/linux/ioctl_helper.cpp b/shared/source/os_interface/linux/ioctl_helper.cpp index d37ccb7f18..ddd95c4668 100644 --- a/shared/source/os_interface/linux/ioctl_helper.cpp +++ b/shared/source/os_interface/linux/ioctl_helper.cpp @@ -121,4 +121,8 @@ BufferObject *IoctlHelper::allocUserptr(DrmMemoryManager &memoryManager, const A return memoryManager.allocUserptr(address, size, allocData.type, rootDeviceIndex); } +void IoctlHelper::destroyDrmContext(Drm &drm, OsContextLinux &osContext, uint32_t drmContextId) { + drm.destroyDrmContext(drmContextId); +} + } // namespace NEO diff --git a/shared/source/os_interface/linux/ioctl_helper.h b/shared/source/os_interface/linux/ioctl_helper.h index 1a3127dbf1..836993080c 100644 --- a/shared/source/os_interface/linux/ioctl_helper.h +++ b/shared/source/os_interface/linux/ioctl_helper.h @@ -169,6 +169,7 @@ class IoctlHelper { virtual bool checkIfIoctlReinvokeRequired(int error, DrmIoctl ioctlRequest) const; virtual int createDrmContext(Drm &drm, OsContextLinux &osContext, uint32_t drmVmId, uint32_t deviceIndex, bool allocateInterrupt) = 0; + virtual void destroyDrmContext(Drm &drm, OsContextLinux &osContext, uint32_t drmContextId); virtual bool createMediaContext(uint32_t vmId, void *controlSharedMemoryBuffer, uint32_t controlSharedMemoryBufferSize, void *controlBatchBuffer, uint32_t controlBatchBufferSize, void *&outDoorbell) { return false; } virtual bool releaseMediaContext(void *doorbellHandle) { return false; } diff --git a/shared/source/os_interface/linux/os_context_linux.cpp b/shared/source/os_interface/linux/os_context_linux.cpp index 4fd5a3d224..73b6a68361 100644 --- a/shared/source/os_interface/linux/os_context_linux.cpp +++ b/shared/source/os_interface/linux/os_context_linux.cpp @@ -174,7 +174,7 @@ uint64_t OsContextLinux::getOfflineDumpContextId(uint32_t deviceIndex) const { OsContextLinux::~OsContextLinux() { if (contextInitialized) { for (auto drmContextId : drmContextIds) { - drm.destroyDrmContext(drmContextId); + drm.getIoctlHelper()->destroyDrmContext(drm, *this, drmContextId); } } drmContextIds.clear();