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 <pratik.bari@intel.com>
This commit is contained in:
Pratik Bari
2024-12-17 08:41:00 +00:00
committed by Compute-Runtime-Automation
parent c7d1f3b6a9
commit 4eabc77932
14 changed files with 14 additions and 118 deletions

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -22,9 +22,7 @@ VfManagementHandleContext::~VfManagementHandleContext() {
void VfManagementHandleContext::createHandle(uint32_t vfId) {
std::unique_ptr<VfManagement> pVf = std::make_unique<VfImp>(pOsSysman, vfId);
if (pVf->isVfEnabled == true) {
handleList.push_back(std::move(pVf));
}
handleList.push_back(std::move(pVf));
}
ze_result_t VfManagementHandleContext::init() {

View File

@@ -29,7 +29,6 @@ class VfManagement : _zes_vf_handle_t {
static VfManagement *fromHandle(zes_vf_handle_t handle) {
return static_cast<VfManagement *>(handle);
}
bool isVfEnabled = false;
};
struct VfManagementHandleContext {

View File

@@ -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;

View File

@@ -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<PublicLinuxVfImp>(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<zes_vf_util_mem_exp2_t> memUtils(mockCount);
auto pVfImp = std::make_unique<PublicLinuxVfImp>(pOsSysman, 1);
EXPECT_EQ(pVfImp->vfOsGetMemoryUtilization(&mockCount, memUtils.data()), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE);
}
TEST_F(ZesVfFixture, GivenValidVfHandleWhenBusyAndTotalTicksConfigNotAvailableAndCallingVfEngineDataInitThenErrorIsReturned) {
auto pDrm = new MockVfNeoDrm(const_cast<NEO::RootDeviceEnvironment &>(pSysmanDeviceImp->getRootDeviceEnvironment()));

View File

@@ -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<zes_vf_handle_t> 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<zes_vf_handle_t> 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;
}

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -21,9 +21,7 @@ VfManagementHandleContext::~VfManagementHandleContext() {
void VfManagementHandleContext::createHandle(uint32_t vfId) {
std::unique_ptr<VfManagement> pVf = std::make_unique<VfImp>(pOsSysman, vfId);
if (pVf->isVfEnabled == true) {
handleList.push_back(std::move(pVf));
}
handleList.push_back(std::move(pVf));
}
ze_result_t VfManagementHandleContext::init() {

View File

@@ -28,7 +28,6 @@ class VfManagement : _zes_vf_handle_t {
static VfManagement *fromHandle(zes_vf_handle_t handle) {
return static_cast<VfManagement *>(handle);
}
bool isVfEnabled = false;
};
struct VfManagementHandleContext {

View File

@@ -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;

View File

@@ -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<PublicLinuxVfImp>(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<zes_vf_util_mem_exp2_t> memUtils(mockCount);
auto pVfImp = std::make_unique<PublicLinuxVfImp>(pOsSysman, 1);
EXPECT_EQ(pVfImp->vfOsGetMemoryUtilization(&mockCount, memUtils.data()), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE);
}
} // namespace ult
} // namespace L0

View File

@@ -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<zes_vf_handle_t> 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<zes_vf_handle_t> 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;
}