@@ -45,7 +45,7 @@ TEST(IoctlHelperXeTest, whenChangingBufferBindingThenWaitIsNeededAlways) {
4545
4646TEST (IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGemCreateExtWithRegionsThenDummyValueIsReturned) {
4747 auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
48- DrmMock drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
48+ DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
4949 auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
5050 ASSERT_NE (nullptr , xeIoctlHelper);
5151
@@ -62,11 +62,12 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGemCreateExtWithRegionsThen
6262 EXPECT_TRUE (xeIoctlHelper->bindInfo .empty ());
6363 EXPECT_NE (0 , xeIoctlHelper->createGemExt (memRegions, 0u , handle, 0 , {}, -1 , false , numOfChunks));
6464 EXPECT_FALSE (xeIoctlHelper->bindInfo .empty ());
65+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
6566}
6667
6768TEST (IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGemCreateExtWithRegionsAndVmIdThenDummyValueIsReturned) {
6869 auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
69- DrmMock drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
70+ DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
7071 auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
7172 ASSERT_NE (nullptr , xeIoctlHelper);
7273
@@ -84,6 +85,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGemCreateExtWithRegionsAndV
8485 EXPECT_TRUE (xeIoctlHelper->bindInfo .empty ());
8586 EXPECT_NE (0 , xeIoctlHelper->createGemExt (memRegions, 0u , handle, 0 , test.vmId , -1 , false , numOfChunks));
8687 EXPECT_FALSE (xeIoctlHelper->bindInfo .empty ());
88+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
8789}
8890
8991TEST (IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndNoLocalMemoryThenProperValuesSet) {
@@ -107,6 +109,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndNoLocalMemoryThenP
107109
108110 EXPECT_EQ (size, drm.createParamsSize );
109111 EXPECT_EQ (1u , drm.createParamsFlags );
112+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
110113
111114 // dummy mock handle
112115 EXPECT_EQ (handle, drm.createParamsHandle );
@@ -134,6 +137,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateWhenMemoryBanksZeroTh
134137
135138 EXPECT_EQ (size, drm.createParamsSize );
136139 EXPECT_EQ (1u , drm.createParamsFlags );
140+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
137141
138142 // dummy mock handle
139143 EXPECT_EQ (handle, drm.createParamsHandle );
@@ -161,6 +165,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndLocalMemoryThenPro
161165
162166 EXPECT_EQ (size, drm.createParamsSize );
163167 EXPECT_EQ (6u , drm.createParamsFlags );
168+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
164169
165170 // dummy mock handle
166171 EXPECT_EQ (handle, drm.createParamsHandle );
@@ -587,6 +592,7 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) {
587592 test.handle = 0 ;
588593 test.flags = 1 ;
589594 test.size = 123 ;
595+ test.cpu_caching = DRM_XE_GEM_CPU_CACHING_WC;
590596 ret = mockXeIoctlHelper->ioctl (DrmIoctl::gemCreate, &test);
591597 EXPECT_EQ (0 , ret);
592598 }
@@ -1653,3 +1659,51 @@ TEST(IoctlHelperXeTest, givenXeIoctlHelperWhenInitializeGetGpuTimeFunctionIsCall
16531659 xeIoctlHelper->initializeGetGpuTimeFunction ();
16541660 EXPECT_EQ (xeIoctlHelper->getGpuTime , nullptr );
16551661}
1662+
1663+ TEST (IoctlHelperXeTest, givenIoctlHelperXeAndDebugOverrideEnabledWhenGetCpuCachingModeCalledThenOverriddenValueIsReturned) {
1664+ DebugManagerStateRestore restorer;
1665+ auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
1666+ DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
1667+
1668+ auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
1669+ drm.memoryInfo .reset (xeIoctlHelper->createMemoryInfo ().release ());
1670+ ASSERT_NE (nullptr , xeIoctlHelper);
1671+
1672+ debugManager.flags .OverrideCpuCaching .set (DRM_XE_GEM_CPU_CACHING_WB);
1673+ EXPECT_EQ (xeIoctlHelper->getCpuCachingMode (), DRM_XE_GEM_CPU_CACHING_WB);
1674+
1675+ debugManager.flags .OverrideCpuCaching .set (DRM_XE_GEM_CPU_CACHING_WC);
1676+ EXPECT_EQ (xeIoctlHelper->getCpuCachingMode (), DRM_XE_GEM_CPU_CACHING_WC);
1677+ }
1678+
1679+ TEST (IoctlHelperXeTest, whenCallingVmBindThenPatIndexIsSet) {
1680+ DebugManagerStateRestore restorer;
1681+ auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
1682+ DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
1683+ auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
1684+
1685+ uint64_t fenceAddress = 0x4321 ;
1686+ uint64_t fenceValue = 0x789 ;
1687+ uint64_t expectedPatIndex = 0xba ;
1688+
1689+ BindInfo mockBindInfo{};
1690+ mockBindInfo.handle = 0x1234 ;
1691+ xeIoctlHelper->bindInfo .push_back (mockBindInfo);
1692+
1693+ VmBindExtUserFenceT vmBindExtUserFence{};
1694+
1695+ xeIoctlHelper->fillVmBindExtUserFence (vmBindExtUserFence, fenceAddress, fenceValue, 0u );
1696+
1697+ VmBindParams vmBindParams{};
1698+ vmBindParams.handle = mockBindInfo.handle ;
1699+ vmBindParams.extensions = castToUint64 (&vmBindExtUserFence);
1700+ vmBindParams.patIndex = expectedPatIndex;
1701+
1702+ drm.vmBindInputs .clear ();
1703+ drm.syncInputs .clear ();
1704+ drm.waitUserFenceInputs .clear ();
1705+ ASSERT_EQ (0 , xeIoctlHelper->vmBind (vmBindParams));
1706+ ASSERT_EQ (1u , drm.vmBindInputs .size ());
1707+
1708+ EXPECT_EQ (drm.vmBindInputs [0 ].bind .pat_index , expectedPatIndex);
1709+ }
0 commit comments