From 2eecf29278cd1725babf44466a3711d4ea109258 Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Wed, 27 Mar 2024 14:39:01 +0000 Subject: [PATCH] fix: correct setting scratch page in xe path Related-To: NEO-10496 Signed-off-by: Mateusz Jablonski --- .../os_interface/linux/xe/ioctl_helper_xe.cpp | 3 +++ .../linux/xe/ioctl_helper_xe_tests.cpp | 26 +++++++++++-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp b/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp index 9d6ed08197..1613b94650 100644 --- a/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp +++ b/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp @@ -762,6 +762,9 @@ uint32_t IoctlHelperXe::getFlagsForVmCreate(bool disableScratch, bool enablePage if (enablePageFault) { flags |= DRM_XE_VM_CREATE_FLAG_FAULT_MODE; } + if (!disableScratch) { + flags |= DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE; + } return flags; } diff --git a/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp b/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp index 9e15bea4c1..92dec8e5dd 100644 --- a/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp @@ -394,23 +394,27 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingAnyMethodThenDummyValueIsRe EXPECT_TRUE(xeIoctlHelper->completionFenceExtensionSupported(true)); - EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE | - DRM_XE_VM_CREATE_FLAG_FAULT_MODE), - xeIoctlHelper->getFlagsForVmCreate(true, true, true)); - EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE | - DRM_XE_VM_CREATE_FLAG_FAULT_MODE), - xeIoctlHelper->getFlagsForVmCreate(false, true, false)); - EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE), - xeIoctlHelper->getFlagsForVmCreate(true, false, true)); - EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE), - xeIoctlHelper->getFlagsForVmCreate(false, false, false)); - EXPECT_EQ(0ull, xeIoctlHelper->getFlagsForVmBind(true, true, true, true)); uint32_t fabricId = 0, latency = 0, bandwidth = 0; EXPECT_FALSE(xeIoctlHelper->getFabricLatency(fabricId, latency, bandwidth)); } +TEST(IoctlHelperXeTest, whenGettingFlagsForVmCreateThenPropertValueIsReturned) { + auto executionEnvironment = std::make_unique(); + DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]}; + auto xeIoctlHelper = std::make_unique(drm); + + EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE | DRM_XE_VM_CREATE_FLAG_FAULT_MODE), xeIoctlHelper->getFlagsForVmCreate(true, true, true)); + EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE | DRM_XE_VM_CREATE_FLAG_FAULT_MODE), xeIoctlHelper->getFlagsForVmCreate(true, true, false)); + EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE | DRM_XE_VM_CREATE_FLAG_FAULT_MODE | DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE), xeIoctlHelper->getFlagsForVmCreate(false, true, true)); + EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE | DRM_XE_VM_CREATE_FLAG_FAULT_MODE | DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE), xeIoctlHelper->getFlagsForVmCreate(false, true, false)); + EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE), xeIoctlHelper->getFlagsForVmCreate(true, false, true)); + EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE), xeIoctlHelper->getFlagsForVmCreate(true, false, false)); + EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE | DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE), xeIoctlHelper->getFlagsForVmCreate(false, false, true)); + EXPECT_EQ(static_cast(DRM_XE_VM_CREATE_FLAG_LR_MODE | DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE), xeIoctlHelper->getFlagsForVmCreate(false, false, false)); +} + TEST(IoctlHelperXeTest, whenGettingIoctlRequestValueThenPropertValueIsReturned) { auto executionEnvironment = std::make_unique(); DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]};