diff options
Diffstat (limited to 'Documentation/watchdog/watchdog-api.txt')
-rw-r--r-- | Documentation/watchdog/watchdog-api.txt | 236 |
1 files changed, 13 insertions, 223 deletions
diff --git a/Documentation/watchdog/watchdog-api.txt b/Documentation/watchdog/watchdog-api.txt index 8d16f6f3c4ec..bb7cb1d31ec7 100644 --- a/Documentation/watchdog/watchdog-api.txt +++ b/Documentation/watchdog/watchdog-api.txt | |||
@@ -1,3 +1,6 @@ | |||
1 | Last reviewed: 10/05/2007 | ||
2 | |||
3 | |||
1 | The Linux Watchdog driver API. | 4 | The Linux Watchdog driver API. |
2 | 5 | ||
3 | Copyright 2002 Christer Weingel <wingel@nano-system.com> | 6 | Copyright 2002 Christer Weingel <wingel@nano-system.com> |
@@ -22,7 +25,7 @@ the system. If userspace fails (RAM error, kernel bug, whatever), the | |||
22 | notifications cease to occur, and the hardware watchdog will reset the | 25 | notifications cease to occur, and the hardware watchdog will reset the |
23 | system (causing a reboot) after the timeout occurs. | 26 | system (causing a reboot) after the timeout occurs. |
24 | 27 | ||
25 | The Linux watchdog API is a rather AD hoc construction and different | 28 | The Linux watchdog API is a rather ad-hoc construction and different |
26 | drivers implement different, and sometimes incompatible, parts of it. | 29 | drivers implement different, and sometimes incompatible, parts of it. |
27 | This file is an attempt to document the existing usage and allow | 30 | This file is an attempt to document the existing usage and allow |
28 | future driver writers to use it as a reference. | 31 | future driver writers to use it as a reference. |
@@ -46,14 +49,16 @@ some of the drivers support the configuration option "Disable watchdog | |||
46 | shutdown on close", CONFIG_WATCHDOG_NOWAYOUT. If it is set to Y when | 49 | shutdown on close", CONFIG_WATCHDOG_NOWAYOUT. If it is set to Y when |
47 | compiling the kernel, there is no way of disabling the watchdog once | 50 | compiling the kernel, there is no way of disabling the watchdog once |
48 | it has been started. So, if the watchdog daemon crashes, the system | 51 | it has been started. So, if the watchdog daemon crashes, the system |
49 | will reboot after the timeout has passed. | 52 | will reboot after the timeout has passed. Watchdog devices also usually |
53 | support the nowayout module parameter so that this option can be controlled | ||
54 | at runtime. | ||
50 | 55 | ||
51 | Some other drivers will not disable the watchdog, unless a specific | 56 | Drivers will not disable the watchdog, unless a specific magic character 'V' |
52 | magic character 'V' has been sent /dev/watchdog just before closing | 57 | has been sent /dev/watchdog just before closing the file. If the userspace |
53 | the file. If the userspace daemon closes the file without sending | 58 | daemon closes the file without sending this special character, the driver |
54 | this special character, the driver will assume that the daemon (and | 59 | will assume that the daemon (and userspace in general) died, and will stop |
55 | userspace in general) died, and will stop pinging the watchdog without | 60 | pinging the watchdog without disabling it first. This will then cause a |
56 | disabling it first. This will then cause a reboot. | 61 | reboot if the watchdog is not re-opened in sufficient time. |
57 | 62 | ||
58 | The ioctl API: | 63 | The ioctl API: |
59 | 64 | ||
@@ -227,218 +232,3 @@ The following options are available: | |||
227 | 232 | ||
228 | [FIXME -- better explanations] | 233 | [FIXME -- better explanations] |
229 | 234 | ||
230 | Implementations in the current drivers in the kernel tree: | ||
231 | |||
232 | Here I have tried to summarize what the different drivers support and | ||
233 | where they do strange things compared to the other drivers. | ||
234 | |||
235 | acquirewdt.c -- Acquire Single Board Computer | ||
236 | |||
237 | This driver has a hardcoded timeout of 1 minute | ||
238 | |||
239 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
240 | |||
241 | GETSUPPORT returns KEEPALIVEPING. GETSTATUS will return 1 if | ||
242 | the device is open, 0 if not. [FIXME -- isn't this rather | ||
243 | silly? To be able to use the ioctl, the device must be open | ||
244 | and so GETSTATUS will always return 1]. | ||
245 | |||
246 | advantechwdt.c -- Advantech Single Board Computer | ||
247 | |||
248 | Timeout that defaults to 60 seconds, supports SETTIMEOUT. | ||
249 | |||
250 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
251 | |||
252 | GETSUPPORT returns WDIOF_KEEPALIVEPING and WDIOF_SETTIMEOUT. | ||
253 | The GETSTATUS call returns if the device is open or not. | ||
254 | [FIXME -- silliness again?] | ||
255 | |||
256 | booke_wdt.c -- PowerPC BookE Watchdog Timer | ||
257 | |||
258 | Timeout default varies according to frequency, supports | ||
259 | SETTIMEOUT | ||
260 | |||
261 | Watchdog cannot be turned off, CONFIG_WATCHDOG_NOWAYOUT | ||
262 | does not make sense | ||
263 | |||
264 | GETSUPPORT returns the watchdog_info struct, and | ||
265 | GETSTATUS returns the supported options. GETBOOTSTATUS | ||
266 | returns a 1 if the last reset was caused by the | ||
267 | watchdog and a 0 otherwise. This watchdog cannot be | ||
268 | disabled once it has been started. The wdt_period kernel | ||
269 | parameter selects which bit of the time base changing | ||
270 | from 0->1 will trigger the watchdog exception. Changing | ||
271 | the timeout from the ioctl calls will change the | ||
272 | wdt_period as defined above. Finally if you would like to | ||
273 | replace the default Watchdog Handler you can implement the | ||
274 | WatchdogHandler() function in your own code. | ||
275 | |||
276 | eurotechwdt.c -- Eurotech CPU-1220/1410 | ||
277 | |||
278 | The timeout can be set using the SETTIMEOUT ioctl and defaults | ||
279 | to 60 seconds. | ||
280 | |||
281 | Also has a module parameter "ev", event type which controls | ||
282 | what should happen on a timeout, the string "int" or anything | ||
283 | else that causes a reboot. [FIXME -- better description] | ||
284 | |||
285 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
286 | |||
287 | GETSUPPORT returns CARDRESET and WDIOF_SETTIMEOUT but | ||
288 | GETSTATUS is not supported and GETBOOTSTATUS just returns 0. | ||
289 | |||
290 | i810-tco.c -- Intel 810 chipset | ||
291 | |||
292 | Also has support for a lot of other i8x0 stuff, but the | ||
293 | watchdog is one of the things. | ||
294 | |||
295 | The timeout is set using the module parameter "i810_margin", | ||
296 | which is in steps of 0.6 seconds where 2<i810_margin<64. The | ||
297 | driver supports the SETTIMEOUT ioctl. | ||
298 | |||
299 | Supports CONFIG_WATCHDOG_NOWAYOUT. | ||
300 | |||
301 | GETSUPPORT returns WDIOF_SETTIMEOUT. The GETSTATUS call | ||
302 | returns some kind of timer value which ist not compatible with | ||
303 | the other drivers. GETBOOT status returns some kind of | ||
304 | hardware specific boot status. [FIXME -- describe this] | ||
305 | |||
306 | ib700wdt.c -- IB700 Single Board Computer | ||
307 | |||
308 | Default timeout of 30 seconds and the timeout is settable | ||
309 | using the SETTIMEOUT ioctl. Note that only a few timeout | ||
310 | values are supported. | ||
311 | |||
312 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
313 | |||
314 | GETSUPPORT returns WDIOF_KEEPALIVEPING and WDIOF_SETTIMEOUT. | ||
315 | The GETSTATUS call returns if the device is open or not. | ||
316 | [FIXME -- silliness again?] | ||
317 | |||
318 | machzwd.c -- MachZ ZF-Logic | ||
319 | |||
320 | Hardcoded timeout of 10 seconds | ||
321 | |||
322 | Has a module parameter "action" that controls what happens | ||
323 | when the timeout runs out which can be 0 = RESET (default), | ||
324 | 1 = SMI, 2 = NMI, 3 = SCI. | ||
325 | |||
326 | Supports CONFIG_WATCHDOG_NOWAYOUT and the magic character | ||
327 | 'V' close handling. | ||
328 | |||
329 | GETSUPPORT returns WDIOF_KEEPALIVEPING, and the GETSTATUS call | ||
330 | returns if the device is open or not. [FIXME -- silliness | ||
331 | again?] | ||
332 | |||
333 | mixcomwd.c -- MixCom Watchdog | ||
334 | |||
335 | [FIXME -- I'm unable to tell what the timeout is] | ||
336 | |||
337 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
338 | |||
339 | GETSUPPORT returns WDIOF_KEEPALIVEPING, GETSTATUS returns if | ||
340 | the device is opened or not [FIXME -- I'm not really sure how | ||
341 | this works, there seems to be some magic connected to | ||
342 | CONFIG_WATCHDOG_NOWAYOUT] | ||
343 | |||
344 | pcwd.c -- Berkshire PC Watchdog | ||
345 | |||
346 | Hardcoded timeout of 1.5 seconds | ||
347 | |||
348 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
349 | |||
350 | GETSUPPORT returns WDIOF_OVERHEAT|WDIOF_CARDRESET and both | ||
351 | GETSTATUS and GETBOOTSTATUS return something useful. | ||
352 | |||
353 | The SETOPTIONS call can be used to enable and disable the card | ||
354 | and to ask the driver to call panic if the system overheats. | ||
355 | |||
356 | sbc60xxwdt.c -- 60xx Single Board Computer | ||
357 | |||
358 | Hardcoded timeout of 10 seconds | ||
359 | |||
360 | Does not support CONFIG_WATCHDOG_NOWAYOUT, but has the magic | ||
361 | character 'V' close handling. | ||
362 | |||
363 | No bits set in GETSUPPORT | ||
364 | |||
365 | scx200.c -- National SCx200 CPUs | ||
366 | |||
367 | Not in the kernel yet. | ||
368 | |||
369 | The timeout is set using a module parameter "margin" which | ||
370 | defaults to 60 seconds. The timeout can also be set using | ||
371 | SETTIMEOUT and read using GETTIMEOUT. | ||
372 | |||
373 | Supports a module parameter "nowayout" that is initialized | ||
374 | with the value of CONFIG_WATCHDOG_NOWAYOUT. Also supports the | ||
375 | magic character 'V' handling. | ||
376 | |||
377 | shwdt.c -- SuperH 3/4 processors | ||
378 | |||
379 | [FIXME -- I'm unable to tell what the timeout is] | ||
380 | |||
381 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
382 | |||
383 | GETSUPPORT returns WDIOF_KEEPALIVEPING, and the GETSTATUS call | ||
384 | returns if the device is open or not. [FIXME -- silliness | ||
385 | again?] | ||
386 | |||
387 | softdog.c -- Software watchdog | ||
388 | |||
389 | The timeout is set with the module parameter "soft_margin" | ||
390 | which defaults to 60 seconds, the timeout is also settable | ||
391 | using the SETTIMEOUT ioctl. | ||
392 | |||
393 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
394 | |||
395 | WDIOF_SETTIMEOUT bit set in GETSUPPORT | ||
396 | |||
397 | w83877f_wdt.c -- W83877F Computer | ||
398 | |||
399 | Hardcoded timeout of 30 seconds | ||
400 | |||
401 | Does not support CONFIG_WATCHDOG_NOWAYOUT, but has the magic | ||
402 | character 'V' close handling. | ||
403 | |||
404 | No bits set in GETSUPPORT | ||
405 | |||
406 | w83627hf_wdt.c -- w83627hf watchdog | ||
407 | |||
408 | Timeout that defaults to 60 seconds, supports SETTIMEOUT. | ||
409 | |||
410 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
411 | |||
412 | GETSUPPORT returns WDIOF_KEEPALIVEPING and WDIOF_SETTIMEOUT. | ||
413 | The GETSTATUS call returns if the device is open or not. | ||
414 | |||
415 | wdt.c -- ICS WDT500/501 ISA and | ||
416 | wdt_pci.c -- ICS WDT500/501 PCI | ||
417 | |||
418 | Default timeout of 60 seconds. The timeout is also settable | ||
419 | using the SETTIMEOUT ioctl. | ||
420 | |||
421 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
422 | |||
423 | GETSUPPORT returns with bits set depending on the actual | ||
424 | card. The WDT501 supports a lot of external monitoring, the | ||
425 | WDT500 much less. | ||
426 | |||
427 | wdt285.c -- Footbridge watchdog | ||
428 | |||
429 | The timeout is set with the module parameter "soft_margin" | ||
430 | which defaults to 60 seconds. The timeout is also settable | ||
431 | using the SETTIMEOUT ioctl. | ||
432 | |||
433 | Does not support CONFIG_WATCHDOG_NOWAYOUT | ||
434 | |||
435 | WDIOF_SETTIMEOUT bit set in GETSUPPORT | ||
436 | |||
437 | wdt977.c -- Netwinder W83977AF chip | ||
438 | |||
439 | Hardcoded timeout of 3 minutes | ||
440 | |||
441 | Supports CONFIG_WATCHDOG_NOWAYOUT | ||
442 | |||
443 | Does not support any ioctls at all. | ||
444 | |||