All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jesse Barnes <jbarnes@virtuousgeek.org>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org, stabel@kernel.org
Subject: Re: [PATCH 2/2] drm/i915: i8xx also doesn't like multiple oustanding pageflips
Date: Wed, 4 Aug 2010 12:49:09 -0700	[thread overview]
Message-ID: <20100804124909.0ca79a59@virtuousgeek.org> (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();
> +	}
>  
>  	BEGIN_LP_RING(4);
>  	if (IS_I965G(dev)) {

This looks nicer than what was there before.  Hope it still works on
9xx...

Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>

-- 
Jesse Barnes, Intel Open Source Technology Center

  reply	other threads:[~2010-08-04 19:49 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 [this message]
2010-08-04 21:03     ` Pedro Ribeiro
2010-08-04 20:06   ` [PATCH 2/2] drm/i915: i8xx also does not " Chris Wilson
2010-08-04 20:21     ` 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=20100804124909.0ca79a59@virtuousgeek.org \
    --to=jbarnes@virtuousgeek.org \
    --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.