[PATCH] Revert "driver core: Use mod_delayed_work to prevent lost deferred probe work"

Biju posted 1 patch 1 week, 6 days ago
drivers/base/dd.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
[PATCH] Revert "driver core: Use mod_delayed_work to prevent lost deferred probe work"
Posted by Biju 1 week, 6 days ago
From: Biju Das <biju.das.jz@bp.renesas.com>

Commit 1137838865bf ("driver core: Use mod_delayed_work to prevent lost
deferred probe work") introduced below regression on Renesas SMARC RZ/G2L
EVK:
 class_for_each_device called for class 'devlink' before it was registered
 WARNING: drivers/base/class.c:415 at class_for_each_device+0x12c/0x13c, CPU#1: kworker/1:1/26
 class_for_each_device+0x12c/0x13c (P)
 fw_devlink_probing_done+0x58/0xa0
 deferred_probe_timeout_work_func+0x5c/0xb8
 process_one_work+0x150/0x290
 worker_thread+0x18c/0x300
 kthread+0x114/0x120

Reverting the commit fixes the issue.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
 drivers/base/dd.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 172a02a438a2..5799a60fd058 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -323,10 +323,12 @@ void deferred_probe_extend_timeout(void)
 	 * If the work hasn't been queued yet or if the work expired, don't
 	 * start a new one.
 	 */
-	if (mod_delayed_work(system_wq, &deferred_probe_timeout_work,
-						 driver_deferred_probe_timeout))
+	if (cancel_delayed_work(&deferred_probe_timeout_work)) {
+		schedule_delayed_work(&deferred_probe_timeout_work,
+				driver_deferred_probe_timeout * HZ);
 		pr_debug("Extended deferred probe timeout by %d secs\n",
 					driver_deferred_probe_timeout);
+	}
 }
 
 /**
-- 
2.43.0
Re: [PATCH] Revert "driver core: Use mod_delayed_work to prevent lost deferred probe work"
Posted by Danilo Krummrich 1 week, 6 days ago
On 5/26/26 2:03 PM, Biju wrote:
> From: Biju Das <biju.das.jz@bp.renesas.com>
> 
> Commit 1137838865bf ("driver core: Use mod_delayed_work to prevent lost
> deferred probe work") introduced below regression on Renesas SMARC RZ/G2L
> EVK:
>  class_for_each_device called for class 'devlink' before it was registered
>  WARNING: drivers/base/class.c:415 at class_for_each_device+0x12c/0x13c, CPU#1: kworker/1:1/26
>  class_for_each_device+0x12c/0x13c (P)
>  fw_devlink_probing_done+0x58/0xa0
>  deferred_probe_timeout_work_func+0x5c/0xb8
>  process_one_work+0x150/0x290
>  worker_thread+0x18c/0x300
>  kthread+0x114/0x120
> 
> Reverting the commit fixes the issue.
There's already [1], which should also fix the issue.

Thanks,
Danilo

[1]
https://lore.kernel.org/driver-core/20260525012340.3860581-1-dakr@kernel.org/t/#u
Re: [PATCH] Revert "driver core: Use mod_delayed_work to prevent lost deferred probe work"
Posted by Geert Uytterhoeven 1 week, 6 days ago
Hi Danilo,

On Tue, 26 May 2026 at 14:09, Danilo Krummrich <dakr@kernel.org> wrote:
> On 5/26/26 2:03 PM, Biju wrote:
> > From: Biju Das <biju.das.jz@bp.renesas.com>
> >
> > Commit 1137838865bf ("driver core: Use mod_delayed_work to prevent lost
> > deferred probe work") introduced below regression on Renesas SMARC RZ/G2L
> > EVK:
> >  class_for_each_device called for class 'devlink' before it was registered
> >  WARNING: drivers/base/class.c:415 at class_for_each_device+0x12c/0x13c, CPU#1: kworker/1:1/26
> >  class_for_each_device+0x12c/0x13c (P)
> >  fw_devlink_probing_done+0x58/0xa0
> >  deferred_probe_timeout_work_func+0x5c/0xb8
> >  process_one_work+0x150/0x290
> >  worker_thread+0x18c/0x300
> >  kthread+0x114/0x120
> >
> > Reverting the commit fixes the issue.
> There's already [1], which should also fix the issue.

Thanks!

FTR, that patch is not sufficient to fix the WARNING (on RZ/Five)
for me: I need both patches from the series to get rid of the both
the warning thousands of "sync_state() pending due to" and
hundreds of "deferred probe pending" messages on other Renesas systems.

> [1]
> https://lore.kernel.org/driver-core/20260525012340.3860581-1-dakr@kernel.org/t/#u

Gr{oetje,eeting}s,

                        Geert


--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Re: [PATCH] Revert "driver core: Use mod_delayed_work to prevent lost deferred probe work"
Posted by Danilo Krummrich 1 week, 6 days ago
On Tue May 26, 2026 at 2:46 PM CEST, Geert Uytterhoeven wrote:
> Hi Danilo,
>
> On Tue, 26 May 2026 at 14:09, Danilo Krummrich <dakr@kernel.org> wrote:
>> On 5/26/26 2:03 PM, Biju wrote:
>> > From: Biju Das <biju.das.jz@bp.renesas.com>
>> >
>> > Commit 1137838865bf ("driver core: Use mod_delayed_work to prevent lost
>> > deferred probe work") introduced below regression on Renesas SMARC RZ/G2L
>> > EVK:
>> >  class_for_each_device called for class 'devlink' before it was registered
>> >  WARNING: drivers/base/class.c:415 at class_for_each_device+0x12c/0x13c, CPU#1: kworker/1:1/26
>> >  class_for_each_device+0x12c/0x13c (P)
>> >  fw_devlink_probing_done+0x58/0xa0
>> >  deferred_probe_timeout_work_func+0x5c/0xb8
>> >  process_one_work+0x150/0x290
>> >  worker_thread+0x18c/0x300
>> >  kthread+0x114/0x120
>> >
>> > Reverting the commit fixes the issue.
>> There's already [1], which should also fix the issue.
>
> Thanks!
>
> FTR, that patch is not sufficient to fix the WARNING (on RZ/Five)
> for me: I need both patches from the series to get rid of the both
> the warning thousands of "sync_state() pending due to" and
> hundreds of "deferred probe pending" messages on other Renesas systems.

Yes, with linking to [1] I meant both patches.

Thanks,
Danilo

>> [1]
>> https://lore.kernel.org/driver-core/20260525012340.3860581-1-dakr@kernel.org/t/#u