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 | |||
