All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Wilson <chris@chris-wilson.co.uk>
To: intel-gfx@lists.freedesktop.org
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>, stabel@kernel.org
Subject: Re: [PATCH 2/2] drm/i915: i8xx also does not like multiple oustanding pageflips
Date: Wed, 04 Aug 2010 21:06:46 +0100	[thread overview]
Message-ID: <89k83a$95utrd@azsmga001.ch.intel.com> (raw)
In-Reply-To: <1280949730-5288-3-git-send-email-daniel.vetter@ffwll.ch>

On Wed,  4 Aug 2010 21:22:10 +0200, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
> My i855GM suffers from a 80k/s interrupt storm without this.
> So add 2nd gen to the list of things that don't like more than
> one outstanding pageflip request.
> 
> Furthermore I've changed the busy loop into a ringbuffer wait.
> Busy-loops that don't check whether the chip died are simply evil.
> And performance should actually improve, because there's usually
> a decent amount of rendering queued on the gpu, hopefully rendering
> that MI_WAIT into a noop by the time it's executed.
> 
> The current code holds dev->struct_mutex while executing this loop,
> hence stalling all other gem activity anyway.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: stabel@kernel.org
> ---
>  drivers/gpu/drm/i915/intel_display.c |   13 ++++++++-----
>  1 files changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 8135ee0..7b6035e 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4916,14 +4916,17 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
>  	work->pending_flip_obj = obj;
>  
>  	if (intel_crtc->plane)
> -		flip_mask = I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT;
> +		flip_mask = MI_WAIT_FOR_PLANE_B_FLIP;
>  	else
> -		flip_mask = I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT;
> +		flip_mask = MI_WAIT_FOR_PLANE_A_FLIP;
>  
>  	/* Wait for any previous flip to finish */
> -	if (IS_GEN3(dev))
> -		while (I915_READ(ISR) & flip_mask)
> -			;
> +	if (IS_GEN3(dev) || IS_GEN2(dev)) {
> +		BEGIN_LP_RING(2);
> +		OUT_RING(MI_WAIT_FOR_EVENT | flip_mask);
> +		OUT_RING(0);
> +		ADVANCE_LP_RING();
> +	}

If you move the if(intel_crtc->plane) inside the gen2/3 block, then I'll
test it on my netbooks. :)

Starting to look like intel_overlay.c ;-)

-- 
Chris Wilson, Intel Open Source Technology Centre

  parent reply	other threads:[~2010-08-04 20:06 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-04 19:22 [PATCH 0/2] fixup pageflip for i8xx class hw Daniel Vetter
2010-08-04 19:22 ` [PATCH 1/2] drm/i915: fixup pageflip ringbuffer commands for i8xx Daniel Vetter
2010-08-04 19:48   ` Jesse Barnes
2010-08-04 19:22 ` [PATCH 2/2] drm/i915: i8xx also doesn't like multiple oustanding pageflips Daniel Vetter
2010-08-04 19:49   ` Jesse Barnes
2010-08-04 21:03     ` Pedro Ribeiro
2010-08-04 20:06   ` Chris Wilson [this message]
2010-08-04 20:21     ` [PATCH 2/2] drm/i915: i8xx also does not " Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='89k83a$95utrd@azsmga001.ch.intel.com' \
    --to=chris@chris-wilson.co.uk \
    --cc=daniel.vetter@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=stabel@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.