X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=kernel%2Fprintk.c;h=3a442bfb8beee0adfcaba1f1aca84c0f8a43db13;hb=bd0b1e954e3ba3e5d2cab941458cf98206471bd2;hp=01b58d7d17ff763d50f92cb80b66e8ffe67dad4f;hpb=7063e6c717f6108c4b3fc3135a516c86ef944870;p=powerpc.git diff --git a/kernel/printk.c b/kernel/printk.c index 01b58d7d17..3a442bfb8b 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -876,8 +876,10 @@ void register_console(struct console * console) break; console->flags |= CON_ENABLED; console->index = console_cmdline[i].index; - if (i == preferred_console) + if (i == selected_console) { console->flags |= CON_CONSDEV; + preferred_console = selected_console; + } break; } @@ -897,6 +899,8 @@ void register_console(struct console * console) if ((console->flags & CON_CONSDEV) || console_drivers == NULL) { console->next = console_drivers; console_drivers = console; + if (console->next) + console->next->flags &= ~CON_CONSDEV; } else { console->next = console_drivers->next; console_drivers->next = console; @@ -937,10 +941,14 @@ int unregister_console(struct console * console) /* If last console is removed, we re-enable picking the first * one that gets registered. Without that, pmac early boot console * would prevent fbcon from taking over. + * + * If this isn't the last console and it has CON_CONSDEV set, we + * need to set it on the next preferred console. */ if (console_drivers == NULL) preferred_console = selected_console; - + else if (console->flags & CON_CONSDEV) + console_drivers->flags |= CON_CONSDEV; release_console_sem(); return res;