@@ -45,7 +45,7 @@ TEST(IoctlHelperXeTest, whenChangingBufferBindingThenWaitIsNeededAlways) {
45
45
46
46
TEST (IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGemCreateExtWithRegionsThenDummyValueIsReturned) {
47
47
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
48
- DrmMock drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
48
+ DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
49
49
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
50
50
ASSERT_NE (nullptr , xeIoctlHelper);
51
51
@@ -62,11 +62,12 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGemCreateExtWithRegionsThen
62
62
EXPECT_TRUE (xeIoctlHelper->bindInfo .empty ());
63
63
EXPECT_NE (0 , xeIoctlHelper->createGemExt (memRegions, 0u , handle, 0 , {}, -1 , false , numOfChunks));
64
64
EXPECT_FALSE (xeIoctlHelper->bindInfo .empty ());
65
+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
65
66
}
66
67
67
68
TEST (IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGemCreateExtWithRegionsAndVmIdThenDummyValueIsReturned) {
68
69
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
69
- DrmMock drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
70
+ DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments [0 ]};
70
71
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
71
72
ASSERT_NE (nullptr , xeIoctlHelper);
72
73
@@ -84,6 +85,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGemCreateExtWithRegionsAndV
84
85
EXPECT_TRUE (xeIoctlHelper->bindInfo .empty ());
85
86
EXPECT_NE (0 , xeIoctlHelper->createGemExt (memRegions, 0u , handle, 0 , test.vmId , -1 , false , numOfChunks));
86
87
EXPECT_FALSE (xeIoctlHelper->bindInfo .empty ());
88
+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
87
89
}
88
90
89
91
TEST (IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndNoLocalMemoryThenProperValuesSet) {
@@ -107,6 +109,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndNoLocalMemoryThenP
107
109
108
110
EXPECT_EQ (size, drm.createParamsSize );
109
111
EXPECT_EQ (1u , drm.createParamsFlags );
112
+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
110
113
111
114
// dummy mock handle
112
115
EXPECT_EQ (handle, drm.createParamsHandle );
@@ -134,6 +137,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateWhenMemoryBanksZeroTh
134
137
135
138
EXPECT_EQ (size, drm.createParamsSize );
136
139
EXPECT_EQ (1u , drm.createParamsFlags );
140
+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
137
141
138
142
// dummy mock handle
139
143
EXPECT_EQ (handle, drm.createParamsHandle );
@@ -161,6 +165,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndLocalMemoryThenPro
161
165
162
166
EXPECT_EQ (size, drm.createParamsSize );
163
167
EXPECT_EQ (6u , drm.createParamsFlags );
168
+ EXPECT_EQ (DRM_XE_GEM_CPU_CACHING_WC, drm.createParamsCpuCaching );
164
169
165
170
// dummy mock handle
166
171
EXPECT_EQ (handle, drm.createParamsHandle );
@@ -587,6 +592,7 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) {
587
592
test.handle = 0 ;
588
593
test.flags = 1 ;
589
594
test.size = 123 ;
595
+ test.cpu_caching = DRM_XE_GEM_CPU_CACHING_WC;
590
596
ret = mockXeIoctlHelper->ioctl (DrmIoctl::gemCreate, &test);
591
597
EXPECT_EQ (0 , ret);
592
598
}
@@ -1653,3 +1659,51 @@ TEST(IoctlHelperXeTest, givenXeIoctlHelperWhenInitializeGetGpuTimeFunctionIsCall
1653
1659
xeIoctlHelper->initializeGetGpuTimeFunction ();
1654
1660
EXPECT_EQ (xeIoctlHelper->getGpuTime , nullptr );
1655
1661
}
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