[Intel-gfx] [PATCH] drm/i915: Only unbind vgacon, not other console drivers

David Herrmann dh.herrmann at gmail.com
Tue Jul 8 15:17:26 CEST 2014


Hi

On Tue, Jul 8, 2014 at 10:08 AM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> The console subsystem only provides a function to switch to a given
> console, but we want to actually only switach away from vgacon.
> Unconditionally switching to the dummy console resulted in switching
> away from fbcon in multi-gpu setups when other gpu drivers are loaded
> before i915.
>
> Then either the reinitialization of fbcon when i915 registers its
> fbdev emulation or the teardown of the fbcon driver killed the
> machine. So only switch to the dummy console when it's required.
>
> Kudos to Chris for the original idea, I've only refined it a bit to
> still unregister vgacon even when it's currently unused.
>
> This regression has been introduced in
>
> commit a4de05268e674e8ed31df6348269e22d6c6a1803
> Author: Daniel Vetter <daniel.vetter at ffwll.ch>
> Date:   Thu Jun 5 16:20:46 2014 +0200
>
>     drm/i915: Kick out vga console
>
> Reported-and-tested-by: Ed Tomlinson <edt at aei.ca>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: David Herrmann <dh.herrmann at gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>

Reviewed-by: David Herrmann <dh.herrmann at gmail.com>

Thanks
David

> ---
>  drivers/gpu/drm/i915/i915_dma.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> index 6c656392d67d..d44344140627 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -1464,12 +1464,13 @@ static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv)
>  #else
>  static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv)
>  {
> -       int ret;
> +       int ret = 0;
>
>         DRM_INFO("Replacing VGA console driver\n");
>
>         console_lock();
> -       ret = do_take_over_console(&dummy_con, 0, MAX_NR_CONSOLES - 1, 1);
> +       if (con_is_bound(&vga_con))
> +               ret = do_take_over_console(&dummy_con, 0, MAX_NR_CONSOLES - 1, 1);
>         if (ret == 0) {
>                 ret = do_unregister_con_driver(&vga_con);
>
> --
> 2.0.0
>



More information about the Intel-gfx mailing list