[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <51c340c5-b104-4872-bfdc-8c6d52f6a35a@denx.de>
Date: Wed, 25 Sep 2024 19:07:19 +0200
From: Marek Vasut <marex@...x.de>
To: Arnd Bergmann <arnd@...db.de>, linux-arm-kernel@...ts.infradead.org
Cc: kernel@...electronics.com,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
Fabio Estevam <festevam@...il.com>, Jeff Johnson
<quic_jjohnson@...cinc.com>, Neil Armstrong <neil.armstrong@...aro.org>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Saravana Kannan <saravanak@...gle.com>, Sascha Hauer
<s.hauer@...gutronix.de>, Shawn Guo <shawnguo@...nel.org>,
imx@...ts.linux.dev, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] soc: imx8m: Probe the SoC driver late
On 9/25/24 6:31 PM, Arnd Bergmann wrote:
> On Wed, Sep 25, 2024, at 16:09, Marek Vasut wrote:
>> On 9/25/24 6:04 PM, Arnd Bergmann wrote:
>>> On Wed, Sep 25, 2024, at 16:00, Marek Vasut wrote:
>>>> With driver_async_probe=* on kernel command line, the following trace is
>>>> produced because on i.MX8M Plus hardware because the soc-imx8m.c driver
>>>> calls of_clk_get_by_name() which returns -EPROBE_DEFER because the clock
>>>> driver is not yet probed. This was not detected during regular testing
>>>> without driver_async_probe.
>>>>
>>>> Attempt to fix it by probing the SoC driver late, but I don't think that
>>>> is the correct approach here.
>>>
>>> I think the correct fix would be to propagate the -EPROBE_DEFER
>>> and return that from imx8_soc_init(), so it gets retried again
>>> after the clock driver.
>> I already tried that, but if I return -EPROBE_DEFER from
>> device_initcall, it doesn't get retriggered . I suspect EPROBE_DEFER
>> works only for proper drivers ?
>
> Right, of course. And unfortunately it can't just register to
> the fsl,imx8mm-anatop/fsl,imx8mm-ocotp/... nodes because they
> all have a driver already.
>
> On the other hand, making it a late_initcall() defeats the
> purpose of the driver because then it can't be used by other
> drivers with soc_device_match(), resulting in incorrect
> behavior when another driver relies on this to enable
> a chip revision specific workaround.
I know, I am unsure how to proceed with this. Convert this to
platform_driver or some such and probe it early maybe ?
Powered by blists - more mailing lists