Message ID | 20100815.002658.27793549.davem@davemloft.net |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
On Sunday 15 August 2010, David Miller wrote: > Ok, I think I really got it this time :-) Please add this patch on > top of the existing stuff. > > -------------- > sparc: Really fix "console=" for serial consoles. > > If a video head and keyboard are hooked up, specifying "console=ttyS0" > or similar to use a serial console will not work properly. > > The key issue is that we must register all serial console capable > devices with register_console(), otherwise the command line specified > device won't be found. The sun serial drivers would only register > themselves as console devices if the OpenFirmware specified console > device node matched. To fix this part we now unconditionally get > the serial console register by setting serial_drv->cons always. > > Secondarily we must not add_preferred_console() using the firmware > provided console setting if the user gaven an override on the kernel > command line using "console=" The "primary framebuffer" matching > logic was always triggering o n openfirmware device node match, make > it not when a command line override was given. Works great. Tested on top of previous patch (against 2.6.34; I've not done any kernel testing recently and am thus a bit behind). > Reported-by: Frans Pop <elendil@planet.nl> s/-by:/-and-tested-by:/ As always: many thanks David! Cheers, FJP -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Frans Pop <elendil@planet.nl> Date: Mon, 16 Aug 2010 10:59:28 +0200 > Works great. > > Tested on top of previous patch (against 2.6.34; I've not done any kernel > testing recently and am thus a bit behind). > >> Reported-by: Frans Pop <elendil@planet.nl> > > s/-by:/-and-tested-by:/ > > As always: many thanks David! > Thanks a lot for everything Frans. -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/sparc/include/asm/fb.h b/arch/sparc/include/asm/fb.h index e834880..2173432 100644 --- a/arch/sparc/include/asm/fb.h +++ b/arch/sparc/include/asm/fb.h @@ -1,5 +1,6 @@ #ifndef _SPARC_FB_H_ #define _SPARC_FB_H_ +#include <linux/console.h> #include <linux/fb.h> #include <linux/fs.h> #include <asm/page.h> @@ -18,6 +19,9 @@ static inline int fb_is_primary_device(struct fb_info *info) struct device *dev = info->device; struct device_node *node; + if (console_set_on_cmdline) + return 0; + node = dev->of_node; if (node && node == of_console_device) diff --git a/drivers/serial/suncore.c b/drivers/serial/suncore.c index 544f2e2..6381a02 100644 --- a/drivers/serial/suncore.c +++ b/drivers/serial/suncore.c @@ -55,7 +55,12 @@ EXPORT_SYMBOL(sunserial_unregister_minors); int sunserial_console_match(struct console *con, struct device_node *dp, struct uart_driver *drv, int line, bool ignore_line) { - if (!con || of_console_device != dp) + if (!con) + return 0; + + drv->cons = con; + + if (of_console_device != dp) return 0; if (!ignore_line) { @@ -69,12 +74,10 @@ int sunserial_console_match(struct console *con, struct device_node *dp, return 0; } - con->index = line; - drv->cons = con; - - if (!console_set_on_cmdline) + if (!console_set_on_cmdline) { + con->index = line; add_preferred_console(con->name, line, NULL); - + } return 1; } EXPORT_SYMBOL(sunserial_console_match);