Hi Paul,
On 25/10/17 23:09, Paul Burton wrote:
Hi Matt, On Tuesday, October 17, 2017 at 6:28 AM Matt Redfearn wrote:During set up of the early console, the earlycon driver will attempt to configure a baud rate, if one is set in the earlycon structure. Previously, of_setup_earlycon left this field as 0, ignoring any baud rate selected by the DT. Commit 31cb9a8575ca ("earlycon: initialise baud field of earlycon device structure") changed this behaviour such that any selected baud rate is now set. The earlycon driver must deduce the divisor from the configured uartclk, which of_setup_earlycon sets to BASE_BAUD. MIPS generic kernels do not set BASE_BAUD (there is no practical way to set this generically for all supported platforms), so when the early console is configured an incorrect divisor is calculated for the selected baud rate, and garbage is printed to the console during boot. Fix this by removing the configured baud rate from the device tree. This causes the early console to inherit the baud rate settings from the bootloader. By the time the real console is probed, the clock drivers necessary to calculate the divisor are enabled and the kernel can correctly configure the baud rate.Sadly I think this breaks the proper console - my current understanding is that we end up with it set to 9600 baud due to the defaults in serial8250_console_setup(). So with your patch I see correct output from the early console, then nothing when the proper console registers until my userland starts a getty on ttyS0 which reconfigures it to 115200 baud.
As long as you specify "console=ttyS0,115200" on the command line, then the correct baud rate gets applied. I know that's not ideal...
(CC'ing Eugene & Greg KH for other ideas to fix this) Thanks, Matt
Thanks, PaulFixes: 31cb9a8575ca ("earlycon: initialise baud field of earlycon device structure") Signed-off-by: Matt Redfearn <[email protected]> --- arch/mips/boot/dts/img/boston.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/mips/boot/dts/img/boston.dts b/arch/mips/boot/dts/img/boston.dts index 53bfa29a7093..179691aae7d7 100644 --- a/arch/mips/boot/dts/img/boston.dts +++ b/arch/mips/boot/dts/img/boston.dts @@ -11,7 +11,7 @@ compatible = "img,boston"; chosen { - stdout-path = "uart0:115200"; + stdout-path = "uart0"; }; aliases { -- 2.7.4

