2007-10-24 18:21:06

by Kumar Gala

[permalink] [raw]
Subject: handling watchdog in SMP

I was hoping to get some ideas on how to handle the watchdog timers
we have on some embedded PPC (booke_wdt.c) cores when we are in a SMP
system.

The problem is since the watchdog is part of the processor core
depending on which processor a given system call is executed at we
might get different behavior. It seems like we would want to mirror
the actions to both cores (via smp_call_function).

Looking at the file ops we currently support in booke_wdt.c it seems
like we could mirror the actions for booke_wdt_write()/booke_wdt_ping
() to both cores and ensure when we set something like
WDIOC_SETTIMEOUT we set the registers in both processors.

I was wondering if anyone had any other ideas or if this model seems
to work.

- k


2007-10-25 19:31:23

by Wim Van Sebroeck

[permalink] [raw]
Subject: Re: handling watchdog in SMP

Hi Kumar,

> I was hoping to get some ideas on how to handle the watchdog timers
> we have on some embedded PPC (booke_wdt.c) cores when we are in a SMP
> system.
>
> The problem is since the watchdog is part of the processor core
> depending on which processor a given system call is executed at we
> might get different behavior. It seems like we would want to mirror
> the actions to both cores (via smp_call_function).
>
> Looking at the file ops we currently support in booke_wdt.c it seems
> like we could mirror the actions for booke_wdt_write()/booke_wdt_ping
> () to both cores and ensure when we set something like
> WDIOC_SETTIMEOUT we set the registers in both processors.
>
> I was wondering if anyone had any other ideas or if this model seems
> to work.

I see 2 ways to go:
1) short term: make sure that your actions are duplicated to both cores
(like you said). At least then you are protected if your complete system
crashes.
2) I'm working on the uniform/generic watchdog device driver. Phase 1 is
the "new" api and the /dev/watchdog handling. Phase 2 is a sysfs interface.
Phase 3 is to allow multiple devices (and there I'm still thinking about
how the /dev/watchdog interface should work).
But the general idea is to allow at least the control of each watchdog
device by the sysfs interface.

Greetings,
Wim.