From: "J. Neuschäfer" <[email protected]>

Interrupts need to be disabled before we jump into the OS, but currently
they're already disabled before we load/uncompress the image. This has
the inconvenient side effect of taking up a part of the watchdog time
budget, which can be rather large when the image is big. Ideally, we
want to leave a full watchdog time slice for the OS, so that it has
enough time to initialize its own watchdog driver. To ease the pressure,
disable interrupts (and with it, a timer interrupt that could service
the watchdog) after loading/uncompressing the OS image.

Signed-off-by: J. Neuschäfer <[email protected]>
---
 boot/bootm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/boot/bootm.c b/boot/bootm.c
index 4bdca22ea8c..fa4b53050b7 100644
--- a/boot/bootm.c
+++ b/boot/bootm.c
@@ -1015,7 +1015,6 @@ int bootm_run_states(struct bootm_info *bmi, int states)
 
        /* Load the OS */
        if (!ret && (states & BOOTM_STATE_LOADOS)) {
-               iflag = bootm_disable_interrupts();
                ret = bootm_load_os(images, 0);
                if (ret && ret != BOOTM_ERR_OVERLAP)
                        goto err;
@@ -1044,6 +1043,8 @@ int bootm_run_states(struct bootm_info *bmi, int states)
        }
 #endif
 
+       iflag = bootm_disable_interrupts();
+
        /* From now on, we need the OS boot function */
        if (ret)
                return ret;

---
base-commit: eb95914b9f5886b7ca0eaa2dbcd8a66bb8e5f81a
change-id: 20260329-bootm-wdt-c51187618e62

Best regards,
-- 
J. Neuschäfer <[email protected]>


Reply via email to