On Fri, Jan 27, 2017 at 04:20:10PM +0000, BrĂ¼ns, Stefan wrote:
> > ...
> > +
> >  __efi_runtime_data struct bcm2835_wdog_regs *wdog_regs =
> >     (struct bcm2835_wdog_regs *)BCM2835_WDOG_PHYSADDR;
> > 
> > -void __efi_runtime reset_cpu(ulong addr)
> > +void __efi_runtime reset_cpu(ulong ticks)
> >  {
> > -   uint32_t rstc;
> > +   uint32_t rstc, timeout;
> > +
> > +   if (ticks == 0) {
> > +           hw_watchdog_disable();
> > +           timeout = RESET_TIMEOUT;
> 
> This is wrong. The efi runtime reset function calls this as reset_cpu(0), and 
> then tries to call hw_watchdog_disable, which is not marked as __efi_runtime.

Ok.
 
> Actually, I can see no reason the watchdog setup piggybacks on the reset_cpu 
> funtion.

Because there's a window after reset_cpu() is called but before real reset 
happens,
and if hw_watchdog_reset() is called in between, it breaks the reset procedure.

There must be a mechanism for reset_cpu() to disable the watchdog driver so it
won't interfere.

> 
> I think the rule is no new CONFIG_xxx options, but appropriate options in 
> KConfig.

I'll send a V2.
-- 
bye,
p.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to