Re: [PATCH] arm64: dts: imx8mp: drop dmas property for uart console

From: Saravana Kannan
Date: Mon Jun 27 2022 - 23:00:49 EST


On Mon, Jun 27, 2022 at 1:22 AM Peng Fan (OSS) <peng.fan@xxxxxxxxxxx> wrote:
>
> Hi Saravana,
>
> 在 2022/6/25 15:15, Saravana Kannan 写道:
> > On Wed, Jun 22, 2022 at 12:24 AM Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote:
> >> +Cc Saravana Kannan <saravanak@xxxxxxxxxx>, the author of 71066545b48e4
> >>
> >> On Wed, Jun 22, 2022 at 02:20:27PM +0800, Peng Fan (OSS) wrote:
> >>> From: Peng Fan <peng.fan@xxxxxxx>
> >>>
> >>> Commit 71066545b48e4("driver core: Set fw_devlink.strict=1 by default")
> >>> default set fw_devlink to true. This has a side effect to i.MX uart
> >>> console. The sdma will make the i.MX8MP uart driver defer probe for some
> >>> time (~10s with i.MX8MP-EVK board) until sdma ready, because sdma is a
> >>> supplier with property dmas set in device tree node.
> >> I just tested this on an i.MX6 board and observed the same behaviour.
> >> The same will happen on any other i.MX board as well. This will also
> >> likely happen on any other SoC on which the UART driver uses dmaengine.
> >>
> >>> Since this uart is for console, we need log printed out as soon as
> >>> possible, so remove the dmas property for the uart console node.
> >> Fixing this at board level is not really an option because that means
> >> fixing each and every, at least i.MX board in the tree. Furthermore
> >> this would mean to bring the deleted property back in and to remove
> >> another dmas property should a user want to switch to another console
> >> port.
> >>
> >> For what it's worth: NACK for 71066545b48e4.
> > Hi Peng/Sascha/Fabio,
> >
> > I was looking at a fix for this (even when stdout-path isn't set in
> > DT) and looking at the older code (say, 5.18), and it looks like
> > before my recent changes the console would still only get probed
> > during late_initcall(). Does that match your experience?
>
> I could not get you. In driver, it is module init:
> module_init(imx_uart_init), not late_initcall.
>

Correct, the driver does use module_init(). However, because of how
driver_deferred_probe_check_state() is implemented in 5.18, the
console would get deferred probe until late_initcall(). In my earlier
email, I'm trying to get you to confirm my analysis is what you were
seeing in 5.18 (or 5.19-rcX without my series that deletes
driver_deferred_probe_check_state()).

-Saravana