| From 0b551f1e0fc50ee4e3cde2dd639cb010dae5b997 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= <jose.souza@intel.com> |
| Date: Wed, 18 Apr 2018 16:41:58 -0700 |
| Subject: drm/i915/fbdev: Enable late fbdev initial configuration |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: José Roberto de Souza <jose.souza@intel.com> |
| |
| commit 0b551f1e0fc50ee4e3cde2dd639cb010dae5b997 upstream. |
| |
| 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 no framebuffer allocated and fbdev was not set up 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/ |
| |
| 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. |
| |
| 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@intel.com> |
| Cc: stable@vger.kernel.org # v4.15+ |
| Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> |
| Signed-off-by: José Roberto de Souza <jose.souza@intel.com> |
| Tested-by: Paul Menzel <pmenzel@molgen.mpg.de> |
| Tested-by: frederik <frederik.schwan@linux.com> # 4.15.17 |
| Tested-by: Ian Pilcher <arequipeno@gmail.com> |
| Acked-by: Chris Wilson <chris@chris-wilson.co.uk> |
| Signed-off-by: Jani Nikula <jani.nikula@intel.com> |
| Link: https://patchwork.freedesktop.org/patch/msgid/20180418234158.9388-1-jose.souza@intel.com |
| (cherry picked from commit df9e6521749ab33cde306e8a4350b0ac7889220a) |
| Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/i915/intel_fbdev.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/gpu/drm/i915/intel_fbdev.c |
| +++ b/drivers/gpu/drm/i915/intel_fbdev.c |
| @@ -801,7 +801,7 @@ void intel_fbdev_output_poll_changed(str |
| return; |
| |
| intel_fbdev_sync(ifbdev); |
| - if (ifbdev->vma) |
| + if (ifbdev->vma || ifbdev->helper.deferred_setup) |
| drm_fb_helper_hotplug_event(&ifbdev->helper); |
| } |
| |