@@ -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 );
@@ -583,6 +588,7 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) {
583588 test.handle = 0 ;
584589 test.flags = 1 ;
585590 test.size = 123 ;
591+ test.cpu_caching = DRM_XE_GEM_CPU_CACHING_WC;
586592 ret = mockXeIoctlHelper->ioctl (DrmIoctl::gemCreate, &test);
587593 EXPECT_EQ (0 , ret);
588594 }
@@ -1649,3 +1655,51 @@ TEST(IoctlHelperXeTest, givenXeIoctlHelperWhenInitializeGetGpuTimeFunctionIsCall
16491655 xeIoctlHelper->initializeGetGpuTimeFunction ();
16501656 EXPECT_EQ (xeIoctlHelper->getGpuTime , nullptr );
16511657}
1658+
1659+ TEST (IoctlHelperXeTest, givenIoctlHelperXeAndDebugOverrideEnabledWhenGetCpuCachingModeCalledThenOverriddenValueIsReturned) {
1660+ DebugManagerStateRestore restorer;
1661+ auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
1662+ DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
1663+
1664+ auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
1665+ drm.memoryInfo .reset (xeIoctlHelper->createMemoryInfo ().release ());
1666+ ASSERT_NE (nullptr , xeIoctlHelper);
1667+
1668+ debugManager.flags .OverrideCpuCaching .set (DRM_XE_GEM_CPU_CACHING_WB);
1669+ EXPECT_EQ (xeIoctlHelper->getCpuCachingMode (), DRM_XE_GEM_CPU_CACHING_WB);
1670+
1671+ debugManager.flags .OverrideCpuCaching .set (DRM_XE_GEM_CPU_CACHING_WC);
1672+ EXPECT_EQ (xeIoctlHelper->getCpuCachingMode (), DRM_XE_GEM_CPU_CACHING_WC);
1673+ }
1674+
1675+ TEST (IoctlHelperXeTest, whenCallingVmBindThenPatIndexIsSet) {
1676+ DebugManagerStateRestore restorer;
1677+ auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
1678+ DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
1679+ auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
1680+
1681+ uint64_t fenceAddress = 0x4321 ;
1682+ uint64_t fenceValue = 0x789 ;
1683+ uint64_t expectedPatIndex = 0xba ;
1684+
1685+ BindInfo mockBindInfo{};
1686+ mockBindInfo.handle = 0x1234 ;
1687+ xeIoctlHelper->bindInfo .push_back (mockBindInfo);
1688+
1689+ VmBindExtUserFenceT vmBindExtUserFence{};
1690+
1691+ xeIoctlHelper->fillVmBindExtUserFence (vmBindExtUserFence, fenceAddress, fenceValue, 0u );
1692+
1693+ VmBindParams vmBindParams{};
1694+ vmBindParams.handle = mockBindInfo.handle ;
1695+ vmBindParams.extensions = castToUint64 (&vmBindExtUserFence);
1696+ vmBindParams.patIndex = expectedPatIndex;
1697+
1698+ drm.vmBindInputs .clear ();
1699+ drm.syncInputs .clear ();
1700+ drm.waitUserFenceInputs .clear ();
1701+ ASSERT_EQ (0 , xeIoctlHelper->vmBind (vmBindParams));
1702+ ASSERT_EQ (1u , drm.vmBindInputs .size ());
1703+
1704+ EXPECT_EQ (drm.vmBindInputs [0 ].bind .pat_index , expectedPatIndex);
1705+ }
0 commit comments