[RFC] BOOKE watchdog and kexec

Kumar Gala galak at kernel.crashing.org
Wed May 23 16:10:59 EST 2007


On May 22, 2007, at 10:36 PM, Michael Ellerman wrote:

> On Tue, 2007-05-22 at 16:53 -0700, Dave Jiang wrote:
>> What would be the appropriate way to deal with the BOOKE watchdog  
>> in order to
>> properly kexec? The BOOKE watchdog cannot be disabled. With the  
>> current
>> implementation, a watchdog daemon in userland is required to poke the
>> /dev/watchdog continously in order to keep it from going off. In  
>> the kexec
>> situation, the watchdog daemon in userland goes away when the new  
>> kernel is
>> executed. It is very possible that the new kernel can potentially  
>> timeout on a
>> certain hardware device initialization (i.e. SCSI discovery/ 
>> timeout) and causes
>> the watchdog to go off and reset the hardware. The reset is of  
>> course not
>> wanted in this situation.
>>
>> Several solutions comes into mind:
>> 1. Have the kernel timer poke the watchdog. This would ensure  
>> situation
>> described above would never happen. I think x86 does this with NMI  
>> watchdog.
>>
>> 2. Have the watchdog driver spawn a kernel thread to poke the  
>> watchdog at a
>> periodic time. Or perhaps use the delayed-work mechanism to do that.
>>
>> 3. Set the highest bit of the watchdog register so that it does  
>> not expire for
>> 2^32 ticks.
>
> #3 sounds the easiest. You'd set it in machine_kexec_prepare() and  
> then
> have the second kernel restore a sane value. I assume 2^32 ticks is  
> long
> enough to boot?

I haven't looked at the 4xx side, but on fsl parts you can pick any  
of 64-bits in the time base as the transition point, so you should  
have enough time, however maybe setting it to something like the  
panic_timeout or make it configurable is the best choice.

However, I agree that just tweaking the time and restoring it the  
best option.

- k



More information about the Linuxppc-dev mailing list