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