Commit 1bb9e632 authored by Daniel Vetter's avatar Daniel Vetter

drm/i915: Only unbind vgacon, not other console drivers

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 a4de0526
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Thu Jun 5 16:20:46 2014 +0200

    drm/i915: Kick out vga console
Reported-and-tested-by: default avatarEd Tomlinson <edt@aei.ca>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent f1e1c212
...@@ -1464,11 +1464,12 @@ static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv) ...@@ -1464,11 +1464,12 @@ static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv)
#else #else
static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv) static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv)
{ {
int ret; int ret = 0;
DRM_INFO("Replacing VGA console driver\n"); DRM_INFO("Replacing VGA console driver\n");
console_lock(); console_lock();
if (con_is_bound(&vga_con))
ret = do_take_over_console(&dummy_con, 0, MAX_NR_CONSOLES - 1, 1); ret = do_take_over_console(&dummy_con, 0, MAX_NR_CONSOLES - 1, 1);
if (ret == 0) { if (ret == 0) {
ret = do_unregister_con_driver(&vga_con); ret = do_unregister_con_driver(&vga_con);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment