Re: 3.12: ethernet controller missing after resuming from suspend to RAM

From: Peter Wu
Date: Thu Feb 06 2014 - 16:09:24 EST


On Thursday 06 February 2014 00:42:51 Bastien Traverse wrote:
> I just used my Ethernet NIC for the first time on an up-to-date
> Archlinux; it was working fine until I suspended to RAM: on resume the
> Realtek/Ethernet device had completely disappeared.
>
> The two entries absent from lspci output after resume are:
> $ sudo lspci -v
[..]
> 03:00.2 Ethernet controller: Realtek Semiconductor Co., Ltd.
> RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0a)
> Subsystem: CLEVO/KAPOK Computer Device 0540
> Flags: bus master, fast devsel, latency 0, IRQ 45
> I/O ports at e000 [size=256]
> Memory at f0a04000 (64-bit, prefetchable) [size=4K]
> Memory at f0a00000 (64-bit, prefetchable) [size=16K]
> Capabilities: [40] Power Management version 3
> Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Capabilities: [70] Express Endpoint, MSI 01
> Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
> Capabilities: [d0] Vital Product Data
> Capabilities: [100] Advanced Error Reporting
> Capabilities: [160] Device Serial Number 02-00-00-00-68-4c-e0-00
> Kernel driver in use: r8169
> Kernel modules: r8169

I also have an affected laptop where the network and MMC controller
vanishes on resume. The laptop is also from Clevo, but a different
model: Clevo B7130. I had no issues with my custom kernel
configuration (latest version that I tested was 3.13.1), but at least
the stock Arch kernels from 3.12.2 up to 3.12.6 and 3.13.1 are
affected by this issue.

Reproduce with:

1. Boot system.
2. lspci -nnvt > lspci-nnvt.txt
3. Suspend system (lid close)
4. lspci -nnvt > lspci-nnvt2.txt
5. Observe missing network controller (see diff below).

--- boot-3.13.1/lspci-nnvt.txt 2014-02-06 17:11:07.070625446 +0100
+++ boot-3.13.1/lspci-nnvt2.txt 2014-02-06 17:11:19.843386871 +0100
@@ -11,10 +11,7 @@
+-1a.0 Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller [8086:3b3c]
+-1b.0 Intel Corporation 5 Series/3400 Series Chipset High Definition Audio [8086:3b56]
+-1c.0-[02-03]----00.0 NEC Corporation uPD720200 USB 3.0 Host Controller [1033:0194]
- +-1c.1-[04]--+-00.0 JMicron Technology Corp. SD/MMC Host Controller [197b:2382]
- | +-00.2 JMicron Technology Corp. Standard SD Host Controller [197b:2381]
- | +-00.3 JMicron Technology Corp. MS Host Controller [197b:2383]
- | \-00.5 JMicron Technology Corp. JMC250 PCI Express Gigabit Ethernet Controller [197b:0250]
+ +-1c.1-[04]--
+-1c.2-[05]----00.0 Intel Corporation Centrino Advanced-N 6200 [8086:422c]
+-1d.0 Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller [8086:3b34]
+-1e.0-[06]--

The only difference now is the kernel config. I guess that it comes
from CONFIG_HOTPLUG_PCI. In my non-broken config, it's unset. The
Arch kernel sets CONFIG_HOTPLUG_PCI=y (and also
CONFIG_HOTPLUG_PCI_ACPI=y).

That guess is based on the additional messages I see with the broken config:

[ 1.033628] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 1.033642] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
...
[ 102.704377] iwlwifi 0000:05:00.0: no hotplug settings from platform
[ 103.170193] xhci_hcd 0000:02:00.0: no hotplug settings from platform
[ 103.229008] iwlwifi 0000:05:00.0: no hotplug settings from platform

Before I start bisecting, do you have any ideas to debug this?

The stock config of Arch Linux kernel 3.13.1-2-ARCH can be found on:
https://projects.archlinux.org/svntogit/packages.git/tree/trunk/config.x86_64?h=packages/linux&id=0ea780ba731bd214db3007f57f54a3fad709a078

Regards,
Peter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/