Re: Early console confusion

From: Bjorn Helgaas
Date: Wed Sep 22 2010 - 12:45:53 EST


On Wednesday, September 22, 2010 09:56:15 am H. Peter Anvin wrote:
> On 09/22/2010 08:12 AM, Bjorn Helgaas wrote:
> > Can somebody explain the differences between
> >
> > earlycon=uart,...
> > earlycon=uart8250,...
> > earlyprintk=serial,...
> > console=uart,...
> > console=uart8250,...
> >
> > I'm not really convinced we need them all, and it's getting a
> > little confusing.
>
> Some of them come from the embedded industry, where it's felt that you
> have to be able to specify the exact parameters because there are no
> standards, and some come from the PC world where "serial port 0" is a
> well-defined concept and noone wants to bloody call it "uart8250,0x3f8".

OK, my fault for not asking a specific question :-) Let me try again.

For "earlycon=" and "console=", we support both "uart" and "uart8250".
I see the value of "uart8250", because we might want to support a
non-8250 UART someday. But keeping "uart" just seems confusing.

We support both of the following, but I can't tell what the difference
is or why we need both:

earlycon=uart8250,io,0x3f8,9600n8
console=uart8250,io,0x3f8,9600n8

We support both of the following (per kernel-parameters.txt, anyway),
but again, I don't know what the difference is:

earlyprintk=serial,ttyS0
earlyprintk=ttyS0

If we don't like "uart8250,io,0x3f8" (which I agree is awfully clunky),
we could easily add something like "console=com1" which encapsulated
the well-defined PC concept. It would be similar to "earlyprintk=ttyS0",
and if it could be made *enough* like it, maybe "earlyprintk=ttyS0"
could be dropped.

I also see the recent "earlyprintk=hsu" patch from Feng Tang, and I
wonder whether that could be recast in the "console=hsu" style. Like
"com1", "hsu" is apparently enough to specifically identify a device.

I think it's nicer to extend "console=" in ways that allow early
devices, because then users don't have to mess with both "console="
and "earlyprintk=". The 8250_early driver has a reasonable model
of switching from the early device to the real one automatically,
so maybe something like this is all we would need:

console=ttyS0 (late only, use whatever device becomes ttyS0)
console=com1 (early and late, use I/O port 0x3f8 on PCs)
console=hsu (early and late, use Medfield UART)
console=uart8250,mmio,... (early and late, for MMIO UARTs)
console=uartXYZ,mmio,... (early and late, for non-8250 UARTs)
console=vga (early and late, use legacy VGA (switch to tty0 late))
console=tty0 (late only)

Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/