diff --git a/level_zero/api/sysman/ze_sysman_loader.cpp b/level_zero/api/sysman/ze_sysman_loader.cpp index e1c495874e..4312536e95 100644 --- a/level_zero/api/sysman/ze_sysman_loader.cpp +++ b/level_zero/api/sysman/ze_sysman_loader.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2024 Intel Corporation + * Copyright (C) 2020-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -402,6 +402,7 @@ zesGetVFManagementExpProcAddrTable( fillDdiEntry(pDdiTable->pfnGetVFCapabilitiesExp, L0::zesVFManagementGetVFCapabilitiesExp, version, ZE_API_VERSION_1_11); fillDdiEntry(pDdiTable->pfnGetVFMemoryUtilizationExp2, L0::zesVFManagementGetVFMemoryUtilizationExp2, version, ZE_API_VERSION_1_11); fillDdiEntry(pDdiTable->pfnGetVFEngineUtilizationExp2, L0::zesVFManagementGetVFEngineUtilizationExp2, version, ZE_API_VERSION_1_11); + fillDdiEntry(pDdiTable->pfnGetVFCapabilitiesExp2, L0::zesVFManagementGetVFCapabilitiesExp2, version, ZE_API_VERSION_1_12); return result; } diff --git a/level_zero/api/sysman/zes_sysman_api_entrypoints.h b/level_zero/api/sysman/zes_sysman_api_entrypoints.h index 767f148878..f670d89c35 100644 --- a/level_zero/api/sysman/zes_sysman_api_entrypoints.h +++ b/level_zero/api/sysman/zes_sysman_api_entrypoints.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2024 Intel Corporation + * Copyright (C) 2020-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -909,9 +909,9 @@ ze_result_t zesVFManagementGetVFCapabilitiesExp( zes_vf_handle_t hVFhandle, zes_vf_exp_capabilities_t *pCapability) { if (L0::sysmanInitFromCore) { - return L0::VfManagement::fromHandle(hVFhandle)->vfGetCapabilities(pCapability); + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; } else if (L0::Sysman::sysmanOnlyInit) { - return L0::Sysman::VfManagement::fromHandle(hVFhandle)->vfGetCapabilities(pCapability); + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; } else { return ZE_RESULT_ERROR_UNINITIALIZED; } @@ -943,6 +943,18 @@ ze_result_t zesVFManagementGetVFEngineUtilizationExp2( } } +ze_result_t zesVFManagementGetVFCapabilitiesExp2( + zes_vf_handle_t hVFhandle, + zes_vf_exp2_capabilities_t *pCapability) { + if (L0::sysmanInitFromCore) { + return L0::VfManagement::fromHandle(hVFhandle)->vfGetCapabilities(pCapability); + } else if (L0::Sysman::sysmanOnlyInit) { + return L0::Sysman::VfManagement::fromHandle(hVFhandle)->vfGetCapabilities(pCapability); + } else { + return ZE_RESULT_ERROR_UNINITIALIZED; + } +} + ze_result_t zesDeviceEnumMemoryModules( zes_device_handle_t hDevice, uint32_t *pCount, @@ -2129,6 +2141,12 @@ ZE_APIEXPORT ze_result_t ZE_APICALL zesVFManagementGetVFEngineUtilizationExp2( return L0::zesVFManagementGetVFEngineUtilizationExp2(hVFhandle, pCount, pEngineUtil); } +ZE_APIEXPORT ze_result_t ZE_APICALL zesVFManagementGetVFCapabilitiesExp2( + zes_vf_handle_t hVFhandle, + zes_vf_exp2_capabilities_t *pCapability) { + return L0::zesVFManagementGetVFCapabilitiesExp2(hVFhandle, pCapability); +} + ZE_APIEXPORT ze_result_t ZE_APICALL zesVFManagementSetVFTelemetryModeExp( zes_vf_handle_t hVFhandle, zes_vf_info_util_exp_flags_t flags, 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 0a2511543f..89f7d5fb5b 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -51,7 +51,7 @@ ze_result_t LinuxVfImp::getVfBDFAddress(uint32_t vfIdMinusOne, zes_pci_address_t return ZE_RESULT_SUCCESS; } -ze_result_t LinuxVfImp::vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) { +ze_result_t LinuxVfImp::vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) { ze_result_t result = getVfBDFAddress((vfId - 1), &pCapability->address); if (result != ZE_RESULT_SUCCESS) { @@ -66,7 +66,7 @@ ze_result_t LinuxVfImp::vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapabili if (!vfOsGetLocalMemoryQuota(vfLmemQuota)) { return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; } - pCapability->vfDeviceMemSize = static_cast(vfLmemQuota / 1024); + pCapability->vfDeviceMemSize = vfLmemQuota; pCapability->vfID = vfId; return ZE_RESULT_SUCCESS; @@ -89,7 +89,7 @@ ze_result_t LinuxVfImp::vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_m if (pMemUtil != nullptr) { for (uint32_t i = 0; i < *pCount; i++) { pMemUtil[i].vfMemLocation = ZES_MEM_LOC_DEVICE; - pMemUtil[i].vfMemUtilized = vfLmemUsed / 1024; + pMemUtil[i].vfMemUtilized = vfLmemUsed; } } diff --git a/level_zero/sysman/source/api/vf_management/linux/sysman_os_vf_imp.h b/level_zero/sysman/source/api/vf_management/linux/sysman_os_vf_imp.h index fa988ef753..fde7ab1281 100644 --- a/level_zero/sysman/source/api/vf_management/linux/sysman_os_vf_imp.h +++ b/level_zero/sysman/source/api/vf_management/linux/sysman_os_vf_imp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -31,7 +31,7 @@ class LinuxVfImp : public OsVf, NEO::NonCopyableOrMovableClass { LinuxVfImp(OsSysman *pOsSysman, uint32_t vfId); ~LinuxVfImp() override; - ze_result_t vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) override; + ze_result_t vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) override; ze_result_t vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) override; ze_result_t vfOsGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) override; bool vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) override; diff --git a/level_zero/sysman/source/api/vf_management/sysman_os_vf.h b/level_zero/sysman/source/api/vf_management/sysman_os_vf.h index cbb812e130..3a3def47b2 100644 --- a/level_zero/sysman/source/api/vf_management/sysman_os_vf.h +++ b/level_zero/sysman/source/api/vf_management/sysman_os_vf.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -16,7 +16,7 @@ struct OsSysman; class OsVf { public: - virtual ze_result_t vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) = 0; + virtual ze_result_t vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) = 0; virtual ze_result_t vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) = 0; virtual ze_result_t vfOsGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) = 0; virtual bool vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) = 0; 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 f3cdb73908..c2da25ea07 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -12,13 +12,15 @@ namespace L0 { namespace Sysman { -ze_result_t VfImp::vfGetCapabilities(zes_vf_exp_capabilities_t *pCapability) { +ze_result_t VfImp::vfGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) { *pCapability = capability; return ZE_RESULT_SUCCESS; } + ze_result_t VfImp::vfGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) { return pOsVf->vfOsGetMemoryUtilization(pCount, pMemUtil); } + ze_result_t VfImp::vfGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) { return pOsVf->vfOsGetEngineUtilization(pCount, pEngineUtil); } diff --git a/level_zero/sysman/source/api/vf_management/sysman_vf_imp.h b/level_zero/sysman/source/api/vf_management/sysman_vf_imp.h index da71d86a3f..8970d32d9a 100644 --- a/level_zero/sysman/source/api/vf_management/sysman_vf_imp.h +++ b/level_zero/sysman/source/api/vf_management/sysman_vf_imp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -20,7 +20,7 @@ namespace Sysman { class VfImp : public VfManagement, NEO::NonCopyableOrMovableClass { public: void init(); - ze_result_t vfGetCapabilities(zes_vf_exp_capabilities_t *pCapability) override; + ze_result_t vfGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) override; ze_result_t vfGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) override; ze_result_t vfGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) override; @@ -32,7 +32,7 @@ class VfImp : public VfManagement, NEO::NonCopyableOrMovableClass { std::unique_ptr pOsVf; private: - zes_vf_exp_capabilities_t capability = {}; + zes_vf_exp2_capabilities_t capability = {}; }; } // namespace Sysman 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 472572dcec..f58021f5b8 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -20,7 +20,7 @@ struct OsSysman; class VfManagement : _zes_vf_handle_t { public: - virtual ze_result_t vfGetCapabilities(zes_vf_exp_capabilities_t *pCapability) = 0; + virtual ze_result_t vfGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) = 0; virtual ze_result_t vfGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) = 0; virtual ze_result_t vfGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) = 0; 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 9a20af2eb4..bcf4333597 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -14,7 +14,7 @@ namespace Sysman { uint32_t WddmVfImp::numEnabledVfs = 0; -ze_result_t WddmVfImp::vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) { +ze_result_t WddmVfImp::vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) { return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; } ze_result_t WddmVfImp::vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) { diff --git a/level_zero/sysman/source/api/vf_management/windows/sysman_os_vf_imp.h b/level_zero/sysman/source/api/vf_management/windows/sysman_os_vf_imp.h index 43e6b00ff4..13ab68b2be 100644 --- a/level_zero/sysman/source/api/vf_management/windows/sysman_os_vf_imp.h +++ b/level_zero/sysman/source/api/vf_management/windows/sysman_os_vf_imp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -14,7 +14,7 @@ namespace Sysman { class WddmVfImp : public OsVf { public: - ze_result_t vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) override; + ze_result_t vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) override; ze_result_t vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) override; ze_result_t vfOsGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) override; bool vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) override; 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 7261ecd597..0842b996e7 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -77,8 +77,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenPciAddressR auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, mockedDomain); EXPECT_EQ(capabilities.address.bus, mockedBus); EXPECT_EQ(capabilities.address.device, mockedDevice); @@ -91,8 +91,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleAndSysfsGetRealPathFailsWhenQueryingVfCap auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, (uint32_t)0); EXPECT_EQ(capabilities.address.bus, (uint32_t)0); EXPECT_EQ(capabilities.address.device, (uint32_t)0); @@ -106,8 +106,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleAndInvalidBDFWithImproperTokensWhenQueryi auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, (uint32_t)0); EXPECT_EQ(capabilities.address.bus, (uint32_t)0); EXPECT_EQ(capabilities.address.device, (uint32_t)0); @@ -121,8 +121,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleAndInvalidBDFWhenQueryingVfCapabilitiesTh auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, (uint32_t)0); EXPECT_EQ(capabilities.address.bus, (uint32_t)0); EXPECT_EQ(capabilities.address.device, (uint32_t)0); @@ -134,9 +134,9 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenParamsRetur auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); - EXPECT_EQ(capabilities.vfDeviceMemSize, mockLmemQuota / 1024); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + EXPECT_EQ(capabilities.vfDeviceMemSize, mockLmemQuota); EXPECT_GT(capabilities.vfID, (uint32_t)0); } } @@ -151,7 +151,7 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingMemoryUtilizationThenMemoryPa std::vector memUtils(count); EXPECT_EQ(zesVFManagementGetVFMemoryUtilizationExp2(hSysmanVf, &count, memUtils.data()), ZE_RESULT_SUCCESS); for (uint32_t it = 0; it < count; it++) { - EXPECT_EQ(memUtils[it].vfMemUtilized, mockLmemUsed / 1024); + EXPECT_EQ(memUtils[it].vfMemUtilized, mockLmemUsed); EXPECT_EQ(memUtils[it].vfMemLocation, ZES_MEM_LOC_DEVICE); } } @@ -206,7 +206,7 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenCallingZesVFManagementGetVFEngineUtil TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesAndSysfsReadForMemoryQuotaValueFailsThenErrorIsReturned) { pSysfsAccess->mockError = ZE_RESULT_ERROR_UNKNOWN; - zes_vf_exp_capabilities_t capabilities = {}; + zes_vf_exp2_capabilities_t capabilities = {}; auto pVfImp = std::make_unique(pOsSysman, 1); EXPECT_EQ(pVfImp->vfOsGetCapabilities(&capabilities), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); } 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 65e1c1040f..83acde57ad 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -50,8 +50,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenZeroPciAddr uint32_t vfId = 1; std::unique_ptr pVfManagement = std::make_unique(pOsSysman, vfId); zes_vf_handle_t vfHandle = pVfManagement->toVfManagementHandle(); - zes_vf_exp_capabilities_t capabilities = {}; - ze_result_t result = zesVFManagementGetVFCapabilitiesExp(vfHandle, &capabilities); + zes_vf_exp2_capabilities_t capabilities = {}; + ze_result_t result = zesVFManagementGetVFCapabilitiesExp2(vfHandle, &capabilities); EXPECT_EQ(result, ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, (uint32_t)0); EXPECT_EQ(capabilities.address.bus, (uint32_t)0); @@ -62,7 +62,7 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenZeroPciAddr TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingOsVfCapabilitiesThenErrorIsReturned) { auto pWddmVfImp = std::make_unique(); - zes_vf_exp_capabilities_t capabilities = {}; + zes_vf_exp2_capabilities_t capabilities = {}; ze_result_t result = pWddmVfImp->vfOsGetCapabilities(&capabilities); EXPECT_EQ(result, ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); } 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 d24b84cc9e..b4cc7df20e 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -46,7 +46,7 @@ ze_result_t LinuxVfImp::getVfBDFAddress(uint32_t vfIdMinusOne, zes_pci_address_t return ZE_RESULT_SUCCESS; } -ze_result_t LinuxVfImp::vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) { +ze_result_t LinuxVfImp::vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) { ze_result_t result = getVfBDFAddress((vfId - 1), &pCapability->address); if (result != ZE_RESULT_SUCCESS) { @@ -61,7 +61,7 @@ ze_result_t LinuxVfImp::vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapabili if (!vfOsGetLocalMemoryQuota(vfLmemQuota)) { return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; } - pCapability->vfDeviceMemSize = static_cast(vfLmemQuota / 1024); + pCapability->vfDeviceMemSize = vfLmemQuota; pCapability->vfID = vfId; return ZE_RESULT_SUCCESS; @@ -83,7 +83,7 @@ ze_result_t LinuxVfImp::vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_m if (pMemUtil != nullptr) { for (uint32_t i = 0; i < *pCount; i++) { pMemUtil[i].vfMemLocation = ZES_MEM_LOC_DEVICE; - pMemUtil[i].vfMemUtilized = vfLmemUsed / 1024; + pMemUtil[i].vfMemUtilized = vfLmemUsed; } } diff --git a/level_zero/tools/source/sysman/vf_management/linux/os_vf_imp.h b/level_zero/tools/source/sysman/vf_management/linux/os_vf_imp.h index 337ca2702a..b8bea866b3 100644 --- a/level_zero/tools/source/sysman/vf_management/linux/os_vf_imp.h +++ b/level_zero/tools/source/sysman/vf_management/linux/os_vf_imp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -31,7 +31,7 @@ class LinuxVfImp : public OsVf, NEO::NonCopyableOrMovableClass { LinuxVfImp(OsSysman *pOsSysman, uint32_t vfId); ~LinuxVfImp() override; - ze_result_t vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) override; + ze_result_t vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) override; ze_result_t vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) override; ze_result_t vfOsGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) override; bool vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) override; diff --git a/level_zero/tools/source/sysman/vf_management/os_vf.h b/level_zero/tools/source/sysman/vf_management/os_vf.h index 872f1b7efd..be77cf08b2 100644 --- a/level_zero/tools/source/sysman/vf_management/os_vf.h +++ b/level_zero/tools/source/sysman/vf_management/os_vf.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -15,7 +15,7 @@ struct OsSysman; class OsVf { public: - virtual ze_result_t vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) = 0; + virtual ze_result_t vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) = 0; virtual ze_result_t vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) = 0; virtual ze_result_t vfOsGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) = 0; virtual bool vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) = 0; 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 375bbb3f05..09e64110db 100644 --- a/level_zero/tools/source/sysman/vf_management/vf_imp.cpp +++ b/level_zero/tools/source/sysman/vf_management/vf_imp.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -11,7 +11,7 @@ namespace L0 { -ze_result_t VfImp::vfGetCapabilities(zes_vf_exp_capabilities_t *pCapability) { +ze_result_t VfImp::vfGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) { *pCapability = capability; return ZE_RESULT_SUCCESS; } diff --git a/level_zero/tools/source/sysman/vf_management/vf_imp.h b/level_zero/tools/source/sysman/vf_management/vf_imp.h index e94f8eedce..f0183e2be2 100644 --- a/level_zero/tools/source/sysman/vf_management/vf_imp.h +++ b/level_zero/tools/source/sysman/vf_management/vf_imp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -19,7 +19,7 @@ namespace L0 { class VfImp : public VfManagement, NEO::NonCopyableOrMovableClass { public: void init(); - ze_result_t vfGetCapabilities(zes_vf_exp_capabilities_t *pCapability) override; + ze_result_t vfGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) override; ze_result_t vfGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) override; ze_result_t vfGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) override; @@ -31,7 +31,7 @@ class VfImp : public VfManagement, NEO::NonCopyableOrMovableClass { std::unique_ptr pOsVf; private: - zes_vf_exp_capabilities_t capability = {}; + zes_vf_exp2_capabilities_t capability = {}; }; } // namespace L0 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 b735142bfc..1795b1b329 100644 --- a/level_zero/tools/source/sysman/vf_management/vf_management.h +++ b/level_zero/tools/source/sysman/vf_management/vf_management.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -19,7 +19,7 @@ struct OsSysman; class VfManagement : _zes_vf_handle_t { public: - virtual ze_result_t vfGetCapabilities(zes_vf_exp_capabilities_t *pCapability) = 0; + virtual ze_result_t vfGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) = 0; virtual ze_result_t vfGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) = 0; virtual ze_result_t vfGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) = 0; 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 d53406b779..3607d785d6 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -13,7 +13,7 @@ namespace L0 { uint32_t WddmVfImp::numEnabledVfs = 0; -ze_result_t WddmVfImp::vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) { +ze_result_t WddmVfImp::vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) { return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; } ze_result_t WddmVfImp::vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) { diff --git a/level_zero/tools/source/sysman/vf_management/windows/os_vf_imp.h b/level_zero/tools/source/sysman/vf_management/windows/os_vf_imp.h index 0a59314cba..10a04dda30 100644 --- a/level_zero/tools/source/sysman/vf_management/windows/os_vf_imp.h +++ b/level_zero/tools/source/sysman/vf_management/windows/os_vf_imp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -13,7 +13,7 @@ namespace L0 { class WddmVfImp : public OsVf { public: - ze_result_t vfOsGetCapabilities(zes_vf_exp_capabilities_t *pCapability) override; + ze_result_t vfOsGetCapabilities(zes_vf_exp2_capabilities_t *pCapability) override; ze_result_t vfOsGetMemoryUtilization(uint32_t *pCount, zes_vf_util_mem_exp2_t *pMemUtil) override; ze_result_t vfOsGetEngineUtilization(uint32_t *pCount, zes_vf_util_engine_exp2_t *pEngineUtil) override; bool vfOsGetLocalMemoryQuota(uint64_t &lMemQuota) override; diff --git a/level_zero/tools/test/black_box_tests/zello_sysman.cpp b/level_zero/tools/test/black_box_tests/zello_sysman.cpp index bbce343674..05b208df01 100644 --- a/level_zero/tools/test/black_box_tests/zello_sysman.cpp +++ b/level_zero/tools/test/black_box_tests/zello_sysman.cpp @@ -1611,13 +1611,13 @@ void testSysmanVfTelemetry(ze_device_handle_t &device) { VALIDATECALL(zesDeviceEnumEnabledVFExp(device, &count, handles.data())); for (const auto &handle : handles) { - zes_vf_exp_capabilities_t props = {}; - VALIDATECALL(zesVFManagementGetVFCapabilitiesExp(handle, &props)); + zes_vf_exp2_capabilities_t props = {}; + VALIDATECALL(zesVFManagementGetVFCapabilitiesExp2(handle, &props)); if (verbose) { std::cout << std::endl << "----- PCI BDF ------ " << std::endl; std::cout << "Domain: Bus: Device: Function = " << props.address.domain << " : " << props.address.bus << " : " << props.address.device << " : " << props.address.function << std::endl; - std::cout << "Memory Size in KiloBytes = " << props.vfDeviceMemSize << std::endl; + std::cout << "Memory Size in Bytes = " << props.vfDeviceMemSize << std::endl; std::cout << "VF Id = " << props.vfID << std::endl; } @@ -1631,7 +1631,7 @@ void testSysmanVfTelemetry(ze_device_handle_t &device) { for (uint32_t it = 0; it < count; it++) { if (verbose) { std::cout << "Location of the Memory = " << getMemoryModuleLocation(memUtils[it].vfMemLocation) << std::endl; - std::cout << "Memory Utilized in KiloBytes = " << memUtils[it].vfMemUtilized << std::endl; + std::cout << "Memory Utilized in Bytes = " << memUtils[it].vfMemUtilized << std::endl; } } 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 463cd8bf42..32f76066b3 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -78,8 +78,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenPciAddressR auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, mockedDomain); EXPECT_EQ(capabilities.address.bus, mockedBus); EXPECT_EQ(capabilities.address.device, mockedDevice); @@ -92,8 +92,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleAndSysfsGetRealPathFailsWhenQueryingVfCap auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, (uint32_t)0); EXPECT_EQ(capabilities.address.bus, (uint32_t)0); EXPECT_EQ(capabilities.address.device, (uint32_t)0); @@ -107,8 +107,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleAndInvalidBDFWithImproperTokensWhenQueryi auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, (uint32_t)0); EXPECT_EQ(capabilities.address.bus, (uint32_t)0); EXPECT_EQ(capabilities.address.device, (uint32_t)0); @@ -122,8 +122,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleAndInvalidBDFWhenQueryingVfCapabilitiesTh auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, (uint32_t)0); EXPECT_EQ(capabilities.address.bus, (uint32_t)0); EXPECT_EQ(capabilities.address.device, (uint32_t)0); @@ -135,9 +135,9 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenParamsRetur auto handles = getEnabledVfHandles(mockHandleCount); for (auto hSysmanVf : handles) { ASSERT_NE(nullptr, hSysmanVf); - zes_vf_exp_capabilities_t capabilities = {}; - EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); - EXPECT_EQ(capabilities.vfDeviceMemSize, mockLmemQuota / 1024); + zes_vf_exp2_capabilities_t capabilities = {}; + EXPECT_EQ(zesVFManagementGetVFCapabilitiesExp2(hSysmanVf, &capabilities), ZE_RESULT_SUCCESS); + EXPECT_EQ(capabilities.vfDeviceMemSize, mockLmemQuota); EXPECT_GT(capabilities.vfID, (uint32_t)0); } } @@ -152,7 +152,7 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingMemoryUtilizationThenMemoryPa std::vector memUtils(count); EXPECT_EQ(zesVFManagementGetVFMemoryUtilizationExp2(hSysmanVf, &count, memUtils.data()), ZE_RESULT_SUCCESS); for (uint32_t it = 0; it < count; it++) { - EXPECT_EQ(memUtils[it].vfMemUtilized, mockLmemUsed / 1024); + EXPECT_EQ(memUtils[it].vfMemUtilized, mockLmemUsed); EXPECT_EQ(memUtils[it].vfMemLocation, ZES_MEM_LOC_DEVICE); } } @@ -207,7 +207,7 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenCallingZesVFManagementGetVFEngineUtil TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesAndSysfsReadForMemoryQuotaValueFailsThenErrorIsReturned) { pSysfsAccess->mockError = ZE_RESULT_ERROR_UNKNOWN; - zes_vf_exp_capabilities_t capabilities = {}; + zes_vf_exp2_capabilities_t capabilities = {}; auto pVfImp = std::make_unique(pOsSysman, 1); EXPECT_EQ(pVfImp->vfOsGetCapabilities(&capabilities), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); } 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 2d942d9000..1e832e4f0d 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 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -58,8 +58,8 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenZeroPciAddr uint32_t vfId = 1; std::unique_ptr pVfManagement = std::make_unique(pOsSysman, vfId); zes_vf_handle_t vfHandle = pVfManagement->toVfManagementHandle(); - zes_vf_exp_capabilities_t capabilities = {}; - ze_result_t result = zesVFManagementGetVFCapabilitiesExp(vfHandle, &capabilities); + zes_vf_exp2_capabilities_t capabilities = {}; + ze_result_t result = zesVFManagementGetVFCapabilitiesExp2(vfHandle, &capabilities); EXPECT_EQ(result, ZE_RESULT_SUCCESS); EXPECT_EQ(capabilities.address.domain, (uint32_t)0); EXPECT_EQ(capabilities.address.bus, (uint32_t)0); @@ -70,7 +70,7 @@ TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingVfCapabilitiesThenZeroPciAddr TEST_F(ZesVfFixture, GivenValidVfHandleWhenQueryingOsVfCapabilitiesThenErrorIsReturned) { auto pWddmVfImp = std::make_unique(); - zes_vf_exp_capabilities_t capabilities = {}; + zes_vf_exp2_capabilities_t capabilities = {}; ze_result_t result = pWddmVfImp->vfOsGetCapabilities(&capabilities); EXPECT_EQ(result, ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); }