From 4eabc77932b737267f607e92cbeb9e559b20bbf2 Mon Sep 17 00:00:00 2001 From: Pratik Bari Date: Tue, 17 Dec 2024 08:41:00 +0000 Subject: [PATCH] fix: Check for Local Memory is removed during VF handle creation - During VF handle creation, the check for the local memory used is removed. Related-To: NEO-13525 Signed-off-by: Pratik Bari --- .../vf_management/linux/sysman_os_vf_imp.cpp | 8 ------- .../api/vf_management/sysman_vf_imp.cpp | 2 -- .../vf_management/sysman_vf_management.cpp | 4 +--- .../api/vf_management/sysman_vf_management.h | 1 - .../windows/sysman_os_vf_imp.cpp | 3 +-- .../linux/test_zes_sysman_vf_management.cpp | 24 ------------------- .../windows/test_zes_sysman_vf_management.cpp | 24 ++++--------------- .../sysman/vf_management/linux/os_vf_imp.cpp | 8 ------- .../source/sysman/vf_management/vf_imp.cpp | 2 -- .../sysman/vf_management/vf_management.cpp | 4 +--- .../sysman/vf_management/vf_management.h | 1 - .../vf_management/windows/os_vf_imp.cpp | 3 +-- .../linux/test_zes_sysman_vf_management.cpp | 24 ------------------- .../windows/test_zes_sysman_vf_management.cpp | 24 ++++--------------- 14 files changed, 14 insertions(+), 118 deletions(-) diff --git a/level_zero/sysman/source/api/vf_management/linux/sysman_os_vf_imp.cpp b/level_zero/sysman/source/api/vf_management/linux/sysman_os_vf_imp.cpp index b0a6638e46..185b4239ec 100644 --- a/level_zero/sysman/source/api/vf_management/linux/sysman_os_vf_imp.cpp +++ b/level_zero/sysman/source/api/vf_management/linux/sysman_os_vf_imp.cpp @@ -220,10 +220,6 @@ bool LinuxVfImp::vfOsGetLocalMemoryUsed(uint64_t &lMemUsed) { NEO::printDebugString(NEO::debugManager.flags.PrintDebugMessages.get(), stderr, "Error@ %s(): Failed to read Local Memory Used with error 0x%x \n", __FUNCTION__, result); return false; } - if (lMemUsed == 0) { - NEO::printDebugString(NEO::debugManager.flags.PrintDebugMessages.get(), stderr, "Error@ %s(): since the Local Memory Used is zero \n", __FUNCTION__); - return false; - } return true; } @@ -237,10 +233,6 @@ bool LinuxVfImp::vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) { NEO::printDebugString(NEO::debugManager.flags.PrintDebugMessages.get(), stderr, "Error@ %s(): Failed to read Local Memory Quota with error 0x%x \n", __FUNCTION__, result); return false; } - if (lMemQuota == 0) { - NEO::printDebugString(NEO::debugManager.flags.PrintDebugMessages.get(), stderr, "Error@ %s(): since the Local Memory Quota is zero \n", __FUNCTION__); - return false; - } return true; } diff --git a/level_zero/sysman/source/api/vf_management/sysman_vf_imp.cpp b/level_zero/sysman/source/api/vf_management/sysman_vf_imp.cpp index b7c8262a11..f3cdb73908 100644 --- a/level_zero/sysman/source/api/vf_management/sysman_vf_imp.cpp +++ b/level_zero/sysman/source/api/vf_management/sysman_vf_imp.cpp @@ -24,8 +24,6 @@ ze_result_t VfImp::vfGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_e } void VfImp::init() { - uint64_t lmemUsed = 0; - isVfEnabled = pOsVf->vfOsGetLocalMemoryUsed(lmemUsed); pOsVf->vfOsGetCapabilities(&capability); } diff --git a/level_zero/sysman/source/api/vf_management/sysman_vf_management.cpp b/level_zero/sysman/source/api/vf_management/sysman_vf_management.cpp index 0f13dab654..8c26111334 100644 --- a/level_zero/sysman/source/api/vf_management/sysman_vf_management.cpp +++ b/level_zero/sysman/source/api/vf_management/sysman_vf_management.cpp @@ -22,9 +22,7 @@ VfManagementHandleContext::~VfManagementHandleContext() { void VfManagementHandleContext::createHandle(uint32_t vfId) { std::unique_ptr pVf = std::make_unique(pOsSysman, vfId); - if (pVf->isVfEnabled == true) { - handleList.push_back(std::move(pVf)); - } + handleList.push_back(std::move(pVf)); } ze_result_t VfManagementHandleContext::init() { diff --git a/level_zero/sysman/source/api/vf_management/sysman_vf_management.h b/level_zero/sysman/source/api/vf_management/sysman_vf_management.h index 536f1a520e..472572dcec 100644 --- a/level_zero/sysman/source/api/vf_management/sysman_vf_management.h +++ b/level_zero/sysman/source/api/vf_management/sysman_vf_management.h @@ -29,7 +29,6 @@ class VfManagement : _zes_vf_handle_t { static VfManagement *fromHandle(zes_vf_handle_t handle) { return static_cast(handle); } - bool isVfEnabled = false; }; struct VfManagementHandleContext { diff --git a/level_zero/sysman/source/api/vf_management/windows/sysman_os_vf_imp.cpp b/level_zero/sysman/source/api/vf_management/windows/sysman_os_vf_imp.cpp index e0c1f3712f..9a20af2eb4 100644 --- a/level_zero/sysman/source/api/vf_management/windows/sysman_os_vf_imp.cpp +++ b/level_zero/sysman/source/api/vf_management/windows/sysman_os_vf_imp.cpp @@ -13,7 +13,6 @@ namespace L0 { namespace Sysman { uint32_t WddmVfImp::numEnabledVfs = 0; -bool WddmVfImp::localMemoryUsedStatus = false; ze_result_t WddmVfImp::vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) { return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; @@ -25,7 +24,7 @@ ze_result_t WddmVfImp::vfOsGetEngineUtilization(uint32_t *pCount, zes_vf_util_en return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; } bool WddmVfImp::vfOsGetLocalMemoryUsed(uint64_t &lMmemUsed) { - return WddmVfImp::localMemoryUsedStatus; + return false; } bool WddmVfImp::vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) { return false; diff --git a/level_zero/sysman/test/unit_tests/sources/vf_management/linux/test_zes_sysman_vf_management.cpp b/level_zero/sysman/test/unit_tests/sources/vf_management/linux/test_zes_sysman_vf_management.cpp index 600a286ca7..7261ecd597 100644 --- a/level_zero/sysman/test/unit_tests/sources/vf_management/linux/test_zes_sysman_vf_management.cpp +++ b/level_zero/sysman/test/unit_tests/sources/vf_management/linux/test_zes_sysman_vf_management.cpp @@ -69,13 +69,6 @@ TEST_F(ZesVfFixture, GivenValidDeviceWithNoSRIOVSupportWhenQueryingEnabledVfHand EXPECT_EQ(count, (uint32_t)0); } -TEST_F(ZesVfFixture, GivenValidDeviceWhenZeroLocalMemoryValueIsReadThenZeroHandlesAreCreated) { - pSysfsAccess->mockLmemValue = false; - uint32_t count = 0; - EXPECT_EQ(zesDeviceEnumEnabledVFExp(device, &count, nullptr), ZE_RESULT_SUCCESS); - EXPECT_EQ(count, (uint32_t)0); -} - TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenPciAddressReturnedCorrectly) { uint32_t mockedDomain = 0; uint32_t mockedBus = 0x4d; @@ -210,14 +203,6 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenCallingZesVFManagementGetVFEngineUtil } } -TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesAndZeroMemoryQuotaValueIsReadThenErrorIsReturned) { - - pSysfsAccess->mockLmemQuotaValue = false; - zes_vf_exp_capabilities_t capabilities = {}; - auto pVfImp = std::make_unique(pOsSysman, 1); - EXPECT_EQ(pVfImp->vfOsGetCapabilities(&capabilities), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); -} - TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesAndSysfsReadForMemoryQuotaValueFailsThenErrorIsReturned) { pSysfsAccess->mockError = ZE_RESULT_ERROR_UNKNOWN; @@ -226,15 +211,6 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesAndSysfsReadFor EXPECT_EQ(pVfImp->vfOsGetCapabilities(&capabilities), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); } -TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingMemoryUtilizationAndAndZeroLocalMemoryUsedIsReadThenErrorIsReturned) { - - pSysfsAccess->mockLmemValue = false; - uint32_t mockCount = 1; - std::vector memUtils(mockCount); - auto pVfImp = std::make_unique(pOsSysman, 1); - EXPECT_EQ(pVfImp->vfOsGetMemoryUtilization(&mockCount, memUtils.data()), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); -} - TEST_F(ZesVfFixture, GivenValidVfHandleWhenBusyAndTotalTicksConfigNotAvailableAndCallingVfEngineDataInitThenErrorIsReturned) { auto pDrm = new MockVfNeoDrm(const_cast(pSysmanDeviceImp->getRootDeviceEnvironment())); diff --git a/level_zero/sysman/test/unit_tests/sources/vf_management/windows/test_zes_sysman_vf_management.cpp b/level_zero/sysman/test/unit_tests/sources/vf_management/windows/test_zes_sysman_vf_management.cpp index aad7609317..65e1c1040f 100644 --- a/level_zero/sysman/test/unit_tests/sources/vf_management/windows/test_zes_sysman_vf_management.cpp +++ b/level_zero/sysman/test/unit_tests/sources/vf_management/windows/test_zes_sysman_vf_management.cpp @@ -23,26 +23,9 @@ class ZesVfFixture : public SysmanDeviceFixture { } }; -TEST_F(ZesVfFixture, GivenValidDeviceHandleWhenRetrievingVfHandlesThenZeroCountIsReturned) { - - uint32_t mockHandleCount = 0u; - WddmVfImp::numEnabledVfs = 1; - uint32_t count = 0; - ze_result_t result = zesDeviceEnumEnabledVFExp(pSysmanDevice->toHandle(), &count, nullptr); - EXPECT_EQ(result, ZE_RESULT_SUCCESS); - EXPECT_EQ(count, mockHandleCount); - uint32_t testCount = count + 1; - std::vector handles(testCount); - result = zesDeviceEnumEnabledVFExp(pSysmanDevice->toHandle(), &testCount, handles.data()); - EXPECT_EQ(result, ZE_RESULT_SUCCESS); - EXPECT_EQ(testCount, count); - WddmVfImp::numEnabledVfs = 0; -} - -TEST_F(ZesVfFixture, GivenValidDeviceHandleAndOneVfIsEnabledAndLocalMemoryIsUsedWhenRetrievingVfHandlesThenCorrectCountIsReturned) { +TEST_F(ZesVfFixture, GivenValidDeviceHandleAndOneVfIsEnabledWhenRetrievingVfHandlesThenCorrectCountIsReturned) { WddmVfImp::numEnabledVfs = 1; - WddmVfImp::localMemoryUsedStatus = true; uint32_t count = 0; uint32_t mockHandleCount = 1u; ze_result_t result = zesDeviceEnumEnabledVFExp(pSysmanDevice->toHandle(), &count, nullptr); @@ -51,11 +34,14 @@ TEST_F(ZesVfFixture, GivenValidDeviceHandleAndOneVfIsEnabledAndLocalMemoryIsUsed result = zesDeviceEnumEnabledVFExp(pSysmanDevice->toHandle(), &count, nullptr); EXPECT_EQ(result, ZE_RESULT_SUCCESS); EXPECT_EQ(count, mockHandleCount); + count = count + 1; + result = zesDeviceEnumEnabledVFExp(pSysmanDevice->toHandle(), &count, nullptr); + EXPECT_EQ(result, ZE_RESULT_SUCCESS); + EXPECT_EQ(count, mockHandleCount); std::vector handles(count); result = zesDeviceEnumEnabledVFExp(pSysmanDevice->toHandle(), &count, handles.data()); EXPECT_EQ(result, ZE_RESULT_SUCCESS); EXPECT_EQ(handles.size(), mockHandleCount); - WddmVfImp::localMemoryUsedStatus = false; WddmVfImp::numEnabledVfs = 0; } diff --git a/level_zero/tools/source/sysman/vf_management/linux/os_vf_imp.cpp b/level_zero/tools/source/sysman/vf_management/linux/os_vf_imp.cpp index dba5573786..d24b84cc9e 100644 --- a/level_zero/tools/source/sysman/vf_management/linux/os_vf_imp.cpp +++ b/level_zero/tools/source/sysman/vf_management/linux/os_vf_imp.cpp @@ -99,10 +99,6 @@ bool LinuxVfImp::vfOsGetLocalMemoryUsed(uint64_t &lMemUsed) { NEO::printDebugString(NEO::debugManager.flags.PrintDebugMessages.get(), stderr, "Error@ %s(): Failed to read Local Memory Used with error 0x%x \n", __FUNCTION__, result); return false; } - if (lMemUsed == 0) { - NEO::printDebugString(NEO::debugManager.flags.PrintDebugMessages.get(), stderr, "Error@ %s(): since the Local Memory Used is zero \n", __FUNCTION__); - return false; - } return true; } @@ -115,10 +111,6 @@ bool LinuxVfImp::vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) { NEO::printDebugString(NEO::debugManager.flags.PrintDebugMessages.get(), stderr, "Error@ %s(): Failed to read Local Memory Quota with error 0x%x \n", __FUNCTION__, result); return false; } - if (lMemQuota == 0) { - NEO::printDebugString(NEO::debugManager.flags.PrintDebugMessages.get(), stderr, "Error@ %s(): since the Local Memory Quota is zero \n", __FUNCTION__); - return false; - } return true; } diff --git a/level_zero/tools/source/sysman/vf_management/vf_imp.cpp b/level_zero/tools/source/sysman/vf_management/vf_imp.cpp index 709fbfdc47..375bbb3f05 100644 --- a/level_zero/tools/source/sysman/vf_management/vf_imp.cpp +++ b/level_zero/tools/source/sysman/vf_management/vf_imp.cpp @@ -23,8 +23,6 @@ ze_result_t VfImp::vfGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_e } void VfImp::init() { - uint64_t lmemUsed = 0; - isVfEnabled = pOsVf->vfOsGetLocalMemoryUsed(lmemUsed); pOsVf->vfOsGetCapabilities(&capability); } diff --git a/level_zero/tools/source/sysman/vf_management/vf_management.cpp b/level_zero/tools/source/sysman/vf_management/vf_management.cpp index f7c702cdca..0fa87bf1a4 100644 --- a/level_zero/tools/source/sysman/vf_management/vf_management.cpp +++ b/level_zero/tools/source/sysman/vf_management/vf_management.cpp @@ -21,9 +21,7 @@ VfManagementHandleContext::~VfManagementHandleContext() { void VfManagementHandleContext::createHandle(uint32_t vfId) { std::unique_ptr pVf = std::make_unique(pOsSysman, vfId); - if (pVf->isVfEnabled == true) { - handleList.push_back(std::move(pVf)); - } + handleList.push_back(std::move(pVf)); } ze_result_t VfManagementHandleContext::init() { diff --git a/level_zero/tools/source/sysman/vf_management/vf_management.h b/level_zero/tools/source/sysman/vf_management/vf_management.h index 701d12c2ba..b735142bfc 100644 --- a/level_zero/tools/source/sysman/vf_management/vf_management.h +++ b/level_zero/tools/source/sysman/vf_management/vf_management.h @@ -28,7 +28,6 @@ class VfManagement : _zes_vf_handle_t { static VfManagement *fromHandle(zes_vf_handle_t handle) { return static_cast(handle); } - bool isVfEnabled = false; }; struct VfManagementHandleContext { diff --git a/level_zero/tools/source/sysman/vf_management/windows/os_vf_imp.cpp b/level_zero/tools/source/sysman/vf_management/windows/os_vf_imp.cpp index 3a9293aa97..d53406b779 100644 --- a/level_zero/tools/source/sysman/vf_management/windows/os_vf_imp.cpp +++ b/level_zero/tools/source/sysman/vf_management/windows/os_vf_imp.cpp @@ -12,7 +12,6 @@ namespace L0 { uint32_t WddmVfImp::numEnabledVfs = 0; -bool WddmVfImp::localMemoryUsedStatus = false; ze_result_t WddmVfImp::vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) { return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; @@ -24,7 +23,7 @@ ze_result_t WddmVfImp::vfOsGetEngineUtilization(uint32_t *pCount, zes_vf_util_en return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; } bool WddmVfImp::vfOsGetLocalMemoryUsed(uint64_t &lMmemUsed) { - return WddmVfImp::localMemoryUsedStatus; + return false; } bool WddmVfImp::vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) { return false; diff --git a/level_zero/tools/test/unit_tests/sources/sysman/vf_management/linux/test_zes_sysman_vf_management.cpp b/level_zero/tools/test/unit_tests/sources/sysman/vf_management/linux/test_zes_sysman_vf_management.cpp index ddb3f042ed..463cd8bf42 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/vf_management/linux/test_zes_sysman_vf_management.cpp +++ b/level_zero/tools/test/unit_tests/sources/sysman/vf_management/linux/test_zes_sysman_vf_management.cpp @@ -70,13 +70,6 @@ TEST_F(ZesVfFixture, GivenValidDeviceWithNoSRIOVSupportWhenQueryingEnabledVfHand EXPECT_EQ(count, (uint32_t)0); } -TEST_F(ZesVfFixture, GivenValidDeviceWhenZeroLocalMemoryValueIsReadThenZeroHandlesAreCreated) { - pSysfsAccess->mockLmemValue = false; - uint32_t count = 0; - EXPECT_EQ(zesDeviceEnumEnabledVFExp(device, &count, nullptr), ZE_RESULT_SUCCESS); - EXPECT_EQ(count, (uint32_t)0); -} - TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenPciAddressReturnedCorrectly) { uint32_t mockedDomain = 0; uint32_t mockedBus = 0x4d; @@ -219,22 +212,5 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesAndSysfsReadFor EXPECT_EQ(pVfImp->vfOsGetCapabilities(&capabilities), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); } -TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesAndZeroMemoryQuotaValueIsReadThenErrorIsReturned) { - - pSysfsAccess->mockLmemQuotaValue = false; - zes_vf_exp_capabilities_t capabilities = {}; - auto pVfImp = std::make_unique(pOsSysman, 1); - EXPECT_EQ(pVfImp->vfOsGetCapabilities(&capabilities), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); -} - -TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingMemoryUtilizationAndAndZeroLocalMemoryUsedIsReadThenErrorIsReturned) { - - pSysfsAccess->mockLmemValue = false; - uint32_t mockCount = 1; - std::vector memUtils(mockCount); - auto pVfImp = std::make_unique(pOsSysman, 1); - EXPECT_EQ(pVfImp->vfOsGetMemoryUtilization(&mockCount, memUtils.data()), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); -} - } // namespace ult } // namespace L0 diff --git a/level_zero/tools/test/unit_tests/sources/sysman/vf_management/windows/test_zes_sysman_vf_management.cpp b/level_zero/tools/test/unit_tests/sources/sysman/vf_management/windows/test_zes_sysman_vf_management.cpp index aebc01e0a6..2d942d9000 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/vf_management/windows/test_zes_sysman_vf_management.cpp +++ b/level_zero/tools/test/unit_tests/sources/sysman/vf_management/windows/test_zes_sysman_vf_management.cpp @@ -31,26 +31,9 @@ class ZesVfFixture : public SysmanDeviceFixture { } }; -TEST_F(ZesVfFixture, GivenValidDeviceHandleWhenRetrievingVfHandlesThenZeroCountIsReturned) { - - uint32_t mockHandleCount = 0u; - WddmVfImp::numEnabledVfs = 1; - uint32_t count = 0; - ze_result_t result = zesDeviceEnumEnabledVFExp(device->toHandle(), &count, nullptr); - EXPECT_EQ(result, ZE_RESULT_SUCCESS); - EXPECT_EQ(count, mockHandleCount); - uint32_t testCount = count + 1; - std::vector handles(testCount); - result = zesDeviceEnumEnabledVFExp(device->toHandle(), &testCount, handles.data()); - EXPECT_EQ(result, ZE_RESULT_SUCCESS); - EXPECT_EQ(testCount, count); - WddmVfImp::numEnabledVfs = 0; -} - -TEST_F(ZesVfFixture, GivenValidDeviceHandleAndOneVfIsEnabledAndLocalMemoryIsUsedWhenRetrievingVfHandlesThenCorrectCountIsReturned) { +TEST_F(ZesVfFixture, GivenValidDeviceHandleAndOneVfIsEnabledWhenRetrievingVfHandlesThenCorrectCountIsReturned) { WddmVfImp::numEnabledVfs = 1; - WddmVfImp::localMemoryUsedStatus = true; uint32_t count = 0; uint32_t mockHandleCount = 1u; ze_result_t result = zesDeviceEnumEnabledVFExp(device->toHandle(), &count, nullptr); @@ -59,11 +42,14 @@ TEST_F(ZesVfFixture, GivenValidDeviceHandleAndOneVfIsEnabledAndLocalMemoryIsUsed result = zesDeviceEnumEnabledVFExp(device->toHandle(), &count, nullptr); EXPECT_EQ(result, ZE_RESULT_SUCCESS); EXPECT_EQ(count, mockHandleCount); + count = count + 1; + result = zesDeviceEnumEnabledVFExp(device->toHandle(), &count, nullptr); + EXPECT_EQ(result, ZE_RESULT_SUCCESS); + EXPECT_EQ(count, mockHandleCount); std::vector handles(count); result = zesDeviceEnumEnabledVFExp(device->toHandle(), &count, handles.data()); EXPECT_EQ(result, ZE_RESULT_SUCCESS); EXPECT_EQ(handles.size(), mockHandleCount); - WddmVfImp::localMemoryUsedStatus = false; WddmVfImp::numEnabledVfs = 0; }