Re: PROBLEM: Marvell 88E8040 (sky2) fails after hibernation

From: Octavio Alvarez
Date: Mon Jul 15 2019 - 12:40:36 EST


On 6/27/19 9:38 AM, Thomas Gleixner wrote:
I did two tests:

If I boot with sky2.disable_msi=1 on the kernel cmdline then the problem goes
away (when back from hibernation, the NIC works OK).

If I boot regularly (disable_msi not set) and then do modprobe -r sky2;
modprobe sky2 disable_msi=1, the problem stays (when back from hibernation,
the NIC does not work).

Interesting. Did you verify that the driver still uses INTx after
hibernation in /proc/interrupts?

cat /proc/interrupts | grep eth0

The 6st column should show IO-APIC for INTx. If it shows PCI-MSI then
something went wrong

Hi, Thomas,

If I reboot with sky2.disable_msi=1, then I get IO-APIC and the bug does not occur:

19: 0 0 0 0 IO-APIC 19-fasteoi eth0

However, if I reboot without sky2.disable_msi=1 it properly starts as PCI-MSI and then, after re-modprobing it it goes to IO-APIC, but the bug occurs anyway:

$ cat /proc/interrupts | grep eth
27: 0 1 0 0 PCI-MSI 3145728-edge eth0

$ sudo modprobe -r sky2
[sudo] password for alvarezp:

$ sudo modprobe sky2 disable_msi=1

$ # hibernating and coming back hibernation

$ cat /proc/interrupts | grep eth
19: 0 0 0 0 IO-APIC 19-fasteoi eth0


Also please check Linus suspicion about the module being reloaded after
hibernation through some distro magic.

This is not happening. Each time the driver is loaded the message "sky2: driver version 1.30" is shown.

I confirm only 1 line for the sky2.disable_msi=1 from kernel boot and only 2 lines for re-modprobing.

Best regards,
Octavio.