diff mbox

[1/2] drm/i915: Switch to fake context on older gens

Message ID 1394806931-7399-1-git-send-email-mika.kuoppala@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Mika Kuoppala March 14, 2014, 2:22 p.m. UTC
We used to have per file descriptor hang stats for the
i915_get_reset_stats_ioctl() and for default context banning.

commit 0eea67eb26000657079b7fc41079097942339452
Author: Ben Widawsky <ben@bwidawsk.net>
Date:   Fri Dec 6 14:11:19 2013 -0800

    drm/i915: Create a per file_priv default context

made having separate hangstats in file_private redundant
as i915_hw_context already contained hangstats. So

commit c482972a086e03e6a6d27e4f7af2d868bf659648
Author: Ben Widawsky <benjamin.widawsky@intel.com>
Date:   Fri Dec 6 14:11:20 2013 -0800

    drm/i915: Piggy back hangstats off of contexts

consolidated the hangstats and enabled further improvements.

commit 44e2c0705a19e09d7b0f30a591f92e473e5ef89e
Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Date:   Thu Jan 30 16:01:15 2014 +0200

    drm/i915: Use i915_hw_context to set reset stats

tried to reap full benefits of consolidation but fell short
as we never 'switch' to the fake private context on gens
that don't have hw_contexts, so request->ctx remained NULL
on those.

Fix this by 'switching' to fake context so that when
request is submitted to ring, proper context gets assigned
to it.

References: https://bugs.freedesktop.org/show_bug.cgi?id=76055
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_gem_context.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Jani Nikula March 14, 2014, 2:43 p.m. UTC | #1
On Fri, 14 Mar 2014, Mika Kuoppala <mika.kuoppala@linux.intel.com> wrote:
> We used to have per file descriptor hang stats for the
> i915_get_reset_stats_ioctl() and for default context banning.
>
> commit 0eea67eb26000657079b7fc41079097942339452
> Author: Ben Widawsky <ben@bwidawsk.net>
> Date:   Fri Dec 6 14:11:19 2013 -0800
>
>     drm/i915: Create a per file_priv default context
>
> made having separate hangstats in file_private redundant
> as i915_hw_context already contained hangstats. So
>
> commit c482972a086e03e6a6d27e4f7af2d868bf659648
> Author: Ben Widawsky <benjamin.widawsky@intel.com>
> Date:   Fri Dec 6 14:11:20 2013 -0800
>
>     drm/i915: Piggy back hangstats off of contexts
>
> consolidated the hangstats and enabled further improvements.
>
> commit 44e2c0705a19e09d7b0f30a591f92e473e5ef89e
> Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> Date:   Thu Jan 30 16:01:15 2014 +0200
>
>     drm/i915: Use i915_hw_context to set reset stats
>
> tried to reap full benefits of consolidation but fell short
> as we never 'switch' to the fake private context on gens
> that don't have hw_contexts, so request->ctx remained NULL
> on those.
>
> Fix this by 'switching' to fake context so that when
> request is submitted to ring, proper context gets assigned
> to it.
>
> References: https://bugs.freedesktop.org/show_bug.cgi?id=76055

I'd say this still applies:

Tested-by: Lu Hua <huax.lu@intel.com>

> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem_context.c |    6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
> index ce41cff..b5a5837 100644
> --- a/drivers/gpu/drm/i915/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> @@ -775,9 +775,11 @@ int i915_switch_context(struct intel_ring_buffer *ring,
>  
>  	BUG_ON(file && to == NULL);
>  
> -	/* We have the fake context, but don't supports switching. */
> -	if (!HAS_HW_CONTEXTS(ring->dev))
> +	/* We have the fake context */
> +	if (!HAS_HW_CONTEXTS(ring->dev)) {
> +		ring->last_context = to;
>  		return 0;
> +	}
>  
>  	return do_switch(ring, to);
>  }
> -- 
> 1.7.9.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Daniel Vetter March 14, 2014, 3:42 p.m. UTC | #2
On Fri, Mar 14, 2014 at 04:43:16PM +0200, Jani Nikula wrote:
> On Fri, 14 Mar 2014, Mika Kuoppala <mika.kuoppala@linux.intel.com> wrote:
> > We used to have per file descriptor hang stats for the
> > i915_get_reset_stats_ioctl() and for default context banning.
> >
> > commit 0eea67eb26000657079b7fc41079097942339452
> > Author: Ben Widawsky <ben@bwidawsk.net>
> > Date:   Fri Dec 6 14:11:19 2013 -0800
> >
> >     drm/i915: Create a per file_priv default context
> >
> > made having separate hangstats in file_private redundant
> > as i915_hw_context already contained hangstats. So
> >
> > commit c482972a086e03e6a6d27e4f7af2d868bf659648
> > Author: Ben Widawsky <benjamin.widawsky@intel.com>
> > Date:   Fri Dec 6 14:11:20 2013 -0800
> >
> >     drm/i915: Piggy back hangstats off of contexts
> >
> > consolidated the hangstats and enabled further improvements.
> >
> > commit 44e2c0705a19e09d7b0f30a591f92e473e5ef89e
> > Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> > Date:   Thu Jan 30 16:01:15 2014 +0200
> >
> >     drm/i915: Use i915_hw_context to set reset stats
> >
> > tried to reap full benefits of consolidation but fell short
> > as we never 'switch' to the fake private context on gens
> > that don't have hw_contexts, so request->ctx remained NULL
> > on those.
> >
> > Fix this by 'switching' to fake context so that when
> > request is submitted to ring, proper context gets assigned
> > to it.
> >
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=76055
> 
> I'd say this still applies:
> 
> Tested-by: Lu Hua <huax.lu@intel.com>

Also if your patch intends to fix a bug, please use a Bugzilla: reference,
I tend to use References only when there's an issue seen in a report, but
it's not the main issue.
-Daniel

> 
> > Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_gem_context.c |    6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
> > index ce41cff..b5a5837 100644
> > --- a/drivers/gpu/drm/i915/i915_gem_context.c
> > +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> > @@ -775,9 +775,11 @@ int i915_switch_context(struct intel_ring_buffer *ring,
> >  
> >  	BUG_ON(file && to == NULL);
> >  
> > -	/* We have the fake context, but don't supports switching. */
> > -	if (!HAS_HW_CONTEXTS(ring->dev))
> > +	/* We have the fake context */
> > +	if (!HAS_HW_CONTEXTS(ring->dev)) {
> > +		ring->last_context = to;
> >  		return 0;
> > +	}
> >  
> >  	return do_switch(ring, to);
> >  }
> > -- 
> > 1.7.9.5
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Jani Nikula, Intel Open Source Technology Center
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Daniel Vetter March 14, 2014, 3:46 p.m. UTC | #3
On Fri, Mar 14, 2014 at 04:42:21PM +0100, Daniel Vetter wrote:
> On Fri, Mar 14, 2014 at 04:43:16PM +0200, Jani Nikula wrote:
> > On Fri, 14 Mar 2014, Mika Kuoppala <mika.kuoppala@linux.intel.com> wrote:
> > > We used to have per file descriptor hang stats for the
> > > i915_get_reset_stats_ioctl() and for default context banning.
> > >
> > > commit 0eea67eb26000657079b7fc41079097942339452
> > > Author: Ben Widawsky <ben@bwidawsk.net>
> > > Date:   Fri Dec 6 14:11:19 2013 -0800
> > >
> > >     drm/i915: Create a per file_priv default context
> > >
> > > made having separate hangstats in file_private redundant
> > > as i915_hw_context already contained hangstats. So
> > >
> > > commit c482972a086e03e6a6d27e4f7af2d868bf659648
> > > Author: Ben Widawsky <benjamin.widawsky@intel.com>
> > > Date:   Fri Dec 6 14:11:20 2013 -0800
> > >
> > >     drm/i915: Piggy back hangstats off of contexts
> > >
> > > consolidated the hangstats and enabled further improvements.
> > >
> > > commit 44e2c0705a19e09d7b0f30a591f92e473e5ef89e
> > > Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> > > Date:   Thu Jan 30 16:01:15 2014 +0200
> > >
> > >     drm/i915: Use i915_hw_context to set reset stats
> > >
> > > tried to reap full benefits of consolidation but fell short
> > > as we never 'switch' to the fake private context on gens
> > > that don't have hw_contexts, so request->ctx remained NULL
> > > on those.
> > >
> > > Fix this by 'switching' to fake context so that when
> > > request is submitted to ring, proper context gets assigned
> > > to it.
> > >
> > > References: https://bugs.freedesktop.org/show_bug.cgi?id=76055
> > 
> > I'd say this still applies:
> > 
> > Tested-by: Lu Hua <huax.lu@intel.com>
> 
> Also if your patch intends to fix a bug, please use a Bugzilla: reference,
> I tend to use References only when there's an issue seen in a report, but
> it's not the main issue.

Queued for -next, thanks for the patch.
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index ce41cff..b5a5837 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -775,9 +775,11 @@  int i915_switch_context(struct intel_ring_buffer *ring,
 
 	BUG_ON(file && to == NULL);
 
-	/* We have the fake context, but don't supports switching. */
-	if (!HAS_HW_CONTEXTS(ring->dev))
+	/* We have the fake context */
+	if (!HAS_HW_CONTEXTS(ring->dev)) {
+		ring->last_context = to;
 		return 0;
+	}
 
 	return do_switch(ring, to);
 }