Message ID | 20230301201053.928709-5-radhakrishna.sripada@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Misc Meteorlake patches | expand |
Hi Radhakrishna, On Wed, Mar 01, 2023 at 12:10:52PM -0800, Radhakrishna Sripada wrote: > From: Tejas Upadhyay <tejas.upadhyay@intel.com> > > lock the fbdev obj before calling into > i915_vma_pin_iomap(). This helps to solve below : > > <7>[ 93.563308] i915 0000:00:02.0: [drm:intelfb_create [i915]] no BIOS fb, allocating a new one > <4>[ 93.581844] ------------[ cut here ]------------ > <4>[ 93.581855] WARNING: CPU: 12 PID: 625 at drivers/gpu/drm/i915/gem/i915_gem_pages.c:424 i915_gem_object_pin_map+0x152/0x1c0 [i915] > > Fixes: f0b6b01b3efe ("drm/i915: Add ww context to intel_dpt_pin, v2.") > Cc: Chris Wilson <chris.p.wilson@intel.com> > Cc: Matthew Auld <matthew.auld@intel.com> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com> > Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> Andi
Thank you for the Review. Pushed. -Radhakrishna Sripada > -----Original Message----- > From: Andi Shyti <andi.shyti@linux.intel.com> > Sent: Thursday, March 9, 2023 9:18 AM > To: Sripada, Radhakrishna <radhakrishna.sripada@intel.com> > Cc: intel-gfx@lists.freedesktop.org; Auld, Matthew <matthew.auld@intel.com>; > Wilson, Chris P <chris.p.wilson@intel.com> > Subject: Re: [Intel-gfx] [PATCH v3 4/5] drm/i915/fbdev: lock the fbdev obj > before vma pin > > Hi Radhakrishna, > > On Wed, Mar 01, 2023 at 12:10:52PM -0800, Radhakrishna Sripada wrote: > > From: Tejas Upadhyay <tejas.upadhyay@intel.com> > > > > lock the fbdev obj before calling into > > i915_vma_pin_iomap(). This helps to solve below : > > > > <7>[ 93.563308] i915 0000:00:02.0: [drm:intelfb_create [i915]] no BIOS fb, > allocating a new one > > <4>[ 93.581844] ------------[ cut here ]------------ > > <4>[ 93.581855] WARNING: CPU: 12 PID: 625 at > drivers/gpu/drm/i915/gem/i915_gem_pages.c:424 > i915_gem_object_pin_map+0x152/0x1c0 [i915] > > > > Fixes: f0b6b01b3efe ("drm/i915: Add ww context to intel_dpt_pin, v2.") > > Cc: Chris Wilson <chris.p.wilson@intel.com> > > Cc: Matthew Auld <matthew.auld@intel.com> > > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > > Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com> > > Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> > > Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> > > Andi
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index 3659350061a7..2766d7ef0128 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -210,6 +210,7 @@ static int intelfb_create(struct drm_fb_helper *helper, bool prealloc = false; void __iomem *vaddr; struct drm_i915_gem_object *obj; + struct i915_gem_ww_ctx ww; int ret; mutex_lock(&ifbdev->hpd_lock); @@ -283,13 +284,24 @@ static int intelfb_create(struct drm_fb_helper *helper, info->fix.smem_len = vma->size; } - vaddr = i915_vma_pin_iomap(vma); - if (IS_ERR(vaddr)) { - drm_err(&dev_priv->drm, - "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); - ret = PTR_ERR(vaddr); - goto out_unpin; + for_i915_gem_ww(&ww, ret, false) { + ret = i915_gem_object_lock(vma->obj, &ww); + + if (ret) + continue; + + vaddr = i915_vma_pin_iomap(vma); + if (IS_ERR(vaddr)) { + drm_err(&dev_priv->drm, + "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); + ret = PTR_ERR(vaddr); + continue; + } } + + if (ret) + goto out_unpin; + info->screen_base = vaddr; info->screen_size = vma->size;