hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/gpu/drm/i915/selftests/mock_gtt.c
....@@ -38,16 +38,18 @@
3838 {
3939 }
4040
41
-static int mock_bind_ppgtt(struct i915_vma *vma,
42
- enum i915_cache_level cache_level,
43
- u32 flags)
41
+static void mock_bind_ppgtt(struct i915_address_space *vm,
42
+ struct i915_vm_pt_stash *stash,
43
+ struct i915_vma *vma,
44
+ enum i915_cache_level cache_level,
45
+ u32 flags)
4446 {
4547 GEM_BUG_ON(flags & I915_VMA_GLOBAL_BIND);
46
- vma->flags |= I915_VMA_LOCAL_BIND;
47
- return 0;
48
+ set_bit(I915_VMA_LOCAL_BIND_BIT, __i915_vma_flags(vma));
4849 }
4950
50
-static void mock_unbind_ppgtt(struct i915_vma *vma)
51
+static void mock_unbind_ppgtt(struct i915_address_space *vm,
52
+ struct i915_vma *vma)
5153 {
5254 }
5355
....@@ -55,24 +57,30 @@
5557 {
5658 }
5759
58
-struct i915_hw_ppgtt *
59
-mock_ppgtt(struct drm_i915_private *i915,
60
- const char *name)
60
+static void mock_clear_range(struct i915_address_space *vm,
61
+ u64 start, u64 length)
6162 {
62
- struct i915_hw_ppgtt *ppgtt;
63
+}
64
+
65
+struct i915_ppgtt *mock_ppgtt(struct drm_i915_private *i915, const char *name)
66
+{
67
+ struct i915_ppgtt *ppgtt;
6368
6469 ppgtt = kzalloc(sizeof(*ppgtt), GFP_KERNEL);
6570 if (!ppgtt)
6671 return NULL;
6772
68
- kref_init(&ppgtt->ref);
73
+ ppgtt->vm.gt = &i915->gt;
6974 ppgtt->vm.i915 = i915;
7075 ppgtt->vm.total = round_down(U64_MAX, PAGE_SIZE);
7176 ppgtt->vm.file = ERR_PTR(-ENODEV);
77
+ ppgtt->vm.dma = &i915->drm.pdev->dev;
7278
73
- i915_address_space_init(&ppgtt->vm, i915);
79
+ i915_address_space_init(&ppgtt->vm, VM_CLASS_PPGTT);
7480
75
- ppgtt->vm.clear_range = nop_clear_range;
81
+ ppgtt->vm.alloc_pt_dma = alloc_pt_dma;
82
+
83
+ ppgtt->vm.clear_range = mock_clear_range;
7684 ppgtt->vm.insert_page = mock_insert_page;
7785 ppgtt->vm.insert_entries = mock_insert_entries;
7886 ppgtt->vm.cleanup = mock_cleanup;
....@@ -85,29 +93,34 @@
8593 return ppgtt;
8694 }
8795
88
-static int mock_bind_ggtt(struct i915_vma *vma,
89
- enum i915_cache_level cache_level,
90
- u32 flags)
91
-{
92
- vma->flags |= I915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND;
93
- return 0;
94
-}
95
-
96
-static void mock_unbind_ggtt(struct i915_vma *vma)
96
+static void mock_bind_ggtt(struct i915_address_space *vm,
97
+ struct i915_vm_pt_stash *stash,
98
+ struct i915_vma *vma,
99
+ enum i915_cache_level cache_level,
100
+ u32 flags)
97101 {
98102 }
99103
100
-void mock_init_ggtt(struct drm_i915_private *i915)
104
+static void mock_unbind_ggtt(struct i915_address_space *vm,
105
+ struct i915_vma *vma)
101106 {
102
- struct i915_ggtt *ggtt = &i915->ggtt;
107
+}
103108
109
+void mock_init_ggtt(struct drm_i915_private *i915, struct i915_ggtt *ggtt)
110
+{
111
+ memset(ggtt, 0, sizeof(*ggtt));
112
+
113
+ ggtt->vm.gt = &i915->gt;
104114 ggtt->vm.i915 = i915;
115
+ ggtt->vm.is_ggtt = true;
105116
106117 ggtt->gmadr = (struct resource) DEFINE_RES_MEM(0, 2048 * PAGE_SIZE);
107118 ggtt->mappable_end = resource_size(&ggtt->gmadr);
108119 ggtt->vm.total = 4096 * PAGE_SIZE;
109120
110
- ggtt->vm.clear_range = nop_clear_range;
121
+ ggtt->vm.alloc_pt_dma = alloc_pt_dma;
122
+
123
+ ggtt->vm.clear_range = mock_clear_range;
111124 ggtt->vm.insert_page = mock_insert_page;
112125 ggtt->vm.insert_entries = mock_insert_entries;
113126 ggtt->vm.cleanup = mock_cleanup;
....@@ -117,12 +130,11 @@
117130 ggtt->vm.vma_ops.set_pages = ggtt_set_pages;
118131 ggtt->vm.vma_ops.clear_pages = clear_pages;
119132
120
- i915_address_space_init(&ggtt->vm, i915);
133
+ i915_address_space_init(&ggtt->vm, VM_CLASS_GGTT);
134
+ i915->gt.ggtt = ggtt;
121135 }
122136
123
-void mock_fini_ggtt(struct drm_i915_private *i915)
137
+void mock_fini_ggtt(struct i915_ggtt *ggtt)
124138 {
125
- struct i915_ggtt *ggtt = &i915->ggtt;
126
-
127139 i915_address_space_fini(&ggtt->vm);
128140 }