From d223508cadcd9695d7949eabf35c86e8ce1f178a Mon Sep 17 00:00:00 2001 From: Zbigniew Zdanowicz Date: Tue, 16 Mar 2021 17:47:26 +0000 Subject: [PATCH] Move Drm function Related-To: NEO-5570 Signed-off-by: Zbigniew Zdanowicz --- .../unit_test/os_interface/linux/drm_neo_create.cpp | 7 ++++++- shared/source/os_interface/linux/drm_neo.cpp | 11 +---------- shared/source/os_interface/linux/drm_query.cpp | 10 ++++++++++ shared/source/os_interface/linux/drm_query_dg1.cpp | 10 ++++++++++ 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/opencl/test/unit_test/os_interface/linux/drm_neo_create.cpp b/opencl/test/unit_test/os_interface/linux/drm_neo_create.cpp index 1df591dbe9..25f9382754 100644 --- a/opencl/test/unit_test/os_interface/linux/drm_neo_create.cpp +++ b/opencl/test/unit_test/os_interface/linux/drm_neo_create.cpp @@ -37,12 +37,17 @@ Drm *Drm::create(std::unique_ptr hwDeviceId, RootDeviceEnvironment & } auto drm = new DrmMockDefault(rootDeviceEnvironment); + const HardwareInfo *hwInfo = rootDeviceEnvironment.getHardwareInfo(); + if (HwHelper::get(hwInfo->platform.eRenderCoreFamily).getEnableLocalMemory(*hwInfo)) { + drm->queryMemoryInfo(); + } + if (drm->isVmBindAvailable() && rootDeviceEnvironment.executionEnvironment.isDebuggingEnabled()) { drm->setPerContextVMRequired(true); } if (!drm->isPerContextVMRequired()) { - drm->createVirtualMemoryAddressSpace(HwHelper::getSubDevicesCount(rootDeviceEnvironment.getHardwareInfo())); + drm->createVirtualMemoryAddressSpace(HwHelper::getSubDevicesCount(hwInfo)); } return drm; } diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 69a87f364c..bc6cbf8cac 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -234,15 +234,6 @@ void Drm::destroyDrmContext(uint32_t drmContextId) { UNRECOVERABLE_IF(retVal != 0); } -int Drm::createDrmVirtualMemory(uint32_t &drmVmId) { - drm_i915_gem_vm_control ctl = {}; - auto ret = SysCalls::ioctl(getFileDescriptor(), DRM_IOCTL_I915_GEM_VM_CREATE, &ctl); - if (ret == 0) { - drmVmId = ctl.vm_id; - } - return ret; -} - void Drm::destroyDrmVirtualMemory(uint32_t drmVmId) { drm_i915_gem_vm_control ctl = {}; ctl.vm_id = drmVmId; @@ -449,7 +440,7 @@ std::unique_ptr Drm::query(uint32_t queryId, uint32_t queryItemFlags, bool Drm::createVirtualMemoryAddressSpace(uint32_t vmCount) { for (auto i = 0u; i < vmCount; i++) { - uint32_t id = 0; + uint32_t id = i; if (0 != createDrmVirtualMemory(id)) { return false; } diff --git a/shared/source/os_interface/linux/drm_query.cpp b/shared/source/os_interface/linux/drm_query.cpp index b3bcb9614a..eba9030f8e 100644 --- a/shared/source/os_interface/linux/drm_query.cpp +++ b/shared/source/os_interface/linux/drm_query.cpp @@ -8,6 +8,7 @@ #include "shared/source/os_interface/linux/cache_info_impl.h" #include "shared/source/os_interface/linux/drm_engine_mapper.h" #include "shared/source/os_interface/linux/engine_info_impl.h" +#include "shared/source/os_interface/linux/sys_calls.h" #include "drm_neo.h" #include "drm_query_flags.h" @@ -77,4 +78,13 @@ void Drm::setupCacheInfo(const HardwareInfo &hwInfo) { this->cacheInfo.reset(new CacheInfoImpl()); } +int Drm::createDrmVirtualMemory(uint32_t &drmVmId) { + drm_i915_gem_vm_control ctl = {}; + auto ret = SysCalls::ioctl(getFileDescriptor(), DRM_IOCTL_I915_GEM_VM_CREATE, &ctl); + if (ret == 0) { + drmVmId = ctl.vm_id; + } + return ret; +} + } // namespace NEO diff --git a/shared/source/os_interface/linux/drm_query_dg1.cpp b/shared/source/os_interface/linux/drm_query_dg1.cpp index 595fc9f8e3..eccbb6b2cc 100644 --- a/shared/source/os_interface/linux/drm_query_dg1.cpp +++ b/shared/source/os_interface/linux/drm_query_dg1.cpp @@ -9,6 +9,7 @@ #include "shared/source/os_interface/linux/drm_engine_mapper.h" #include "shared/source/os_interface/linux/engine_info_impl.h" #include "shared/source/os_interface/linux/memory_info_impl.h" +#include "shared/source/os_interface/linux/sys_calls.h" #include "drm_neo.h" #include "drm_query_flags.h" @@ -86,4 +87,13 @@ void Drm::setupCacheInfo(const HardwareInfo &hwInfo) { this->cacheInfo.reset(new CacheInfoImpl()); } +int Drm::createDrmVirtualMemory(uint32_t &drmVmId) { + drm_i915_gem_vm_control ctl = {}; + auto ret = SysCalls::ioctl(getFileDescriptor(), DRM_IOCTL_I915_GEM_VM_CREATE, &ctl); + if (ret == 0) { + drmVmId = ctl.vm_id; + } + return ret; +} + } // namespace NEO