Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Fix the computation of required fb size for pipe
@ 2014-03-20 15:11 Chris Wilson
  2014-04-02  6:58 ` Chris Wilson
  0 siblings, 1 reply; 4+ messages in thread
From: Chris Wilson @ 2014-03-20 15:11 UTC (permalink / raw)
  To: intel-gfx

The computation of required framebuffer size in

commit d978ef14456a38034f6c0e94a794129501f89200
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Fri Mar 7 08:57:51 2014 -0800

    drm/i915: Wrap the preallocated BIOS framebuffer and preserve for KMS fbcon v12

is too optimistic, and would rely on the invariant fb being
reconstructed to exactly fit each pipe (and probably ignore hardware
limits). Instead, we want to compute the upper bound on what the display
engine will access and ensure that is within the inherited framebuffer.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_fbdev.c | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
index 924f75661581..25e81525f9e1 100644
--- a/drivers/gpu/drm/i915/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/intel_fbdev.c
@@ -528,16 +528,29 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
 
 		/*
 		 * See if the plane fb we found above will fit on this
-		 * pipe.  Note we need to use the selected fb's bpp rather
-		 * than the current pipe's, since they could be different.
+		 * pipe.  Note we need to use the selected fb's pitch and bpp
+		 * rather than the current pipe's, since they differ.
 		 */
-		cur_size = intel_crtc->config.adjusted_mode.crtc_hdisplay *
-			intel_crtc->config.adjusted_mode.crtc_vdisplay;
-		DRM_DEBUG_KMS("pipe %c area: %d\n", pipe_name(intel_crtc->pipe),
+		cur_size = intel_crtc->config.adjusted_mode.crtc_hdisplay;
+		cur_size = cur_size * fb->base.bits_per_pixel / 8;
+		if (fb->base.pitches[0] < cur_size) {
+			DRM_DEBUG_KMS("fb not wide enough for plane %c (%d vs %d)\n",
+				      pipe_name(intel_crtc->pipe),
+				      cur_size, fb->base.pitches[0]);
+			plane_config = NULL;
+			fb = NULL;
+			break;
+		}
+
+		cur_size = intel_crtc->config.adjusted_mode.crtc_vdisplay;
+		cur_size = ALIGN(cur_size, plane_config->tiled ? (IS_GEN2(dev) ? 16 : 8) : 1);
+		cur_size *= fb->base.pitches[0];
+		DRM_DEBUG_KMS("pipe %c area: %dx%d, bpp: %d, size: %d\n",
+			      pipe_name(intel_crtc->pipe),
+			      intel_crtc->config.adjusted_mode.crtc_hdisplay,
+			      intel_crtc->config.adjusted_mode.crtc_vdisplay,
+			      fb->base.bits_per_pixel,
 			      cur_size);
-		cur_size *= fb->base.bits_per_pixel / 8;
-		DRM_DEBUG_KMS("total size %d (bpp %d)\n", cur_size,
-			      fb->base.bits_per_pixel / 8);
 
 		if (cur_size > max_size) {
 			DRM_DEBUG_KMS("fb not big enough for plane %c (%d vs %d)\n",
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm/i915: Fix the computation of required fb size for pipe
  2014-03-20 15:11 [PATCH] drm/i915: Fix the computation of required fb size for pipe Chris Wilson
@ 2014-04-02  6:58 ` Chris Wilson
  2014-04-02  7:10   ` Daniel Vetter
  0 siblings, 1 reply; 4+ messages in thread
From: Chris Wilson @ 2014-04-02  6:58 UTC (permalink / raw)
  To: intel-gfx

On Thu, Mar 20, 2014 at 03:11:21PM +0000, Chris Wilson wrote:
> The computation of required framebuffer size in
> 
> commit d978ef14456a38034f6c0e94a794129501f89200
> Author: Jesse Barnes <jbarnes@virtuousgeek.org>
> Date:   Fri Mar 7 08:57:51 2014 -0800
> 
>     drm/i915: Wrap the preallocated BIOS framebuffer and preserve for KMS fbcon v12
> 
> is too optimistic, and would rely on the invariant fb being
> reconstructed to exactly fit each pipe (and probably ignore hardware
> limits). Instead, we want to compute the upper bound on what the display
> engine will access and ensure that is within the inherited framebuffer.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Jesse Barnes <jbarnes@virtuousgeek.org>

Ping. The code is just waiting to explode.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm/i915: Fix the computation of required fb size for pipe
  2014-04-02  6:58 ` Chris Wilson
@ 2014-04-02  7:10   ` Daniel Vetter
  2014-04-02 15:03     ` Jesse Barnes
  0 siblings, 1 reply; 4+ messages in thread
From: Daniel Vetter @ 2014-04-02  7:10 UTC (permalink / raw)
  To: Chris Wilson, intel-gfx, Jesse Barnes

On Wed, Apr 02, 2014 at 07:58:18AM +0100, Chris Wilson wrote:
> On Thu, Mar 20, 2014 at 03:11:21PM +0000, Chris Wilson wrote:
> > The computation of required framebuffer size in
> > 
> > commit d978ef14456a38034f6c0e94a794129501f89200
> > Author: Jesse Barnes <jbarnes@virtuousgeek.org>
> > Date:   Fri Mar 7 08:57:51 2014 -0800
> > 
> >     drm/i915: Wrap the preallocated BIOS framebuffer and preserve for KMS fbcon v12
> > 
> > is too optimistic, and would rely on the invariant fb being
> > reconstructed to exactly fit each pipe (and probably ignore hardware
> > limits). Instead, we want to compute the upper bound on what the display
> > engine will access and ensure that is within the inherited framebuffer.
> > 
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
> 
> Ping. The code is just waiting to explode.

I kinda hoped it would magically get reviewed by Jesse. Thanks for the
ping, patch is picked up for -fixes.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm/i915: Fix the computation of required fb size for pipe
  2014-04-02  7:10   ` Daniel Vetter
@ 2014-04-02 15:03     ` Jesse Barnes
  0 siblings, 0 replies; 4+ messages in thread
From: Jesse Barnes @ 2014-04-02 15:03 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx

On Wed, 2 Apr 2014 09:10:44 +0200
Daniel Vetter <daniel@ffwll.ch> wrote:

> On Wed, Apr 02, 2014 at 07:58:18AM +0100, Chris Wilson wrote:
> > On Thu, Mar 20, 2014 at 03:11:21PM +0000, Chris Wilson wrote:
> > > The computation of required framebuffer size in
> > > 
> > > commit d978ef14456a38034f6c0e94a794129501f89200
> > > Author: Jesse Barnes <jbarnes@virtuousgeek.org>
> > > Date:   Fri Mar 7 08:57:51 2014 -0800
> > > 
> > >     drm/i915: Wrap the preallocated BIOS framebuffer and preserve for KMS fbcon v12
> > > 
> > > is too optimistic, and would rely on the invariant fb being
> > > reconstructed to exactly fit each pipe (and probably ignore hardware
> > > limits). Instead, we want to compute the upper bound on what the display
> > > engine will access and ensure that is within the inherited framebuffer.
> > > 
> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
> > 
> > Ping. The code is just waiting to explode.
> 
> I kinda hoped it would magically get reviewed by Jesse. Thanks for the
> ping, patch is picked up for -fixes.

Yeah sorry my brain exploded when looking at this for the nth time so I
kept putting it off.

Looks fine now though, so belated R-b from me.

-- 
Jesse Barnes, Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-04-02 15:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-20 15:11 [PATCH] drm/i915: Fix the computation of required fb size for pipe Chris Wilson
2014-04-02  6:58 ` Chris Wilson
2014-04-02  7:10   ` Daniel Vetter
2014-04-02 15:03     ` Jesse Barnes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox