[PATCH 0/8] i.MX early debug UART clock fixes
Lucas Stach
l.stach at pengutronix.de
Mon Aug 31 09:36:27 PDT 2015
Am Donnerstag, den 27.08.2015, 18:39 +0200 schrieb Lucas Stach:
> This series fixes a long standing interaction issue between the
> kernels early debug facilities and the i.MX clock drivers.
>
> Both earlyprintk and earlycon rely on the bootloader setup clocks
> for the UARTs to be retained during kernel init. As those clocks are
> only enabled in hardware, but not referenced in software they (or even
> their parent clocks) may get disabled as a result of other clocks being
> en-/disabled during boot.
>
> This results in missing messages from the early debug console until the
> regular system console takes over, or even worse system hangs in response
> to unclocked register accesses. This renders those debugging facilities a
> lot less useful.
>
> The fix implemented here is to check if any of this early debugging is
> enabled and keep the UART clocks referenced and enabled in that case.
> The clocks will then only be disabled at the end of kernel init, at which
> point the real console should have taken over and the early outputs being
> disabled.
>
> I've runtime tested this on i.MX6Q and i.MX53, other platforms are only
> compile tested. This is mostly a mechanical change, but still I would
> appreciate some testing.
>
And Philipp noted that passing in a list of clocks from the clock
providers look a lot better than the current direct clock enable calling
and the needed callback.
I'm self-nacking this series, so I can spin a V2 with changes as above.
> Regards,
> Lucas
>
> Lucas Stach (8):
> clk: imx: add common logic to detect early UART usage
> clk: imx25: retain early UART clocks during kernel init
> clk: imx27: retain early UART clocks during kernel init
> clk: imx31: retain early UART clocks during kernel init
> clk: imx35: retain early UART clocks during kernel init
> clk: imx5: retain early UART clocks during kernel init
> clk: imx6: retain early UART clocks during kernel init
> clk: imx7d: retain early UART clocks during kernel init
>
> drivers/clk/imx/clk-imx25.c | 20 ++++++++++++++++++++
> drivers/clk/imx/clk-imx27.c | 22 ++++++++++++++++++++++
> drivers/clk/imx/clk-imx31.c | 20 ++++++++++++++++++++
> drivers/clk/imx/clk-imx35.c | 16 ++++++++++++++++
> drivers/clk/imx/clk-imx51-imx53.c | 28 ++++++++++++++++++++++++++++
> drivers/clk/imx/clk-imx6q.c | 12 ++++++++++++
> drivers/clk/imx/clk-imx6sl.c | 12 ++++++++++++
> drivers/clk/imx/clk-imx6sx.c | 12 ++++++++++++
> drivers/clk/imx/clk-imx7d.c | 22 ++++++++++++++++++++++
> drivers/clk/imx/clk.c | 33 +++++++++++++++++++++++++++++++++
> drivers/clk/imx/clk.h | 2 ++
> 11 files changed, 199 insertions(+)
>
--
Pengutronix e.K. | Lucas Stach |
Industrial Linux Solutions | http://www.pengutronix.de/ |
More information about the linux-arm-kernel
mailing list