On Wed, Jun 22, 2022 at 12:40 PM Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > > On Wed, Jun 22, 2022 at 1:44 AM Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > > > > On Wed, Jun 22, 2022 at 9:48 AM Sascha Hauer <sha@xxxxxxxxxxxxxx> wrote: > > > > > This patch has the effect that console UART devices which have "dmas" > > > properties specified in the device tree get deferred for 10 to 20 > > > seconds. This happens on i.MX and likely on other SoCs as well. On i.MX > > > the dma channel is only requested at UART startup time and not at probe > > > time. dma is not used for the console. Nevertheless with this driver probe > > > defers until the dma engine driver is available. > > FYI, if most of the drivers are built in, you could set > deferred_probe_timeout=1 to reduce the impact of this (should drop > down to 1 to 2 seconds). Is that an option until we figure out > something better? > > Actually, why isn't earlyconsole being used? That doesn't get blocked > on anything and the main point of that is to have console working from > really early on. > > > > > > > It shouldn't go in as-is. > > > > This affects all machines with the PL011 UART and DMAs specified as > > well. > > > > It would be best if the console subsystem could be treated special and > > not require DMA devlink to be satisfied before probing. > > If we can mark the console devices somehow before their drivers probe > them, I can make fw_devlink give them special treatment. Is there any > way I could identify them before their drivers probe? > > > It seems devlink is not quite aware of the concept of resources that are > > necessary to probe vs resources that are nice to have and might be > > added after probe. > > Correct, it can't tell them apart. Which is why it tries its best to > enforce them, get most of them ordered properly and then gives up > enforcing the rest after deferred_probe_timeout= expires. There's a > bit more nuance than what I explained here (explained in earlier > commit texts, LPC talks), but that's the gist of it. That's what's > going on in this case Sascha is pointing out.z > > > We need a strong devlink for the first category > > and maybe a weak devlink for the latter category. > > > > I don't know if this is a generic hardware property for all operating > > systems so it could be a DT property such as dma-weak-dependency? > > > > Or maybe compromize and add a linux,dma-weak-dependency; > > property? > > The linux,dma-weak-dependency might be an option, but then if the > kernel version changes and we want to enforce it because we now have a > dma driver (not related to Shasha's example) support, then the > fw_devlink still can't enforce it because of that property. But maybe > that's okay? The consumer can try to use dma and defer probe if it > fails? > > Another option is to mark console devices in DT with some property and > we can give special treatment for those without waiting for > deferred_probe_timeout= to expire. Heh, looks like there's already a property for that: stdout-path. Let me send a series that'll use that to give special treatment to console devices. -Saravana