/* Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is
part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/
>. */
/* This header is separate from features.h so that the compiler can
include it implicitly at the start of every compilation. It must
not itself include <features.h> or any other header that includes
<features.h> because the implicit include comes before any feature
test macros that may be defined in a source file before it first
explicitly includes a system header. GCC knows the name of this
header in order to preinclude it. */
/* glibc’s intent is to support the IEC 559 math functionality, real
and complex. If the GCC (4.9 and later) predefined macros
specifying compiler intent are available, use them to determine
whether the overall intent is to support these features; otherwise,
presume an older compiler has intent to support these features and
define these macros by default. */
/* wchar_t uses ISO/IEC 10646 (2nd ed., published 2011-03-15) / Unicode
6.0. */
/* We do not support C11 <threads.h>. */
bmc-watchdog(8) manual page
Table of Contents
bmc-watchdog
- BMC watchdog timer daemon and control utility
bmc-watchdog command
[OPTION...] [COMMAND_OPTIONS...]
bmc-watchdog controls a Baseboard Management Controller (BMC)
watchdog timer. The bmc-watchdog tool typically executes as a cronjob or
daemon to manage the watchdog timer. A user must be root in order to run
bmc-watchdog.
Listed below are bmc-watchdog details, option details, examples,
and known issues. For a general introduction to FreeIPMI please see freeipmi(7)
.
A BMC watchdog timer is part of the Intelligent Platform
Management Interface (IPMI) specification and is only available to BMCs
that are compliant with IPMI. When a BMC watchdog timer is started, it begins
counting down to zero from some positive number of seconds. When the timer
hits zero, the timer will execute a pre-configured pre-timeout interrupt
and/or timeout action.
In order to stop the pre-timeout interrupt or timeout
action from being executed, the watchdog timer must be periodically reset
back to its initial beginning value.
The BMC watchdog timer automatically
stops itself when the machine is rebooted. Therefore, when a machine is
brought up, the BMC watchdog timer must be setup again before it can be
used.
Typically, a BMC watchdog timer is used to automatically reset a machine
that has crashed. When the operating system first starts up, the BMC timer
is set to its initial countdown value. At periodic intervals, when the operating
system is functioning properly, the watchdog timer can be reset by the
OS or a userspace program. Thus, the timer never counts down to zero. When
the system crashes, the timer cannot be reset by the OS or userspace program.
Eventually, the timer will countdown to zero and reset the machine.
See
EXAMPLES below for examples of how bmc-watchdog is commonly used.
The
following commands are available to bmc-watchdog.
- -s, --set
- Set BMC Watchdog
Configuration. BMC watchdog timer configuration values can be set using
the set command options listed below under SET OPTIONS. If a particular
configuration parameter is not specified on the command line, the current
configuration of that parameter will not be changed.
- -g, --get
- Get BMC Watchdog
Configuration and State. The current configuration and state is printed
to standard output.
- -r, --reset
- Reset BMC Watchdog Timer.
- -t, --start
- Start BMC
Watchdog Timer. Does nothing if the timer is currently running. Identical
to --reset command when the timer is stopped with the exception of the start
command options listed below under START OPTIONS.
- -y, --stop
- Stop BMC Watchdog
Timer. Stops the current timer.
- -c, --clear
- Clear BMC Watchdog Configuration.
Clears all configuration values for the watchdog timer, except for timer
use, which is kept at its current value.
- -d, --daemon
- Run bmc-watchdog as a
daemon. Configurable BMC watchdog timer options are listed below under DAEMON
OPTIONS. The configuration values are set once, then the daemon will reset
the timer at specified periodic intervals. The daemon can be stopped using
the --stop command, --clear command, or by setting the stop_timer flag on the
--set command.
The following options are general options for
configuring IPMI communication and executing general tool commands. These
options are generic and can be used by any command.
- -D IPMIDRIVER, --driver-type=IPMIDRIVER
- Specify the driver type to use instead of doing an auto selection. The currently
available inband drivers are KCS, SSIF, OPENIPMI, and SUNBMC.
- --disable-auto-probe
- Do not probe in-band IPMI devices for default settings.
- --driver-address=DRIVER-ADDRESS
- Specify the in-band driver address to be used instead of the probed value.
DRIVER-ADDRESS should be prefixed with "0x" for a hex value and ’0’ for an
octal value.
- --driver-device=DEVICE
- Specify the in-band driver device path to
be used instead of the probed path.
- --register-spacing=REGISTER-SPACING
- Specify
the in-band driver register spacing instead of the probed value. Argument
is in bytes (i.e. 32bit register spacing = 4)
- --target-channel-number=CHANNEL-NUMBERFR
- Specify the in-band driver target channel number to send IPMI requests to.
- --target-slave-address=SLAVE-ADDRESSFR
- Specify the in-band driver target slave
number to send IPMI requests to.
- -v, --verbose-logging
- Increase verbosity of
logging.
- -n, --no-logging
- Turns off all logging done by bmc-watchdog.
- --config-file=FILE
- Specify an alternate configuration file.
- -W WORKAROUNDS, --workaround-flags=WORKAROUNDS
- Specify workarounds to vendor compliance issues. Multiple workarounds can
be specified separated by commas. A special command line flag of "none",
will indicate no workarounds (may be useful for overriding configured defaults).
See WORKAROUNDS below for a list of available workarounds.
- --debug
- Turn on
debugging.
- -?, --help
- Output a help list and exit.
- --usage
- Output a usage message
and exit.
- -V, --version
- Output the program version and exit.
The
following options can be used by the set command to set or clear various
BMC watchdog configuration parameters.
- -u INT, --timer-use=INT
- Set timer use.
The timer use value can be set to one of the following: 1 = BIOS FRB2,
2 = BIOS POST, 3 = OS_LOAD, 4 = SMS OS, 5 = OEM.
- -m INT, --stop-timer=INT
- Set
Stop Timer Flag. A flag value of 0 stops the current BMC watchdog timer.
A value of 1 doesn’t turn off the current watchdog timer.
- -l INT, --log=INT
- Set Log Flag. A flag value of 0 turns logging on. A value of 1 turns logging
off.
- -a INT, --timeout-action=INT
- Set timeout action. The timeout action can
be set to one of the following: 0 = No action, 1 = Hard Reset, 2 = Power
Down, 3 = Power Cycle.
- -p INT, --pre-timeout-interrupt=INT
- Set pre-timeout interrupt.
The pre timeout interrupt can be set to one of the following: 0 = None,
1 = SMI, 2 = NMI, 3 = Messaging Interrupt.
- -z SECONDS, --pre-timeout-interval=SECONDS
- Set pre-timeout interval in seconds.
- -F, --clear-bios-frb2
- Clear BIOS FRB2 Timer
Use Flag.
- -P, --clear-bios-post
- Clear BIOS POST Timer Use Flag.
- -L, --clear-os-load
- Clear OS Load Timer Use Flag.
- -S, --clear-sms-os
- Clear SMS/OS Timer Use Flag.
- -O, --clear-oem
- Clear OEM Timer Use Flag.
- -i SECONDS, --initial-countdown=SECONDS
- Set initial countdown in seconds.
- -w, --start-after-set
- Start timer after set
command if timer is stopped. This is typically used when bmc-watchdog is
used as a cronjob. This can be used to automatically start the timer after
it has been set the first time.
- -x, --reset-after-set
- Reset timer after set command
if timer is running.
- -j, --start-if-stopped
- Don’t execute set command if timer
is stopped, just start timer.
- -k, --reset-if-running
- Don’t execute set command
if timer is running, just reset timer. This is typically used when bmc-watchdog
is used as a cronjob. This can be used to reset the timer after it has been
initially started.
The following options can be used by the
start command.
- -G INT, --gratuitous-arp=INT
- Suspend or don’t suspend gratuitous
ARPs while the BMC timer is running. A flag value of 1 suspends gratuitous
ARPs. A value of 0 will not suspend gratuitous ARPs. If this option is not
specified, gratuitous ARPs will not be suspended.
- -A INT, --arp-response=INT
- Suspend or don’t suspend BMC-generated ARP responses while the BMC timer
is running. A flag value of 1 suspends ARP responses. A value of 0 will not
suspend ARP responses. If this option is not specified, ARP responses will
not be suspended.
The following options can be used by the
daemon command to set the initial BMC watchdog configuration parameters.
- -u INT, --timer-use=INT
- Set timer use. The timer use value can be set to one
of the following: 1 = BIOS FRB2, 2 = BIOS POST, 3 = OS_LOAD, 4 = SMS OS,
5 = OEM.
- -l INT, --log=INT
- Set Log Flag. A flag value of 0 turns logging on.
A value of 1 turns logging off.
- -a INT, --timeout-action=INT
- Set timeout action.
The timeout action can be set to one of the following: 0 = No action, 1
= Hard Reset, 2 = Power Down, 3 = Power Cycle.
- -p INT, --pre-timeout-interrupt=INT
- Set pre-timeout interrupt. The pre timeout interrupt can be set to one of
the following: 0 = None, 1 = SMI, 2 = NMI, 3 = Messaging Interrupt.
- -z SECONDS,
--pre-timeout-interval=SECONDS
- Set pre-timeout interval in seconds.
- -F, --clear-bios-frb2
- Clear BIOS FRB2 Timer Use Flag.
- -P, --clear-bios-post
- Clear BIOS POST Timer Use
Flag.
- -L, --clear-os-load
- Clear OS Load Timer Use Flag.
- -S, --clear-sms-os
- Clear SMS/OS
Timer Use Flag.
- -O, --clear-oem
- Clear OEM Timer Use Flag.
- -i SECONDS, --initial-countdown=SECONDS
- Set initial countdown in seconds.
- -G INT, --gratuitous-arp=INT
- Suspend or don’t
suspend gratuitous ARPs while the BMC timer is running. A flag value of
1 suspends gratuitous ARPs. A value of 0 will not suspend gratuitous ARPs.
If this option is not specified, gratuitous ARPs will not be suspended.
- -A INT, --arp-response=INT
- Suspend or don’t suspend BMC-generated ARP responses
while the BMC timer is running. A flag value of 1 suspends ARP responses.
A value of 0 will not suspend ARP responses. If this option is not specified,
ARP responses will not be suspended.
- -e, --reset-period
- Time interval to wait
before resetting timer. The default is 60 seconds.
Errors are logged
to syslog.
With so many different vendors implementing their
own IPMI solutions, different vendors may implement their IPMI protocols
incorrectly. The following describes a number of workarounds currently available
to handle discovered compliance issues. When possible, workarounds have
been implemented so they will be transparent to the user. However, some
will require the user to specify a workaround be used via the -W option.
The hardware listed below may only indicate the hardware that a problem
was discovered on. Newer versions of hardware may fix the problems indicated
below. Similar machines from vendors may or may not exhibit the same problems.
Different vendors may license their firmware from the same IPMI firmware
developer, so it may be worthwhile to try workarounds listed below even
if your motherboard is not listed.
If you believe your hardware has an additional
compliance issue that needs a workaround to be implemented, please contact
the FreeIPMI maintainers on <freeipmi-users@gnu.org> or <freeipmi-devel@gnu.org>.
assumeio - This workaround flag will assume inband interfaces communicate
with system I/O rather than being memory-mapped. This will work around systems
that report invalid base addresses. Those hitting this issue may see "device
not supported" or "could not find inband device" errors. Issue observed
on HP ProLiant DL145 G1.
spinpoll - This workaround flag will inform some
inband drivers (most notably the KCS driver) to spin while polling rather
than putting the process to sleep. This may significantly improve the wall
clock running time of tools because an operating system scheduler’s granularity
may be much larger than the time it takes to perform a single IPMI message
transaction. However, by spinning, your system may be performing less useful
work by not contexting out the tool for a more useful task.
ignorestateflag
- This workaround option will ignore the BMC timer state flag (indicating
if the timer is running or stopped) when running in daemon mode. On some
BMCs, the flag is broken and will never report that a BMC timer is running,
even if it is. The workaround will take notice of changes in the countdown
seconds to determine if a timer is running or stopped. With this type of
implementation, the reset-period must be large enough to ensure minor fluctuations
in the countdown will not affect the workaround. Due to the implementation
of this workaround, if another process stops the watchdog timer, it may
be detectable. This option is confirmed to work around compliances issues
on Sun x4100, x4200, and x4500.
Setup a bmc-watchdog daemon that
resets the machine after 15 minutes (900 seconds) if the OS has crashed
(see default bmc-watchdog rc script /etc/init.d/bmc-watchdog for a more complete
example): bmc-watchdog -d -u 4 -p 0 -a 1 -i 900
Upon successful execution, exit status is 0. On error, exit
status is 1.
Bmc-watchdog may fail to reset the watchdog timer
if it is not scheduled properly. It is always recommended that bmc-watchdog
be executed with a high scheduling priority.
On some machines, the hardware
based SMI Handler may disable a processor after a watchdog timer timeout
if the timer use is set to something other than SMS/OS.
Report
bugs to <freeipmi-users@gnu.org> or <freeipmi-devel@gnu.org>.
Copyright
(C) 2007-2012 Lawrence Livermore National Security, LLC.
Copyright (C) 2004-2007 The Regents of the University of California.
This
program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.
freeipmi(7)
http://www.gnu.org/software/freeipmi/
Table of Contents