From ea956a863ace0643b0bdc9a1c75d977f804e61a8 Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Thu, 19 May 2022 15:07:45 +0000 Subject: [PATCH] Use MemoryClassInstance instead of drm_i915_gem_memory_class_instance Related-To: NEO-6852 Signed-off-by: Mateusz Jablonski --- .../drm_memory_manager_localmem_upstream_tests.cpp | 4 ++-- shared/source/os_interface/linux/drm_allocation.cpp | 10 +++++----- shared/source/os_interface/linux/drm_wrappers.cpp | 4 ++++ shared/source/os_interface/linux/drm_wrappers.h | 5 +++++ shared/source/os_interface/linux/ioctl_helper.h | 5 ----- .../source/os_interface/linux/ioctl_helper_prelim.cpp | 4 ++++ .../common/libult/linux/drm_mock_prelim_context.cpp | 4 ++-- .../os_interface/linux/drm_memory_info_tests.cpp | 2 +- .../test/unit_test/os_interface/linux/drm_mock_impl.h | 6 +++--- .../unit_test/os_interface/linux/drm_mock_prod_dg1.h | 2 +- .../os_interface/linux/ioctl_helper_tests_dg1.cpp | 2 +- .../os_interface/linux/ioctl_helper_tests_upstream.cpp | 2 +- .../os_interface/linux/prelim_helper_func.cpp | 4 ++-- 13 files changed, 31 insertions(+), 23 deletions(-) diff --git a/opencl/test/unit_test/os_interface/linux/drm_memory_manager_localmem_upstream_tests.cpp b/opencl/test/unit_test/os_interface/linux/drm_memory_manager_localmem_upstream_tests.cpp index 47e2558f9e..ffceefaac7 100644 --- a/opencl/test/unit_test/os_interface/linux/drm_memory_manager_localmem_upstream_tests.cpp +++ b/opencl/test/unit_test/os_interface/linux/drm_memory_manager_localmem_upstream_tests.cpp @@ -107,8 +107,8 @@ HWTEST2_F(DrmMemoryManagerLocalMemoryTest, givenDrmMemoryManagerWhenCreateBuffer EXPECT_EQ(1u, mock->numRegions); auto memRegions = mock->memRegions; - EXPECT_EQ(I915_MEMORY_CLASS_DEVICE, memRegions.memory_class); - EXPECT_EQ(0u, memRegions.memory_instance); + EXPECT_EQ(I915_MEMORY_CLASS_DEVICE, memRegions.memoryClass); + EXPECT_EQ(0u, memRegions.memoryInstance); EXPECT_EQ(gpuAddress, bo->peekAddress()); EXPECT_EQ(size, bo->peekSize()); diff --git a/shared/source/os_interface/linux/drm_allocation.cpp b/shared/source/os_interface/linux/drm_allocation.cpp index d1dc98c53a..56aea89800 100644 --- a/shared/source/os_interface/linux/drm_allocation.cpp +++ b/shared/source/os_interface/linux/drm_allocation.cpp @@ -276,16 +276,16 @@ bool DrmAllocation::setMemAdvise(Drm *drm, MemAdviseFlags flags) { } if (flags.device_preferred_location != enabledMemAdviseFlags.device_preferred_location) { - drm_i915_gem_memory_class_instance region{}; + MemoryClassInstance region{}; for (auto handleId = 0u; handleId < EngineLimits::maxHandleCount; handleId++) { auto bo = bufferObjects[handleId]; if (bo != nullptr) { if (flags.device_preferred_location) { - region.memory_class = I915_MEMORY_CLASS_DEVICE; - region.memory_instance = handleId; + region.memoryClass = I915_MEMORY_CLASS_DEVICE; + region.memoryInstance = handleId; } else { - region.memory_class = -1; - region.memory_instance = 0; + region.memoryClass = -1; + region.memoryInstance = 0; } success &= ioctlHelper->setVmBoAdvise(drm, bo->peekHandle(), ioctlHelper->getPreferredLocationAdvise(), ®ion); } diff --git a/shared/source/os_interface/linux/drm_wrappers.cpp b/shared/source/os_interface/linux/drm_wrappers.cpp index 21cbed7a09..4582d0e45c 100644 --- a/shared/source/os_interface/linux/drm_wrappers.cpp +++ b/shared/source/os_interface/linux/drm_wrappers.cpp @@ -74,4 +74,8 @@ static_assert(offsetof(QueryTopologyInfo, euOffset) == offsetof(drm_i915_query_t static_assert(offsetof(QueryTopologyInfo, euStride) == offsetof(drm_i915_query_topology_info, eu_stride)); static_assert(offsetof(QueryTopologyInfo, data) == offsetof(drm_i915_query_topology_info, data)); +static_assert(sizeof(MemoryClassInstance) == sizeof(drm_i915_gem_memory_class_instance)); +static_assert(offsetof(MemoryClassInstance, memoryClass) == offsetof(drm_i915_gem_memory_class_instance, memory_class)); +static_assert(offsetof(MemoryClassInstance, memoryInstance) == offsetof(drm_i915_gem_memory_class_instance, memory_instance)); + } // namespace NEO diff --git a/shared/source/os_interface/linux/drm_wrappers.h b/shared/source/os_interface/linux/drm_wrappers.h index 8726aa4c05..f2ad6a08b2 100644 --- a/shared/source/os_interface/linux/drm_wrappers.h +++ b/shared/source/os_interface/linux/drm_wrappers.h @@ -83,4 +83,9 @@ struct QueryTopologyInfo { uint8_t data[]; }; +struct MemoryClassInstance { + uint16_t memoryClass; + uint16_t memoryInstance; +}; + } // namespace NEO diff --git a/shared/source/os_interface/linux/ioctl_helper.h b/shared/source/os_interface/linux/ioctl_helper.h index cec6870b57..f7cd00565d 100644 --- a/shared/source/os_interface/linux/ioctl_helper.h +++ b/shared/source/os_interface/linux/ioctl_helper.h @@ -28,11 +28,6 @@ struct HardwareInfo; extern IoctlHelper *ioctlHelperFactory[IGFX_MAX_PRODUCT]; -struct MemoryClassInstance { - uint16_t memoryClass; - uint16_t memoryInstance; -}; - struct MemoryRegion { MemoryClassInstance region; uint64_t probedSize; diff --git a/shared/source/os_interface/linux/ioctl_helper_prelim.cpp b/shared/source/os_interface/linux/ioctl_helper_prelim.cpp index 8b6a34e99e..f633fe6846 100644 --- a/shared/source/os_interface/linux/ioctl_helper_prelim.cpp +++ b/shared/source/os_interface/linux/ioctl_helper_prelim.cpp @@ -556,4 +556,8 @@ bool IoctlHelperPrelim20::isDebugAttachAvailable() { return true; } +static_assert(sizeof(MemoryClassInstance) == sizeof(prelim_drm_i915_gem_memory_class_instance)); +static_assert(offsetof(MemoryClassInstance, memoryClass) == offsetof(prelim_drm_i915_gem_memory_class_instance, memory_class)); +static_assert(offsetof(MemoryClassInstance, memoryInstance) == offsetof(prelim_drm_i915_gem_memory_class_instance, memory_instance)); + } // namespace NEO diff --git a/shared/test/common/libult/linux/drm_mock_prelim_context.cpp b/shared/test/common/libult/linux/drm_mock_prelim_context.cpp index c8cf166f43..d9d3c24845 100644 --- a/shared/test/common/libult/linux/drm_mock_prelim_context.cpp +++ b/shared/test/common/libult/linux/drm_mock_prelim_context.cpp @@ -156,7 +156,7 @@ int DrmMockPrelimContext::handlePrelimRequest(unsigned long request, void *arg) return EINVAL; } - auto data = reinterpret_cast(extension->param.data); + auto data = reinterpret_cast(extension->param.data); if (!data) { return EINVAL; } @@ -168,7 +168,7 @@ int DrmMockPrelimContext::handlePrelimRequest(unsigned long request, void *arg) receivedCreateGemExt->memoryRegions.clear(); for (uint32_t i = 0; i < extension->param.size; i++) { - receivedCreateGemExt->memoryRegions.push_back({data[i].memory_class, data[i].memory_instance}); + receivedCreateGemExt->memoryRegions.push_back({data[i].memoryClass, data[i].memoryInstance}); } const auto firstMemoryRegion = receivedCreateGemExt->memoryRegions[0]; 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 adbec6425d..1e52331ccc 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 @@ -247,6 +247,6 @@ HWTEST2_F(MemoryInfoTest, givenMemoryInfoWithRegionsWhenCreatingGemExtWithSingle EXPECT_EQ(1u, handle); EXPECT_EQ(0u, ret); EXPECT_EQ(1u, drm->ioctlCallsCount); - EXPECT_EQ(I915_MEMORY_CLASS_DEVICE, drm->memRegions.memory_class); + EXPECT_EQ(I915_MEMORY_CLASS_DEVICE, drm->memRegions.memoryClass); EXPECT_EQ(1024u, drm->createExt.size); } diff --git a/shared/test/unit_test/os_interface/linux/drm_mock_impl.h b/shared/test/unit_test/os_interface/linux/drm_mock_impl.h index a92687dfe3..e032805c6f 100644 --- a/shared/test/unit_test/os_interface/linux/drm_mock_impl.h +++ b/shared/test/unit_test/os_interface/linux/drm_mock_impl.h @@ -28,7 +28,7 @@ class DrmTipMock : public DrmMock { //DRM_IOCTL_I915_GEM_CREATE_EXT drm_i915_gem_create_ext createExt{}; - drm_i915_gem_memory_class_instance memRegions{}; + MemoryClassInstance memRegions{}; uint32_t numRegions = 0; int gemCreateExtRetVal = 0; @@ -106,11 +106,11 @@ class DrmTipMock : public DrmMock { return EINVAL; } this->numRegions = extMemRegions->num_regions; - this->memRegions = *reinterpret_cast(extMemRegions->regions); + this->memRegions = *reinterpret_cast(extMemRegions->regions); if (this->numRegions == 0) { return EINVAL; } - if ((this->memRegions.memory_class != I915_MEMORY_CLASS_SYSTEM) && (this->memRegions.memory_class != I915_MEMORY_CLASS_DEVICE)) { + if ((this->memRegions.memoryClass != I915_MEMORY_CLASS_SYSTEM) && (this->memRegions.memoryClass != I915_MEMORY_CLASS_DEVICE)) { return EINVAL; } return gemCreateExtRetVal; diff --git a/shared/test/unit_test/os_interface/linux/drm_mock_prod_dg1.h b/shared/test/unit_test/os_interface/linux/drm_mock_prod_dg1.h index e76a55cc1d..d1c726f2c5 100644 --- a/shared/test/unit_test/os_interface/linux/drm_mock_prod_dg1.h +++ b/shared/test/unit_test/os_interface/linux/drm_mock_prod_dg1.h @@ -70,7 +70,7 @@ class DrmMockProdDg1 : public DrmTipMock { return EINVAL; } numRegions = regionParam->size; - memRegions = *reinterpret_cast(regionParam->data); + memRegions = *reinterpret_cast(regionParam->data); return gemCreateExtRetVal; } return -1; 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 bf26a55faa..933fe7c2fd 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 @@ -30,7 +30,7 @@ DG1TEST_F(IoctlHelperTestsDg1, givenDg1WhenCreateGemExtThenReturnCorrectValue) { EXPECT_EQ(1u, handle); EXPECT_EQ(1u, drm->numRegions); EXPECT_EQ(1024u, drm->createExt.size); - EXPECT_EQ(I915_MEMORY_CLASS_DEVICE, drm->memRegions.memory_class); + EXPECT_EQ(I915_MEMORY_CLASS_DEVICE, drm->memRegions.memoryClass); } DG1TEST_F(IoctlHelperTestsDg1, givenDg1WithDrmTipWhenCreateGemExtWithDebugFlagThenPrintDebugInfo) { 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 42c1c38211..e5a3dfdce3 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 @@ -96,7 +96,7 @@ TEST(IoctlHelperTestsUpstream, givenUpstreamWhenCreateGemExtThenReturnCorrectVal EXPECT_EQ(1u, handle); EXPECT_EQ(1u, drm->numRegions); EXPECT_EQ(1024u, drm->createExt.size); - EXPECT_EQ(I915_MEMORY_CLASS_DEVICE, drm->memRegions.memory_class); + EXPECT_EQ(I915_MEMORY_CLASS_DEVICE, drm->memRegions.memoryClass); } TEST(IoctlHelperTestsUpstream, givenUpstreamWhenCreateGemExtWithDebugFlagThenPrintDebugInfo) { diff --git a/shared/test/unit_test/os_interface/linux/prelim_helper_func.cpp b/shared/test/unit_test/os_interface/linux/prelim_helper_func.cpp index c7c2f80dd9..1874bd8c12 100644 --- a/shared/test/unit_test/os_interface/linux/prelim_helper_func.cpp +++ b/shared/test/unit_test/os_interface/linux/prelim_helper_func.cpp @@ -35,12 +35,12 @@ int handlePrelimRequests(unsigned long request, void *arg, int ioctlRetVal, int (setparamRegion.param.param != (PRELIM_I915_OBJECT_PARAM | PRELIM_I915_PARAM_MEMORY_REGIONS))) { return EINVAL; } - auto data = reinterpret_cast(setparamRegion.param.data); + auto data = reinterpret_cast(setparamRegion.param.data); if (data == nullptr) { return EINVAL; } - if ((data->memory_class != PRELIM_I915_MEMORY_CLASS_SYSTEM) && (data->memory_class != PRELIM_I915_MEMORY_CLASS_DEVICE)) { + if ((data->memoryClass != PRELIM_I915_MEMORY_CLASS_SYSTEM) && (data->memoryClass != PRELIM_I915_MEMORY_CLASS_DEVICE)) { return EINVAL; } } else if (request == PRELIM_DRM_IOCTL_I915_GEM_CLOS_RESERVE) {