Re: i865, drm_modeset_lock_all: BUG: unable to handle kernel NULL pointer dereference at 00000104

From: Chris Wilson
Date: Tue Aug 23 2016 - 06:11:07 EST


On Tue, Aug 23, 2016 at 02:35:03PM +0300, Meelis Roos wrote:
> > Looks like an incorrect call to drm_encoder_cleanup() from the error
> > path. If we hit the error path we have never called drm_encoder_init.
> > Please try:
> >
> > diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
> > index 47bdf9dad0d3..b9e5a63a7c9e 100644
> > --- a/drivers/gpu/drm/i915/intel_dvo.c
> > +++ b/drivers/gpu/drm/i915/intel_dvo.c
> > @@ -554,7 +554,6 @@ void intel_dvo_init(struct drm_device *dev)
> > return;
> > }
> >
> > - drm_encoder_cleanup(&intel_encoder->base);
> > kfree(intel_dvo);
> > kfree(intel_connector);
> > }
>
> It works - the BUG is gone.
>
> Now I get just
> [drm:__intel_set_cpu_fifo_underrun_reporting [i915]] *ERROR* pipe A underrun

Other than the annoying underrun, is everything else as expected? i.e.
no connected outputs? Have we lost dvo detection?
-Chris

--
Chris Wilson, Intel Open Source Technology Centre