.. | .. |
---|
58 | 58 | static inline int mmio_diff_handler(struct intel_gvt *gvt, |
---|
59 | 59 | u32 offset, void *data) |
---|
60 | 60 | { |
---|
61 | | - struct drm_i915_private *dev_priv = gvt->dev_priv; |
---|
62 | 61 | struct mmio_diff_param *param = data; |
---|
63 | 62 | struct diff_mmio *node; |
---|
64 | 63 | u32 preg, vreg; |
---|
65 | 64 | |
---|
66 | | - preg = I915_READ_NOTRACE(_MMIO(offset)); |
---|
| 65 | + preg = intel_uncore_read_notrace(gvt->gt->uncore, _MMIO(offset)); |
---|
67 | 66 | vreg = vgpu_vreg(param->vgpu, offset); |
---|
68 | 67 | |
---|
69 | 68 | if (preg != vreg) { |
---|
70 | | - node = kmalloc(sizeof(*node), GFP_KERNEL); |
---|
| 69 | + node = kmalloc(sizeof(*node), GFP_ATOMIC); |
---|
71 | 70 | if (!node) |
---|
72 | 71 | return -ENOMEM; |
---|
73 | 72 | |
---|
.. | .. |
---|
98 | 97 | mutex_lock(&gvt->lock); |
---|
99 | 98 | spin_lock_bh(&gvt->scheduler.mmio_context_lock); |
---|
100 | 99 | |
---|
101 | | - mmio_hw_access_pre(gvt->dev_priv); |
---|
| 100 | + mmio_hw_access_pre(gvt->gt); |
---|
102 | 101 | /* Recognize all the diff mmios to list. */ |
---|
103 | 102 | intel_gvt_for_each_tracked_mmio(gvt, mmio_diff_handler, ¶m); |
---|
104 | | - mmio_hw_access_post(gvt->dev_priv); |
---|
| 103 | + mmio_hw_access_post(gvt->gt); |
---|
105 | 104 | |
---|
106 | 105 | spin_unlock_bh(&gvt->scheduler.mmio_context_lock); |
---|
107 | 106 | mutex_unlock(&gvt->lock); |
---|
.. | .. |
---|
128 | 127 | vgpu_scan_nonprivbb_get(void *data, u64 *val) |
---|
129 | 128 | { |
---|
130 | 129 | struct intel_vgpu *vgpu = (struct intel_vgpu *)data; |
---|
| 130 | + |
---|
131 | 131 | *val = vgpu->scan_nonprivbb; |
---|
132 | 132 | return 0; |
---|
133 | 133 | } |
---|
.. | .. |
---|
142 | 142 | vgpu_scan_nonprivbb_set(void *data, u64 val) |
---|
143 | 143 | { |
---|
144 | 144 | struct intel_vgpu *vgpu = (struct intel_vgpu *)data; |
---|
145 | | - struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv; |
---|
146 | | - enum intel_engine_id id; |
---|
147 | | - char buf[128], *s; |
---|
148 | | - int len; |
---|
149 | 145 | |
---|
150 | | - val &= (1 << I915_NUM_ENGINES) - 1; |
---|
151 | | - |
---|
152 | | - if (vgpu->scan_nonprivbb == val) |
---|
153 | | - return 0; |
---|
154 | | - |
---|
155 | | - if (!val) |
---|
156 | | - goto done; |
---|
157 | | - |
---|
158 | | - len = sprintf(buf, |
---|
159 | | - "gvt: vgpu %d turns on non-privileged batch buffers scanning on Engines:", |
---|
160 | | - vgpu->id); |
---|
161 | | - |
---|
162 | | - s = buf + len; |
---|
163 | | - |
---|
164 | | - for (id = 0; id < I915_NUM_ENGINES; id++) { |
---|
165 | | - struct intel_engine_cs *engine; |
---|
166 | | - |
---|
167 | | - engine = dev_priv->engine[id]; |
---|
168 | | - if (engine && (val & (1 << id))) { |
---|
169 | | - len = snprintf(s, 4, "%d, ", engine->id); |
---|
170 | | - s += len; |
---|
171 | | - } else |
---|
172 | | - val &= ~(1 << id); |
---|
173 | | - } |
---|
174 | | - |
---|
175 | | - if (val) |
---|
176 | | - sprintf(s, "low performance expected."); |
---|
177 | | - |
---|
178 | | - pr_warn("%s\n", buf); |
---|
179 | | - |
---|
180 | | -done: |
---|
181 | 146 | vgpu->scan_nonprivbb = val; |
---|
182 | 147 | return 0; |
---|
183 | 148 | } |
---|
.. | .. |
---|
189 | 154 | /** |
---|
190 | 155 | * intel_gvt_debugfs_add_vgpu - register debugfs entries for a vGPU |
---|
191 | 156 | * @vgpu: a vGPU |
---|
192 | | - * |
---|
193 | | - * Returns: |
---|
194 | | - * Zero on success, negative error code if failed. |
---|
195 | 157 | */ |
---|
196 | | -int intel_gvt_debugfs_add_vgpu(struct intel_vgpu *vgpu) |
---|
| 158 | +void intel_gvt_debugfs_add_vgpu(struct intel_vgpu *vgpu) |
---|
197 | 159 | { |
---|
198 | | - struct dentry *ent; |
---|
199 | | - char name[10] = ""; |
---|
| 160 | + char name[16] = ""; |
---|
200 | 161 | |
---|
201 | | - sprintf(name, "vgpu%d", vgpu->id); |
---|
| 162 | + snprintf(name, 16, "vgpu%d", vgpu->id); |
---|
202 | 163 | vgpu->debugfs = debugfs_create_dir(name, vgpu->gvt->debugfs_root); |
---|
203 | | - if (!vgpu->debugfs) |
---|
204 | | - return -ENOMEM; |
---|
205 | 164 | |
---|
206 | | - ent = debugfs_create_bool("active", 0444, vgpu->debugfs, |
---|
207 | | - &vgpu->active); |
---|
208 | | - if (!ent) |
---|
209 | | - return -ENOMEM; |
---|
210 | | - |
---|
211 | | - ent = debugfs_create_file("mmio_diff", 0444, vgpu->debugfs, |
---|
212 | | - vgpu, &vgpu_mmio_diff_fops); |
---|
213 | | - if (!ent) |
---|
214 | | - return -ENOMEM; |
---|
215 | | - |
---|
216 | | - ent = debugfs_create_file("scan_nonprivbb", 0644, vgpu->debugfs, |
---|
217 | | - vgpu, &vgpu_scan_nonprivbb_fops); |
---|
218 | | - if (!ent) |
---|
219 | | - return -ENOMEM; |
---|
220 | | - |
---|
221 | | - return 0; |
---|
| 165 | + debugfs_create_bool("active", 0444, vgpu->debugfs, &vgpu->active); |
---|
| 166 | + debugfs_create_file("mmio_diff", 0444, vgpu->debugfs, vgpu, |
---|
| 167 | + &vgpu_mmio_diff_fops); |
---|
| 168 | + debugfs_create_file("scan_nonprivbb", 0644, vgpu->debugfs, vgpu, |
---|
| 169 | + &vgpu_scan_nonprivbb_fops); |
---|
222 | 170 | } |
---|
223 | 171 | |
---|
224 | 172 | /** |
---|
.. | .. |
---|
234 | 182 | /** |
---|
235 | 183 | * intel_gvt_debugfs_init - register gvt debugfs root entry |
---|
236 | 184 | * @gvt: GVT device |
---|
237 | | - * |
---|
238 | | - * Returns: |
---|
239 | | - * zero on success, negative if failed. |
---|
240 | 185 | */ |
---|
241 | | -int intel_gvt_debugfs_init(struct intel_gvt *gvt) |
---|
| 186 | +void intel_gvt_debugfs_init(struct intel_gvt *gvt) |
---|
242 | 187 | { |
---|
243 | | - struct drm_minor *minor = gvt->dev_priv->drm.primary; |
---|
244 | | - struct dentry *ent; |
---|
| 188 | + struct drm_minor *minor = gvt->gt->i915->drm.primary; |
---|
245 | 189 | |
---|
246 | 190 | gvt->debugfs_root = debugfs_create_dir("gvt", minor->debugfs_root); |
---|
247 | | - if (!gvt->debugfs_root) { |
---|
248 | | - gvt_err("Cannot create debugfs dir\n"); |
---|
249 | | - return -ENOMEM; |
---|
250 | | - } |
---|
251 | 191 | |
---|
252 | | - ent = debugfs_create_ulong("num_tracked_mmio", 0444, gvt->debugfs_root, |
---|
253 | | - &gvt->mmio.num_tracked_mmio); |
---|
254 | | - if (!ent) |
---|
255 | | - return -ENOMEM; |
---|
256 | | - |
---|
257 | | - return 0; |
---|
| 192 | + debugfs_create_ulong("num_tracked_mmio", 0444, gvt->debugfs_root, |
---|
| 193 | + &gvt->mmio.num_tracked_mmio); |
---|
258 | 194 | } |
---|
259 | 195 | |
---|
260 | 196 | /** |
---|