@@ -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 );
@@ -583,6 +588,7 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) {
583
588
test.handle = 0 ;
584
589
test.flags = 1 ;
585
590
test.size = 123 ;
591
+ test.cpu_caching = DRM_XE_GEM_CPU_CACHING_WC;
586
592
ret = mockXeIoctlHelper->ioctl (DrmIoctl::gemCreate, &test);
587
593
EXPECT_EQ (0 , ret);
588
594
}
@@ -1649,3 +1655,51 @@ TEST(IoctlHelperXeTest, givenXeIoctlHelperWhenInitializeGetGpuTimeFunctionIsCall
1649
1655
xeIoctlHelper->initializeGetGpuTimeFunction ();
1650
1656
EXPECT_EQ (xeIoctlHelper->getGpuTime , nullptr );
1651
1657
}
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