Re: [PATCH 89/89] drm/i915/skl: Disable contexts if execlists aren't enabled

Chris Wilson
2014-09-26T15:47:06Z

On Fri, Sep 26, 2014 at 06:28:53PM +0300, Mika Kuoppala wrote:
> Damien Lespiau <damien.lespiau@intel.com> writes:
>
> > We were hiting a BUG() in get_context_size() with execlist disabled.
> >
> > "legacy" contexts are not supported on gen9 so we don't have a gen9
> > specific size to add in there. Instead, let's disable legacy contexts
> > altogether on gen9, whether we're booting with execlist enabled or not.
> >
> > Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
>
> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
>
> > ---
> > drivers/gpu/drm/i915/i915_gem_context.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
> > index a5221d8..ec81d8a 100644
> > --- a/drivers/gpu/drm/i915/i915_gem_context.c
> > +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> > @@ -320,7 +320,7 @@ int i915_gem_context_init(struct drm_device *dev)
> > if (WARN_ON(dev_priv->ring[RCS].default_context))
> > return 0;
> >
> > - if (i915.enable_execlists) {
> > + if (INTEL_INFO(dev)->gen >= 9 || i915.enable_execlists) {
> > /* NB: intentionally left blank. We will allocate our own
> > * backing objects as we need them, thank you very much */
> > dev_priv->hw_context_size = 0;

I wouldn't have written it like this, since this hides the error, and
confuddles the intention of that branch, rather than embracing it.

diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index 102e8a7bcef6..f471b3511d80 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -129,7 +129,10 @@ static int get_context_size(struct drm_device *dev)
ret = GEN8_CXT_TOTAL_SIZE;
break;
default:
- BUG();
+ WARN("context size not known for gen %d\n",
+ INTEL_INFO(dev)->gen);
+ ret = -1;
+ break;
}

Would keep the fixme in place and keep the kernel running.
-Chris

--
Chris Wilson, Intel Open Source Technology Centre