On Tue, 24 Apr 2018, Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> wrote: > 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> Thanks for the patch and the ack. Pushed. If it's not a fix, at least it papers over the regression for now... BR, Jani. > -Chris > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx