On Sun, Feb 11, 2018 at 10:21:03PM -0700, Jerry Hoemann wrote: > Include the nmistat in the nmi_panic message to give support > an indication why the NMI was called (e.g. a timeout or generate > nmi button.) > > Signed-off-by: Jerry Hoemann <jerry.hoemann@xxxxxxx> > --- > drivers/watchdog/hpwdt.c | 27 +++++++++++++++++++-------- > 1 file changed, 19 insertions(+), 8 deletions(-) > > diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c > index 20a13c5d0285..6f7949ef9a23 100644 > --- a/drivers/watchdog/hpwdt.c > +++ b/drivers/watchdog/hpwdt.c > @@ -108,24 +108,35 @@ static int hpwdt_my_nmi(void) > return ioread8(hpwdt_nmistat) & 0x6; > } > > +static inline int hexdigit(int v) > +{ > + return (v > 9) ? (v-9+'A') : (v+'0'); > +} > + > /* > * NMI Handler > */ > static int hpwdt_pretimeout(unsigned int ulReason, struct pt_regs *regs) > { > - if ((ulReason == NMI_UNKNOWN) && !hpwdt_my_nmi()) > + unsigned int mynmi = hpwdt_my_nmi(); > + static char panic_msg[] = > + "00: An NMI occurred. Depending on your system the reason " > + "for the NMI is logged in any one of the following resources:\n" > + "1. Integrated Management Log (IML)\n" > + "2. OA Syslog\n" > + "3. OA Forward Progress Log\n" > + "4. iLO Event Log"; > + > + if ((ulReason == NMI_UNKNOWN) && !mynmi) > return NMI_DONE; > > if (allow_kdump) > hpwdt_stop(); > > - nmi_panic(regs, "An NMI occurred. Depending on your system the reason " > - "for the NMI is logged in any one of the following " > - "resources:\n" > - "1. Integrated Management Log (IML)\n" > - "2. OA Syslog\n" > - "3. OA Forward Progress Log\n" > - "4. iLO Event Log"); > + panic_msg[0] = hexdigit((mynmi>>4)&0xf); > + panic_msg[1] = hexdigit(mynmi&0xf); No need to reinvent the wheel. panic_msg[0] = hex_asc_hi(mynmi); panic_msg[1] = hex_asc_lo(mynmi); or even better hex_byte_pack(panic_msg, mynmi); There are matching _upper functions if you prefer A..F instead of a..f. Guenter -- To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html