Hi Tom,

On 16.09.22 23:48, Tom Rini wrote:

<snip>

Thanks for testing. I do have one last experiment for tonight. Please
give the attached v2 a try.

Thanks,
Stefan

 From 2f61bc2cf011190eedbc0be34b4d61f342e7e5a5 Mon Sep 17 00:00:00 2001
From: Stefan Roese <s...@denx.de>
Date: Fri, 16 Sep 2022 21:08:51 +0200
Subject: [PATCH v2] cyclic: Only call cyclic_run() from schedule() when it's
  ready

schedule() might get called very early in the boot process (SPL etc),
when the cyclic IF is not initialized. Let's make sure, that we only
call into cyclic_run() when it's ready.

Signed-off-by: Stefan Roese <s...@denx.de>
---
  common/cyclic.c | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/common/cyclic.c b/common/cyclic.c
index 594f9cd92592..b3c180bd1a62 100644
--- a/common/cyclic.c
+++ b/common/cyclic.c
@@ -104,7 +104,12 @@ void schedule(void)
        if (IS_ENABLED(CONFIG_HW_WATCHDOG))
                hw_watchdog_reset();
- cyclic_run();
+       /*
+        * schedule() might get called very early before the cyclic IF is
+        * ready. Make sure to only call cyclic_run() when it's initalized.
+        */
+       if (gd && gd->cyclic && gd->cyclic->cyclic_ready)
+               cyclic_run();
  }
int cyclic_uninit(void)

This worked and both boards that failed before now pass.

Perfect. Thanks again for testing.

I'll re-spin v2 of the patchset with this patch squashed in, so that
git bisect'ing will work.

Thanks,
Stefan

Reply via email to