About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / watchdog / hpwdt.txt


Based on kernel version 4.16.1. Page generated on 2018-04-09 11:53 EST.

1	Last reviewed: 05/20/2016
2	
3	                     HPE iLO NMI Watchdog Driver
4	              NMI sourcing for iLO based ProLiant Servers
5	                     Documentation and Driver by
6	                         Thomas Mingarelli
7	
8	 The HPE iLO NMI Watchdog driver is a kernel module that provides basic
9	 watchdog functionality and the added benefit of NMI sourcing. Both the
10	 watchdog functionality and the NMI sourcing capability need to be enabled
11	 by the user. Remember that the two modes are not dependent on one another.
12	 A user can have the NMI sourcing without the watchdog timer and vice-versa.
13	 All references to iLO in this document imply it also works on iLO2 and all
14	 subsequent generations.
15	
16	 Watchdog functionality is enabled like any other common watchdog driver. That
17	 is, an application needs to be started that kicks off the watchdog timer. A
18	 basic application exists in tools/testing/selftests/watchdog/ named
19	 watchdog-test.c. Simply compile the C file and kick it off. If the system
20	 gets into a bad state and hangs, the HPE ProLiant iLO timer register will
21	 not be updated in a timely fashion and a hardware system reset (also known as
22	 an Automatic Server Recovery (ASR)) event will occur.
23	
24	 The hpwdt driver also has three (3) module parameters. They are the following:
25	
26	 soft_margin - allows the user to set the watchdog timer value.
27	               Default value is 30 seconds.
28	 allow_kdump - allows the user to save off a kernel dump image after an NMI.
29	               Default value is 1/ON
30	 nowayout    - basic watchdog parameter that does not allow the timer to
31	               be restarted or an impending ASR to be escaped.
32	               Default value is set when compiling the kernel. If it is set
33	               to "Y", then there is no way of disabling the watchdog once
34	               it has been started.
35	
36	 NOTE: More information about watchdog drivers in general, including the ioctl
37	       interface to /dev/watchdog can be found in
38	       Documentation/watchdog/watchdog-api.txt and Documentation/IPMI.txt.
39	
40	 The NMI sourcing capability is disabled by default due to the inability to
41	 distinguish between "NMI Watchdog Ticks" and "HW generated NMI events" in the
42	 Linux kernel. What this means is that the hpwdt nmi handler code is called
43	 each time the NMI signal fires off. This could amount to several thousands of
44	 NMIs in a matter of seconds. If a user sees the Linux kernel's "dazed and
45	 confused" message in the logs or if the system gets into a hung state, then
46	 the hpwdt driver can be reloaded.
47	
48	 1. If the kernel has not been booted with nmi_watchdog turned off then
49	    edit and place the nmi_watchdog=0 at the end of the currently booting
50	    kernel line. Depending on your Linux distribution and platform setup:
51	    For non-UEFI systems
52	       /boot/grub/grub.conf   or
53	       /boot/grub/menu.lst
54	    For UEFI systems
55	      /boot/efi/EFI/distroname/grub.conf   or
56	      /boot/efi/efi/distroname/elilo.conf
57	 2. reboot the sever
58	 3. Once the system comes up perform a modprobe -r hpwdt
59	 4. modprobe /lib/modules/`uname -r`/kernel/drivers/watchdog/hpwdt.ko
60	
61	 Now, the hpwdt can successfully receive and source the NMI and provide a log
62	 message that details the reason for the NMI (as determined by the HPE BIOS).
63	
64	 Below is a list of NMIs the HPE BIOS understands along with the associated
65	 code (reason):
66	
67		No source found                00h
68	
69		Uncorrectable Memory Error     01h
70	
71		ASR NMI                        1Bh
72	
73		PCI Parity Error               20h
74	
75		NMI Button Press               27h
76	
77		SB_BUS_NMI                     28h
78	
79		ILO Doorbell NMI               29h
80	
81		ILO IOP NMI                    2Ah
82	
83		ILO Watchdog NMI               2Bh
84	
85		Proc Throt NMI                 2Ch
86	
87		Front Side Bus NMI             2Dh
88	
89		PCI Express Error              2Fh
90	
91		DMA controller NMI             30h
92	
93		Hypertransport/CSI Error       31h
94	
95	
96	
97	 -- Tom Mingarelli
Hide Line Numbers


About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog