From 8c75080d9e1db2e653c7c13fcf1ba5a163c3d8ab Mon Sep 17 00:00:00 2001 From: SaiKishore Konda Date: Fri, 23 Oct 2020 03:26:12 -0400 Subject: [PATCH] update Memory Location for zesMemoryGetProperties Change-Id: I2698352d89ed2351e6fa8ec0b58b277387650bc0 Signed-off-by: SaiKishore Konda --- .../sysman/memory/linux/dg1/os_memory_imp.cpp | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/level_zero/tools/source/sysman/memory/linux/dg1/os_memory_imp.cpp b/level_zero/tools/source/sysman/memory/linux/dg1/os_memory_imp.cpp index 49a264287e..ee10ec53e6 100644 --- a/level_zero/tools/source/sysman/memory/linux/dg1/os_memory_imp.cpp +++ b/level_zero/tools/source/sysman/memory/linux/dg1/os_memory_imp.cpp @@ -22,10 +22,36 @@ LinuxMemoryImp::LinuxMemoryImp(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint3 bool LinuxMemoryImp::isMemoryModuleSupported() { return pDevice->getDriverHandle()->getMemoryManager()->isLocalMemorySupported(pDevice->getRootDeviceIndex()); } +static ze_result_t queryMemoryRegions(NEO::Drm *pDrm, drm_i915_memory_region_info &memRegions) { + if (pDrm->queryMemoryInfo() == false) { + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; + } + + auto memoryInfo = static_cast(pDrm->getMemoryInfo()); + auto regions = std::find_if(memoryInfo->regions.begin(), memoryInfo->regions.end(), [](auto tempRegion) { + return (tempRegion.region.memory_class == I915_MEMORY_CLASS_DEVICE); + }); + if (regions == memoryInfo->regions.end()) { + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; + } + memRegions = *regions; + return ZE_RESULT_SUCCESS; +} ze_result_t LinuxMemoryImp::getProperties(zes_mem_properties_t *pProperties) { + + drm_i915_memory_region_info memRegions = {}; + ze_result_t result = queryMemoryRegions(pDrm, memRegions); + + if (result == ZE_RESULT_SUCCESS) { + if (memRegions.region.memory_class == I915_MEMORY_CLASS_DEVICE) + pProperties->location = ZES_MEM_LOC_DEVICE; + } else { + // by default failure case also it will be DEVICE + pProperties->location = ZES_MEM_LOC_DEVICE; + } + pProperties->type = ZES_MEM_TYPE_DDR; - pProperties->location = ZES_MEM_LOC_DEVICE; pProperties->onSubdevice = isSubdevice; pProperties->subdeviceId = subdeviceId; pProperties->busWidth = -1; @@ -40,22 +66,17 @@ ze_result_t LinuxMemoryImp::getBandwidth(zes_mem_bandwidth_t *pBandwidth) { } ze_result_t LinuxMemoryImp::getState(zes_mem_state_t *pState) { - if (pDrm->queryMemoryInfo() == false) { - return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; + + drm_i915_memory_region_info memRegions = {}; + ze_result_t result = queryMemoryRegions(pDrm, memRegions); + + if (result != ZE_RESULT_SUCCESS) { + return result; } pState->health = ZES_MEM_HEALTH_OK; - - auto memoryInfo = static_cast(pDrm->getMemoryInfo()); - auto region = std::find_if(memoryInfo->regions.begin(), memoryInfo->regions.end(), [](auto tempRegion) { - return (tempRegion.region.memory_class == I915_MEMORY_CLASS_DEVICE); - }); - if (region == memoryInfo->regions.end()) { - return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; - } - - pState->free = region->unallocated_size; - pState->size = region->probed_size; + pState->free = memRegions.unallocated_size; + pState->size = memRegions.probed_size; return ZE_RESULT_SUCCESS; }