Re: Uhhuh. NMI received for unknown reason 2c on CPU 0.

From: Jiri Slaby
Date: Wed Jan 30 2013 - 15:33:39 EST


On 01/30/2013 09:00 PM, Borislav Petkov wrote:
> On Wed, Jan 30, 2013 at 08:43:55PM +0100, Jiri Slaby wrote:
>> On 01/30/2013 06:44 PM, Borislav Petkov wrote:
>>> On Wed, Jan 30, 2013 at 10:27:42AM -0700, Bjorn Helgaas wrote:
>>>> You're right, I don't think we're quite ready to merge those patches.
>>>> But if your NMI is easy to reproduce, it might be worth removing
>>>> e1000e altogether to see if it still happens.
>>>
>>> That's the problem - I've seen it only once so far. I'll watch out for
>>> it and do the above when I find a reliable way of reproducing it. Will
>>> keep you posted.
>>
>> It happens here too. Dunno what is the root cause. I *think* that it
>> never happened unless I used ethernet. Other than that I see no pattern.
>>
>> Attaching -C 20 grep of messages over the last half year if there is
>> something that may help somehow.
>
> Cool, so it happens once a day, not every day, everytime during resume,
> and with e1000e. Can you try Bjorn's suggestion to remove e1000e
> altogether and see if it still happens?

No, e1000e is not to blame at all. I moved e1000e out of /lib/modules
and it still happens.

What is cool is that I have steps to reproduce:
1) boot
2) run the attached script (turn on all possible power savings -- in
fact everything what powertop suggests)
3) suspend to _disk_ (mem is not enough, BIOS apparently has to
interfere here)
4) resume from disk
5) boom

I tried to remove also wireless drivers, no change.

--
js
suse labs
#!/bin/bash

DIRTY_WB=1500
GOVERN=conservative
POWERMODE=auto
NMI=0
LINK_POW=min_power
POW_SAVE=1
POW_SAVE_TXT=on

if [ "0$1" -eq 1 ]; then
# DIRTY_WB=1500
GOVERN=performance
POWERMODE=on
NMI=1
LINK_POW=max_performance
POW_SAVE=0
POW_SAVE_TXT=off
fi

/bin/echo -n "$DIRTY_WB" > /proc/sys/vm/dirty_writeback_centisecs
/bin/echo -n "$NMI" > /proc/sys/kernel/nmi_watchdog
/bin/echo -n "$POW_SAVE" > /sys/module/snd_hda_intel/parameters/power_save
iw dev wlan0 set power_save "$POW_SAVE_TXT"
ethtool -s eth0 wol d

for BUS in usb pci; do
for DEV in /sys/bus/$BUS/devices/*/power/control; do
/bin/echo -n "$POWERMODE" > $DEV
done
done

for CPU in /sys/devices/system/cpu/*/cpufreq/scaling_governor; do
/bin/echo -n "$GOVERN" > $CPU
done

for HOST in /sys/class/scsi_host/host*/link_power_management_policy; do
/bin/echo -n "$LINK_POW" > $HOST
done