On Sat, Apr 04, 2015 at 12:23:14PM -0400, Peter Hurley wrote: > On 04/04/2015 12:09 PM, Greg Kroah-Hartman wrote: > > On Sat, Apr 04, 2015 at 10:27:30AM -0400, Peter Hurley wrote: > >> Restore undocumented behavior of kernel command line parameters of > >> the forms: > >> console=uart[8250],io|mmio|mmio32,<addr>[,options] > >> console=uart[8250],<addr>[,options] > >> where 'options' have not been specified; in this case, the hardware > >> is assumed to be initialized. > >> > >> Document the required behavior of the original implementation. > >> > >> Fixes: c7cef0a84912cab3c9df8 ("console: Add extensible console matching") > >> Reported-by: Yinghai Lu <yinghai@xxxxxxxxxx> > >> Signed-off-by: Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> > >> --- > >> > >> v3: Fixed automatic console to port line settings initialization; > >> open-coded serial8250_console_setup() so the baud can be probed; > >> added sha reference in commit log > >> > >> v2: Fixed regression which allowed "console=uart1337,..." to start a > >> console (but not an earlycon) > >> + fixed earlycon= documentation related required behavior fixed by > >> this patch > >> > >> Documentation/kernel-parameters.txt | 18 ++++++++++++++--- > >> drivers/tty/serial/8250/8250_core.c | 38 +++++++++++++++++++++++++++++++++--- > >> drivers/tty/serial/8250/8250_early.c | 19 ------------------ > >> 3 files changed, 50 insertions(+), 25 deletions(-) > >> > >> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt > >> index bfcb1a6..1facf0b 100644 > >> --- a/Documentation/kernel-parameters.txt > >> +++ b/Documentation/kernel-parameters.txt > >> @@ -713,10 +713,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. > >> > >> uart[8250],io,<addr>[,options] > >> uart[8250],mmio,<addr>[,options] > >> + uart[8250],mmio32,<addr>[,options] > >> + uart[8250],0x<addr>[,options] > >> Start an early, polled-mode console on the 8250/16550 > >> UART at the specified I/O port or MMIO address, > >> - switching to the matching ttyS device later. The > >> - options are the same as for ttyS, above. > >> + switching to the matching ttyS device later. > >> + MMIO inter-register address stride is either 8-bit > >> + (mmio) or 32-bit (mmio32). > >> + If none of [io|mmio|mmio32], <addr> is assumed to be > >> + equivalent to 'mmio'. 'options' are specified in the > >> + same format described for ttyS above; if unspecified, > >> + the h/w is not re-initialized. > >> + > >> hvc<n> Use the hypervisor console device <n>. This is for > >> both Xen and PowerPC hypervisors. > >> > >> @@ -944,11 +952,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted. > >> uart[8250],io,<addr>[,options] > >> uart[8250],mmio,<addr>[,options] > >> uart[8250],mmio32,<addr>[,options] > >> + uart[8250],0x<addr>[,options] > >> Start an early, polled-mode console on the 8250/16550 > >> UART at the specified I/O port or MMIO address. > >> MMIO inter-register address stride is either 8-bit > >> (mmio) or 32-bit (mmio32). > >> - The options are the same as for ttyS, above. > >> + If none of [io|mmio|mmio32], <addr> is assumed to be > >> + equivalent to 'mmio'. 'options' are specified in the > >> + same format described for "console=ttyS<n>"; if > >> + unspecified, the h/w is not initialized. > >> > >> pl011,<addr> > >> Start an early, polled-mode console on a pl011 serial > >> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c > >> index e0fb5f0..f59c7a0 100644 > >> --- a/drivers/tty/serial/8250/8250_core.c > >> +++ b/drivers/tty/serial/8250/8250_core.c > >> @@ -3447,6 +3447,22 @@ static int univ8250_console_setup(struct console *co, char *options) > >> return serial8250_console_setup(up, options); > >> } > >> > >> +/* FIXME: this is broken on most other 8250 h/w */ > > > > What do you mean by "most other"? What hardware does this work for? > > What is it broken for? What is someone supposed to think/do with this > > comment? > > It's a direct copy of the existing behavior for 8250 earlycon, which is > broken for h/w with non-standard divisor registers. That's basically > _every_ new design, because that's what vendors need to extend to support > modern bitrates. > > Affected h/w that I know of includes: 8250_dw, exar xr17v35 cards, omap8250, > omap15xx, intel byt, intel mid. > > But it was already broken for these and so not a regression. Sorry, I know the function is a copy, you haven't broken anything that wasn't already broken. I see this comment as a "rant", but we might as well turn that "rant" into something descriptive to let other people know what is really going on here. Sound reasonable? thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html