On Fri, Jun 05, 2015 at 11:18:21PM +0200, Stefan Lippers-Hollmann wrote: > Hi > > On 2015-04-20, Dave Airlie wrote: > [...] > > The following changes since commit 09d51602cf84a1264946711dd4ea0dddbac599a1: > > > > Merge branch 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux (2015-04-19 14:31:41 -0700) > > > > are available in the git repository at: > > > > git://people.freedesktop.org/~airlied/linux drm-next-merged > > > > for you to fetch changes up to 2c33ce009ca2389dbf0535d0672214d09738e35e: > > > > Merge Linus master into drm-next (2015-04-20 13:05:20 +1000) > [...] > > Ander Conselvan de Oliveira (28): > [...] > > drm/i915: Allocate connector state together with the connectors > [...] > > This commit introduces a regression relative to v4.0 on an Intel > D945GCLF2 mainboard[1] (Atom 330) with Intel 82945G/GZ onboard graphics > using its (only-) VGA connector for me. > > v4.1-rc6-52-gff25ea8: > [ 13.265699] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010 > [ 13.265723] IP: [<ffffffffa0556f01>] intel_modeset_update_connector_atomic_state+0x61/0x90 [i915] Hmm. Smells like a connector with a NULL state pointer, and the bad commit touched exactly the part that sets it up. I can't immediately spot any place where we'd forget to set it up though. Can you try with something like this so we'd at least find out which connector(s) is/are at fault here? diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 3007b44..c10f423 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -918,6 +918,8 @@ int drm_connector_init(struct drm_device *dev, connector->debugfs_entry = NULL; + WARN(1, "connector = %p\n", connector); + out_put: if (ret) drm_mode_object_put(dev, &connector->base); diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index d0f3cbc..dd8ced7 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -10332,6 +10332,10 @@ static void intel_modeset_update_connector_atomic_state(struct drm_device *dev) struct intel_connector *connector; for_each_intel_connector(dev, connector) { + if (WARN(!connector->base.state, + "connector = %p\n", &connector->base)) + continue; + if (connector->base.encoder) { connector->base.state->best_encoder = connector->base.encoder; -- 2.3.6 -- Ville Syrjälä Intel OTC _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel