Re: [PATCH] serial: 8250_dw: verify clock rate in dw8250_set_termios

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

 



On Tue, Jan 11, 2022 at 05:28:47PM +0400, asheplyakov@xxxxxxxxxx wrote:
> From: Alexey Sheplyakov <asheplyakov@xxxxxxxxxx>

Thanks for your patch, my comments below.

> Refuse to change the clock rate if clk_round_rate() returns
> a rate which is way too off (i.e. by more than 1/16 from the one
> necessary for a given baud rate). In particular this happens if
> the requested rate is below the minimum supported by the clock.
> 
> Fixes the UART console on BE-M1000 SoC. Without this patch the
> console gets garbled immediately after loading the driver.
> dw8250_set_termios tries to configure the baud rate (115200),
> and calls clk_round_rate to figure out the supported rate closest
> to 1843200 Hz (which is 115200 * 16). However the (SoC-specific)
> clock driver returns 4705882 Hz. This frequency is way too off,
> hence after setting it the console gets garbled.

So, the root cause is to understand _why_ the clock provider is uncapable
to fulfil the request. Any investigation has been conducted?

> Signed-off-by: Alexey Sheplyakov <asheplyakov@xxxxxxxxxx>
> Signed-off-by: Vadim V. Vlasov <vadim.vlasov@xxxxxxxxxxx>

> 

Should be no blank lines in the tag block, but...

> Cc: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Cc: Serge Semin <Sergey.Semin@xxxxxxxxxxxxxxxxxxxx>

...I recommend to use --cc parameter to git send-email instead of polluting
commit message.

...

> -	if (rate > 0) {
> +	if (rate > 0 && rate >= baud * 15 && rate <= baud * 17) {

It doesn't fell like a correct fix.

-- 
With Best Regards,
Andy Shevchenko





[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