]>
Commit | Line | Data |
---|---|---|
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 |