Quoting José Roberto de Souza (2018-04-19 00:41:58) > If the initial fbdev configuration(intel_fbdev_initial_config()) runs and > there still no sink connected it will cause > drm_fb_helper_initial_config() to return 0 as no error happened(but > internally the return is -EAGAIN). > Because no framebuffer was allocated, when a sink is connected > intel_fbdev_output_poll_changed() will not execute > drm_fb_helper_hotplug_event() that would trigger another try to do the > initial fbdev configuration. > > So here allowing drm_fb_helper_hotplug_event() to be executed when there > is not frambebuffer allocated and fbdev was not setup yet. > > This issue also happens when a MST DP sink is connected since boot, as > the MST topology is discovered in parallel if intel_fbdev_initial_config() > is executed before the first sink MST is discovered it will cause this > same issue. > > This is a follow up patch of > https://patchwork.freedesktop.org/patch/196089/ > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104158 > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104425 > Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Signed-off-by: José Roberto de Souza <jose.souza@xxxxxxxxx> > --- > > Changes from v1: > - not creating a dump framebuffer anymore, instead just allowing > drm_fb_helper_hotplug_event() to execute when fbdev is not setup yet. > > drivers/gpu/drm/i915/intel_fbdev.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c > index 7d41d139341b..e9e02b58b7be 100644 > --- a/drivers/gpu/drm/i915/intel_fbdev.c > +++ b/drivers/gpu/drm/i915/intel_fbdev.c > @@ -807,7 +807,7 @@ void intel_fbdev_output_poll_changed(struct drm_device *dev) > return; > > intel_fbdev_sync(ifbdev); > - if (ifbdev->vma) > + if (ifbdev->vma || ifbdev->helper.deferred_setup) Feels slightly dodgy, vma can only be set and deferred_setup only be cleared at runtime, so at worst we may miss sending a hpd event during a runtime configuration phase. Which is probably just as well. What happens if we send two hpd events, and the first gets a deferred setup that fails. Do we hit the previous error condition? At least we are not hitting the condition of running the hotplug event while trying to do the initial configuration, but does the deferred setup have the same bugs? > drm_fb_helper_hotplug_event(&ifbdev->helper); I fear this is just poking the bear, Acked-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx