univ8250_console replaces earlycon too early

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I'm working on an x86 system that doesn't have any legacy UARTs
(0x3f8, etc) mapped. Instead it uses MMIO UARTs defined by ACPI. It
seems that in this case the univ8250_console console is registered too
early. It replaces `earlycon` before the ACPI consoles have had a
chance to load. This results in losing about 500ms of console logs in
my case.

Here is my log with some print statements:
```
[    0.677076] serial8250_isa_init_ports: start
[    0.681808] serial8250_isa_init_ports: checking old serial port 0
[    0.688566] serial8250_isa_init_ports: iobase: 0x3f8, irq: 4,
uartclk: 1843200
[    0.696579] serial8250_isa_init_ports: checking old serial port 1
[    0.703338] serial8250_isa_init_ports: iobase: 0x2f8, irq: 3,
uartclk: 1843200
[    0.711352] serial8250_isa_init_ports: checking old serial port 2
[    0.718110] serial8250_isa_init_ports: iobase: 0x3e8, irq: 4,
uartclk: 1843200
[    0.726124] serial8250_isa_init_ports: checking old serial port 3
[    0.732884] serial8250_isa_init_ports: iobase: 0x2e8, irq: 3,
uartclk: 1843200
[    0.740899] univ8250_console_setup: iobase: 0x3f8, irq: 4, uartclk: 1843200
[    0.748623] serial8250_console_setup: iobase: 0x3f8, irq: 4, uartclk: 1843200
[    0.756540] serial8250_console_setup: options: 115200
[    0.762147] serial8250_console_setup: iobase: 0x3f8, irq: 4, uartclk: 1843200
[    0.770064] printk: console [ttyS0] enabled <- univ8250_console
[    0.774789] printk: bootconsole [uart0] disabled
... nothing
[    1.224845] printk: console [ttyS0] enabled <- This is the
AMDI0020:00 console getting loaded
[    1.229061] uart_add_one_port: Setting up console!
[    1.235099] serial8250_register_8250_port: Done!
[    1.239748] serial8250_register_8250_port: idx: 0, iobase: 0x0,
membase: ffff96e70007d000, irq: 4, uartclk: 48000000
[    1.250329] serial8250_register_8250_port: idx: 1, iobase: 0x2f8,
membase: 0000000000000000, irq: 3, uartclk: 1843200
[    1.260957] serial8250_register_8250_port: idx: 2, iobase: 0x3e8,
membase: 0000000000000000, irq: 4, uartclk: 1843200
[    1.271585] serial8250_register_8250_port: idx: 3, iobase: 0x2e8,
membase: 0000000000000000, irq: 3, uartclk: 1843200
[    1.282213] dw-apb-uart AMDI0020:00: RX: register port done
[    1.287897] dw-apb-uart AMDI0020:00: RX: set active
[    1.292805] dw-apb-uart AMDI0020:00: RX: done
[    1.297599] dw-apb-uart AMDI0020:01: RX: dw8250_probe: Probing UART
[    1.303976] dw-apb-uart AMDI0020:01: RX: UART Clock: 0
[    1.309143] dw-apb-uart AMDI0020:01: RX: Overriding baud clock: 48000000
[    1.315911] dw-apb-uart AMDI0020:01: RX: Quirks
[    1.320674] dw-apb-uart AMDI0020:01: RX: setup port
[    1.325665] dw-apb-uart AMDI0020:01: RX: setup port done
[    1.331007] dw-apb-uart AMDI0020:01: RX: register port
```

What would be the correct way to fix this?
Should we probe the legacy (0x3f8) device before attaching
univ8250_console so it doesn't override earlycon?

Thanks,
Raul



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux