File tree Expand file tree Collapse file tree 1 file changed +18
-6
lines changed
drivers/gpu/drm/i915/display Expand file tree Collapse file tree 1 file changed +18
-6
lines changed Original file line number Diff line number Diff line change @@ -210,6 +210,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
210
210
bool prealloc = false;
211
211
void __iomem * vaddr ;
212
212
struct drm_i915_gem_object * obj ;
213
+ struct i915_gem_ww_ctx ww ;
213
214
int ret ;
214
215
215
216
mutex_lock (& ifbdev -> hpd_lock );
@@ -283,13 +284,24 @@ static int intelfb_create(struct drm_fb_helper *helper,
283
284
info -> fix .smem_len = vma -> size ;
284
285
}
285
286
286
- vaddr = i915_vma_pin_iomap (vma );
287
- if (IS_ERR (vaddr )) {
288
- drm_err (& dev_priv -> drm ,
289
- "Failed to remap framebuffer into virtual memory (%pe)\n" , vaddr );
290
- ret = PTR_ERR (vaddr );
291
- goto out_unpin ;
287
+ for_i915_gem_ww (& ww , ret , false) {
288
+ ret = i915_gem_object_lock (vma -> obj , & ww );
289
+
290
+ if (ret )
291
+ continue ;
292
+
293
+ vaddr = i915_vma_pin_iomap (vma );
294
+ if (IS_ERR (vaddr )) {
295
+ drm_err (& dev_priv -> drm ,
296
+ "Failed to remap framebuffer into virtual memory (%pe)\n" , vaddr );
297
+ ret = PTR_ERR (vaddr );
298
+ continue ;
299
+ }
292
300
}
301
+
302
+ if (ret )
303
+ goto out_unpin ;
304
+
293
305
info -> screen_base = vaddr ;
294
306
info -> screen_size = vma -> size ;
295
307
You can’t perform that action at this time.
0 commit comments