Skip to content
Snippets Groups Projects
  1. Apr 27, 2021
    • Rasmus Villemoes's avatar
      allow opting out of WATCHDOG_RESET() from timer interrupt · 933ada56
      Rasmus Villemoes authored and Stefan Roese's avatar Stefan Roese committed
      
      Having WATCHDOG_RESET() called automatically from the timer interrupt
      runs counter to the idea of a watchdog device - if the board runs into
      an infinite loops with interrupts still enabled, the watchdog will
      never fire.
      
      When using CONFIG_(SPL_)WDT, the watchdog_reset function is a lot more
      complicated than just poking a few SOC-specific registers - it
      involves accessing all kinds of global data, and if the interrupt
      happens at the wrong time (say, in the middle of an WATCHDOG_RESET()
      call from ordinary code), that can end up corrupting said global data.
      
      Allow the board to opt out of calling WATCHDOG_RESET() from the timer
      interrupt handler by setting CONFIG_SYS_WATCHDOG_FREQ to 0 - as that
      setting is currently nonsensical (it would be compile-time
      divide-by-zero), it cannot affect any existing boards.
      
      Add documentation for both the existing and extended meaning of
      CONFIG_SYS_WATCHDOG_FREQ.
      
      Signed-off-by: default avatarRasmus Villemoes <rasmus.villemoes@prevas.dk>
      933ada56
    • Rasmus Villemoes's avatar
      timer: mpc83xx_timer: fix build with CONFIG_{HW_, }WATCHDOG · 21560162
      Rasmus Villemoes authored and Stefan Roese's avatar Stefan Roese committed
      
      The code, which is likely copied from arch/powerpc/lib/interrupts.c,
      lacks a fallback definition of CONFIG_SYS_WATCHDOG_FREQ and refers to
      a non-existing timestamp variable - obviously priv->timestamp is
      meant.
      
      Signed-off-by: default avatarRasmus Villemoes <rasmus.villemoes@prevas.dk>
      21560162
    • Rasmus Villemoes's avatar
      watchdog: use time_after_eq() in watchdog_reset() · 7dd2097e
      Rasmus Villemoes authored and Stefan Roese's avatar Stefan Roese committed
      
      Some boards don't work with the rate-limiting done in the generic
      watchdog_reset() provided by wdt-uclass.
      
      For example, on powerpc, get_timer() ceases working during bootm since
      interrupts are disabled before the kernel image gets decompressed, and
      when the decompression takes longer than the watchdog device
      allows (or enough of the budget that the kernel doesn't get far enough
      to assume responsibility for petting the watchdog), the result is a
      non-booting board.
      
      As a somewhat hacky workaround (because DT is supposed to describe
      hardware), allow specifying hw_margin_ms=0 in device tree to
      effectively disable the ratelimiting and actually ping the watchdog
      every time watchdog_reset() is called. For that to work, the "has
      enough time passed" check just needs to be tweaked a little to allow
      the now==next_reset case as well.
      
      Suggested-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
      Signed-off-by: default avatarRasmus Villemoes <rasmus.villemoes@prevas.dk>
      Reviewed-by: default avatarStefan Roese <sr@denx.de>
      7dd2097e
    • Tom Rini's avatar
      Prepare v2021.07-rc1 · ff8cb34d
      Tom Rini authored
      
      Signed-off-by: default avatarTom Rini <trini@konsulko.com>
      ff8cb34d
  2. Apr 26, 2021
  3. Apr 25, 2021
  4. Apr 24, 2021
  5. Apr 23, 2021
Loading