Hi Waldemar, On Tue, May 20, 2014 at 10:21 AM, Waldemar Brodkorb <wbx@xxxxxxxxxxx> wrote: > Geert Uytterhoeven wrote, >> On Fri, May 16, 2014 at 3:49 PM, Waldemar Brodkorb <wbx@xxxxxxxxxxx> wrote: >> > I am trying to bootup my Mikrotik RB532 board with the latest >> > kernel, but my serial console is disabled after boot: >> > .. >> > Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled >> > serial8250: ttyS0 at MMIO 0x0 (irq = 104, base_baud = 12499875) is a >> > 16550A >> > console [ttyS0] enabled >> > console [ttyS0] disabled >> > >> > I used git bisect to find the problematic commit: >> > commit 5f5c9ae56c38942623f69c3e6dc6ec78e4da2076 >> > Author: Geert Uytterhoeven <geert+renesas@xxxxxxxxxxxxxx> >> > Date: Fri Feb 28 14:21:32 2014 +0100 >> > >> > serial_core: Unregister console in uart_remove_one_port() >> > >> > If the serial port being removed is used as a console, it must >> > also be >> > unregistered from the console subsystem using >> > unregister_console(). >> > >> > uart_ops.release_port() will release resources (e.g. iounmap() >> > the serial >> > port registers), causing a crash on subsequent kernel output if >> > the console >> > is still registered. >> > >> > Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxxxxxxx> >> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> >> > >> > After reverting the change, everything is fine. >> >> Does this patch help? https://lkml.org/lkml/2014/5/10/9 > > The second change in printk.c didn't help. >> Your serial driver may need to set port.type too, if it doesn't already do so >> and the type is PORT_UNKNOWN on re-registration. > > Tried following patch, but it didn't work: > > diff -Nur linux-3.15-rc5.orig/arch/mips/rb532/serial.c > linux-3.15-rc5/arch/mips/rb532/serial.c > --- linux-3.15-rc5.orig/arch/mips/rb532/serial.c 2014-05-09 > 22:10:52.000000000 +0200 > +++ linux-3.15-rc5/arch/mips/rb532/serial.c 2014-05-19 > 20:35:08.000000000 +0200 > @@ -37,7 +37,7 @@ > extern unsigned int idt_cpu_freq; > > static struct uart_port rb532_uart = { > - .flags = UPF_BOOT_AUTOCONF, > + .type = PORT_16550A, I'm afraid this is not gonna help. When the port is unregistered, its type will be reset to PORT_UNKNOWN. So before registering it again, its type must be set againin the actual serial driver, cfr. the change to of_serial.c. > .line = 0, > .irq = UART0_IRQ, > .iotype = UPIO_MEM, > diff -Nur linux-3.15-rc5.orig/kernel/printk/printk.c > linux-3.15-rc5/kernel/printk/printk.c > --- linux-3.15-rc5.orig/kernel/printk/printk.c 2014-05-09 > 22:10:52.000000000 +0200 > +++ linux-3.15-rc5/kernel/printk/printk.c 2014-05-20 > 09:39:54.000000000 +0200 > @@ -2413,6 +2413,7 @@ > if (console_drivers != NULL && console->flags & CON_CONSDEV) > console_drivers->flags |= CON_CONSDEV; > > + console->flags &= ~CON_ENABLED; > console_unlock(); > console_sysfs_notify(); > return res; Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds