diff --git a/shared/source/os_interface/linux/drm_memory_manager.cpp b/shared/source/os_interface/linux/drm_memory_manager.cpp index a026a2c733..44cc6ae14a 100644 --- a/shared/source/os_interface/linux/drm_memory_manager.cpp +++ b/shared/source/os_interface/linux/drm_memory_manager.cpp @@ -1839,7 +1839,7 @@ GraphicsAllocation *DrmMemoryManager::createSharedUnifiedMemoryAllocation(const createMemoryRegionsForSharedAllocation(*pHwInfo, *memoryInfo, allocationData, memRegions); uint32_t handle = 0; - auto ret = memoryInfo->createGemExt(&drm, memRegions, size, handle, std::numeric_limits::max()); + auto ret = memoryInfo->createGemExt(&drm, memRegions, size, handle, {}); if (ret) { return nullptr; diff --git a/shared/source/os_interface/linux/ioctl_helper.h b/shared/source/os_interface/linux/ioctl_helper.h index 9b5df01bb5..6e40b36db4 100644 --- a/shared/source/os_interface/linux/ioctl_helper.h +++ b/shared/source/os_interface/linux/ioctl_helper.h @@ -71,7 +71,7 @@ class IoctlHelper { virtual IoctlHelper *clone() = 0; virtual bool isVmBindAvailable(Drm *drm) = 0; - virtual uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId) = 0; + virtual uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId) = 0; virtual std::vector translateToMemoryRegions(const std::vector ®ionInfo) = 0; virtual CacheRegion closAlloc(Drm *drm) = 0; virtual uint16_t closAllocWays(Drm *drm, CacheRegion closIndex, uint16_t cacheLevel, uint16_t numWays) = 0; @@ -132,7 +132,7 @@ class IoctlHelperUpstream : public IoctlHelper { IoctlHelper *clone() override; bool isVmBindAvailable(Drm *drm) override; - uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId) override; + uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId) override; std::vector translateToMemoryRegions(const std::vector ®ionInfo) override; CacheRegion closAlloc(Drm *drm) override; uint16_t closAllocWays(Drm *drm, CacheRegion closIndex, uint16_t cacheLevel, uint16_t numWays) override; @@ -186,7 +186,7 @@ class IoctlHelperImpl : public IoctlHelperUpstream { } IoctlHelper *clone() override; - uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId) override; + uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId) override; std::vector translateToMemoryRegions(const std::vector ®ionInfo) override; unsigned int getIoctlRequestValue(DrmIoctl ioctlRequest) const override; }; @@ -196,7 +196,7 @@ class IoctlHelperPrelim20 : public IoctlHelper { IoctlHelper *clone() override; bool isVmBindAvailable(Drm *drm) override; - uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId) override; + uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId) override; std::vector translateToMemoryRegions(const std::vector ®ionInfo) override; CacheRegion closAlloc(Drm *drm) override; uint16_t closAllocWays(Drm *drm, CacheRegion closIndex, uint16_t cacheLevel, uint16_t numWays) override; diff --git a/shared/source/os_interface/linux/ioctl_helper_prelim.cpp b/shared/source/os_interface/linux/ioctl_helper_prelim.cpp index f0ec95e6de..777fa04c56 100644 --- a/shared/source/os_interface/linux/ioctl_helper_prelim.cpp +++ b/shared/source/os_interface/linux/ioctl_helper_prelim.cpp @@ -40,7 +40,7 @@ bool IoctlHelperPrelim20::isVmBindAvailable(Drm *drm) { return vmBindSupported; } -uint32_t IoctlHelperPrelim20::createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId) { +uint32_t IoctlHelperPrelim20::createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId) { uint32_t regionsSize = static_cast(memClassInstances.size()); std::vector regions(regionsSize); for (uint32_t i = 0; i < regionsSize; i++) { @@ -57,9 +57,9 @@ uint32_t IoctlHelperPrelim20::createGemExt(Drm *drm, const MemRegionsVec &memCla setparamRegion.param = regionParam; prelim_drm_i915_gem_create_ext_vm_private vmPrivate{}; - if (vmId != std::numeric_limits::max()) { + if (vmId != std::nullopt) { vmPrivate.base.name = PRELIM_I915_GEM_CREATE_EXT_VM_PRIVATE; - vmPrivate.vm_id = vmId; + vmPrivate.vm_id = vmId.value(); setparamRegion.base.next_extension = reinterpret_cast(&vmPrivate); } diff --git a/shared/source/os_interface/linux/ioctl_helper_upstream.cpp b/shared/source/os_interface/linux/ioctl_helper_upstream.cpp index b51e54695b..1fb7c23914 100644 --- a/shared/source/os_interface/linux/ioctl_helper_upstream.cpp +++ b/shared/source/os_interface/linux/ioctl_helper_upstream.cpp @@ -23,7 +23,7 @@ bool IoctlHelperUpstream::isVmBindAvailable(Drm *drm) { return false; } -uint32_t IoctlHelperUpstream::createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId) { +uint32_t IoctlHelperUpstream::createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId) { uint32_t regionsSize = static_cast(memClassInstances.size()); std::vector regions(regionsSize); for (uint32_t i = 0; i < regionsSize; i++) { diff --git a/shared/source/os_interface/linux/local/dg1/ioctl_helper_dg1.cpp b/shared/source/os_interface/linux/local/dg1/ioctl_helper_dg1.cpp index a6efa3b519..34c5a5371b 100644 --- a/shared/source/os_interface/linux/local/dg1/ioctl_helper_dg1.cpp +++ b/shared/source/os_interface/linux/local/dg1/ioctl_helper_dg1.cpp @@ -23,7 +23,7 @@ IoctlHelper *IoctlHelperImpl::clone() { } template <> -uint32_t IoctlHelperImpl::createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId) { +uint32_t IoctlHelperImpl::createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId) { auto ret = IoctlHelperUpstream::createGemExt(drm, memClassInstances, allocSize, handle, vmId); if (ret == 0) { return ret; diff --git a/shared/source/os_interface/linux/memory_info.cpp b/shared/source/os_interface/linux/memory_info.cpp index a770ebceda..5eaf397e3c 100644 --- a/shared/source/os_interface/linux/memory_info.cpp +++ b/shared/source/os_interface/linux/memory_info.cpp @@ -53,7 +53,7 @@ void MemoryInfo::assignRegionsFromDistances(const std::vector &dis } } -uint32_t MemoryInfo::createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId) { +uint32_t MemoryInfo::createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId) { return drm->getIoctlHelper()->createGemExt(drm, memClassInstances, allocSize, handle, vmId); } @@ -109,7 +109,7 @@ uint32_t MemoryInfo::createGemExtWithSingleRegion(Drm *drm, uint32_t memoryBanks auto pHwInfo = drm->getRootDeviceEnvironment().getHardwareInfo(); auto regionClassAndInstance = getMemoryRegionClassAndInstance(memoryBanks, *pHwInfo); MemRegionsVec region = {regionClassAndInstance}; - uint32_t vmId = std::numeric_limits::max(); + std::optional vmId; if (!drm->isPerContextVMRequired()) { if (memoryBanks != 0 && DebugManager.flags.EnablePrivateBO.get()) { auto tileIndex = getTileIndex(memoryBanks, *pHwInfo); diff --git a/shared/source/os_interface/linux/memory_info.h b/shared/source/os_interface/linux/memory_info.h index 8e5c3242d1..c279bb46a7 100644 --- a/shared/source/os_interface/linux/memory_info.h +++ b/shared/source/os_interface/linux/memory_info.h @@ -26,7 +26,7 @@ class MemoryInfo { void assignRegionsFromDistances(const std::vector &distances); - MOCKABLE_VIRTUAL uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId); + MOCKABLE_VIRTUAL uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId); MemoryClassInstance getMemoryRegionClassAndInstance(uint32_t memoryBank, const HardwareInfo &hwInfo); diff --git a/shared/test/common/libult/linux/drm_mock_prelim_context.h b/shared/test/common/libult/linux/drm_mock_prelim_context.h index 177e23723b..91d222809e 100644 --- a/shared/test/common/libult/linux/drm_mock_prelim_context.h +++ b/shared/test/common/libult/linux/drm_mock_prelim_context.h @@ -45,7 +45,7 @@ struct CreateGemExt { std::vector memoryRegions{}; struct VmPrivate { - uint32_t vmId{std::numeric_limits::max()}; + std::optional vmId{}; }; VmPrivate vmPrivateExt{}; }; diff --git a/shared/test/common/os_interface/linux/drm_memory_manager_tests.h b/shared/test/common/os_interface/linux/drm_memory_manager_tests.h index ab39635702..0784c23b01 100644 --- a/shared/test/common/os_interface/linux/drm_memory_manager_tests.h +++ b/shared/test/common/os_interface/linux/drm_memory_manager_tests.h @@ -156,7 +156,7 @@ struct MockedMemoryInfo : public NEO::MemoryInfo { size_t getMemoryRegionSize(uint32_t memoryBank) override { return 1024u; } - uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, uint32_t vmId) override { + uint32_t createGemExt(Drm *drm, const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional vmId) override { if (allocSize == 0) { return EINVAL; } diff --git a/shared/test/unit_test/os_interface/linux/drm_memory_info_prelim_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_memory_info_prelim_tests.cpp index b62c050957..3eed585bc7 100644 --- a/shared/test/unit_test/os_interface/linux/drm_memory_info_prelim_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_memory_info_prelim_tests.cpp @@ -373,7 +373,7 @@ TEST(MemoryInfo, givenMemoryInfoWithRegionsWhenCreatingGemWithExtensionsThenRetu auto drm = std::make_unique(*executionEnvironment->rootDeviceEnvironments[0]); uint32_t handle = 0; MemRegionsVec memClassInstance = {regionInfo[0].region, regionInfo[1].region}; - auto ret = memoryInfo->createGemExt(drm.get(), memClassInstance, 1024, handle, std::numeric_limits::max()); + auto ret = memoryInfo->createGemExt(drm.get(), memClassInstance, 1024, handle, {}); EXPECT_EQ(1u, handle); EXPECT_EQ(0u, ret); EXPECT_EQ(1u, drm->ioctlCallsCount); @@ -468,7 +468,7 @@ TEST(MemoryInfo, givenMemoryInfoWithRegionsAndNoPrivateBOSupportWhenCreatingGemE const auto &createExt = drm->context.receivedCreateGemExt; ASSERT_TRUE(createExt); - EXPECT_EQ(std::numeric_limits::max(), createExt->vmPrivateExt.vmId); + EXPECT_EQ(std::nullopt, createExt->vmPrivateExt.vmId); } TEST(MemoryInfo, givenMemoryInfoWithRegionsAndPrivateBOSupportedAndIsPerContextVMRequiredIsTrueWhenCreatingGemExtWithSingleRegionThenVmIdIsNotSet) { @@ -498,5 +498,5 @@ TEST(MemoryInfo, givenMemoryInfoWithRegionsAndPrivateBOSupportedAndIsPerContextV const auto &createExt = drm->context.receivedCreateGemExt; ASSERT_TRUE(createExt); - EXPECT_EQ(std::numeric_limits::max(), createExt->vmPrivateExt.vmId); + EXPECT_EQ(std::nullopt, createExt->vmPrivateExt.vmId); } diff --git a/shared/test/unit_test/os_interface/linux/drm_memory_info_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_memory_info_tests.cpp index 89e458116e..25d98edb24 100644 --- a/shared/test/unit_test/os_interface/linux/drm_memory_info_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_memory_info_tests.cpp @@ -226,7 +226,7 @@ HWTEST2_F(MemoryInfoTest, givenMemoryInfoWithRegionsWhenCreatingGemWithExtension uint32_t handle = 0; MemRegionsVec memClassInstance = {regionInfo[0].region, regionInfo[1].region}; - auto ret = memoryInfo->createGemExt(drm.get(), memClassInstance, 1024, handle, std::numeric_limits::max()); + auto ret = memoryInfo->createGemExt(drm.get(), memClassInstance, 1024, handle, {}); EXPECT_EQ(1u, handle); EXPECT_EQ(0u, ret); EXPECT_EQ(1u, drm->ioctlCallsCount); diff --git a/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp index b4c68e3746..a9385c745b 100644 --- a/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp @@ -112,7 +112,7 @@ TEST_F(IoctlHelperPrelimFixture, givenPrelimsWhenCreateGemExtThenReturnSuccess) auto ioctlHelper = drm->getIoctlHelper(); uint32_t handle = 0; MemRegionsVec memClassInstance = {{I915_MEMORY_CLASS_DEVICE, 0}}; - auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, std::numeric_limits::max()); + auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, {}); EXPECT_EQ(1u, handle); EXPECT_EQ(0u, ret); @@ -127,7 +127,7 @@ TEST_F(IoctlHelperPrelimFixture, givenPrelimsWhenCreateGemExtWithDebugFlagThenPr auto ioctlHelper = drm->getIoctlHelper(); uint32_t handle = 0; MemRegionsVec memClassInstance = {{I915_MEMORY_CLASS_DEVICE, 0}}; - ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, std::numeric_limits::max()); + ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, {}); std::string output = testing::internal::GetCapturedStdout(); std::string expectedOutput("Performing GEM_CREATE_EXT with { size: 1024, param: 0x1000000010001, memory class: 1, memory instance: 0 }\nGEM_CREATE_EXT has returned: 0 BO-1 with size: 1024\n"); diff --git a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_dg1.cpp b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_dg1.cpp index e85a0df6a9..b17837eb84 100644 --- a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_dg1.cpp +++ b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_dg1.cpp @@ -25,7 +25,7 @@ DG1TEST_F(IoctlHelperTestsDg1, givenDg1WhenCreateGemExtThenReturnCorrectValue) { auto ioctlHelper = drm->getIoctlHelper(); uint32_t handle = 0; MemRegionsVec memClassInstance = {{I915_MEMORY_CLASS_DEVICE, 0}}; - auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, std::numeric_limits::max()); + auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, {}); EXPECT_EQ(0u, ret); EXPECT_EQ(1u, handle); @@ -47,7 +47,7 @@ DG1TEST_F(IoctlHelperTestsDg1, givenDg1WithDrmTipWhenCreateGemExtWithDebugFlagTh auto ioctlHelper = drm->getIoctlHelper(); uint32_t handle = 0; MemRegionsVec memClassInstance = {{I915_MEMORY_CLASS_DEVICE, 0}}; - auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, std::numeric_limits::max()); + auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, {}); std::string output = testing::internal::GetCapturedStdout(); std::string expectedOutput("Performing GEM_CREATE_EXT with { size: 1024, memory class: 1, memory instance: 0 }\nGEM_CREATE_EXT with EXT_MEMORY_REGIONS has returned: 0 BO-1 with size: 1024\n"); @@ -68,7 +68,7 @@ DG1TEST_F(IoctlHelperTestsDg1, givenDg1WhenCreateGemExtWithDebugFlagThenPrintDeb auto ioctlHelper = drm->getIoctlHelper(); uint32_t handle = 0; MemRegionsVec memClassInstance = {{I915_MEMORY_CLASS_DEVICE, 0}}; - auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, std::numeric_limits::max()); + auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, {}); std::string output = testing::internal::GetCapturedStdout(); std::string expectedOutput("Performing GEM_CREATE_EXT with { size: 1024, memory class: 1, memory instance: 0 }\nGEM_CREATE_EXT with EXT_MEMORY_REGIONS has returned: -1 BO-0 with size: 1024\nGEM_CREATE_EXT with EXT_SETPARAM has returned: 0 BO-1 with size: 1024\n"); diff --git a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp index 3b4f362c7a..a0080fe71b 100644 --- a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp +++ b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp @@ -112,7 +112,7 @@ TEST(IoctlHelperTestsUpstream, givenUpstreamWhenCreateGemExtThenReturnCorrectVal auto ioctlHelper = drm->getIoctlHelper(); uint32_t handle = 0; MemRegionsVec memClassInstance = {{I915_MEMORY_CLASS_DEVICE, 0}}; - auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, std::numeric_limits::max()); + auto ret = ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, {}); EXPECT_EQ(0u, ret); EXPECT_EQ(1u, handle); @@ -133,7 +133,7 @@ TEST(IoctlHelperTestsUpstream, givenUpstreamWhenCreateGemExtWithDebugFlagThenPri auto ioctlHelper = drm->getIoctlHelper(); uint32_t handle = 0; MemRegionsVec memClassInstance = {{I915_MEMORY_CLASS_DEVICE, 0}}; - ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, std::numeric_limits::max()); + ioctlHelper->createGemExt(drm.get(), memClassInstance, 1024, handle, {}); std::string output = testing::internal::GetCapturedStdout(); std::string expectedOutput("Performing GEM_CREATE_EXT with { size: 1024, memory class: 1, memory instance: 0 }\nGEM_CREATE_EXT with EXT_MEMORY_REGIONS has returned: 0 BO-1 with size: 1024\n");