Re: [PATCH] r8169: don't use MSI-X on RTL8106e
From: Jian-Hong Pan <hidden>
Date: 2018-08-27 10:47:27
Also in:
linux-pci, lkml
2018-08-23 21:38 GMT+08:00 Bjorn Helgaas [off-list ref]:
On Thu, Aug 23, 2018 at 06:46:28PM +0800, Jian-Hong Pan wrote:quoted
quoted
On 22.08.2018 13:44, Thomas Gleixner wrote:quoted
Can you please do the following:Tested on ASUS X441AUR equipped with RTL8106e. This is the laptop whose ethernet does not come back after resume, if it does not fallback to MSI. ...quoted
dev@endless:~$ sudo lspci -xnnvvs 02:00.0 ... 00: ec 10 36 81 07 04 10 00 07 00 00 02 10 00 00 00 10: 01 e0 00 00 00 00 00 00 04 00 10 ef 00 00 00 00 20: 0c 00 00 e0 00 00 00 00 00 00 00 00 43 10 0f 20 30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 00 00 After comparing, there is no difference between before suspend and after resume.It'd be better to compare the hex data directly and ignore the lspci decoding, since lspci doesn't decode everything. You only dumped the first 0x40 bytes of config space, and all capabilities, including the MSI and MSI-X capabilities, are past that:quoted
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+ Capabilities: [b0] MSI-X: Enable+ Count=4 Masked- Vector table: BAR=4 offset=00000000 PBA: BAR=4 offset=00000800In addition, some of the MSI-X information for this device is in BAR 4. "lspci -xxx" will dump all config space, and you can use a tool like http://cmp.felk.cvut.cz/~pisa/linux/rdwrmem.c or https://github.com/billfarrow/pcimem to dump the BAR contents.
Tested on ASUS X441AUR equipped with RTL8106e without fallbacking to MSI again. Use lspci and https://github.com/billfarrow/pcimem Here is the status before suspend: dev@endless:~$ sudo lspci -xxxs 02:00.0 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller (rev 07) 00: ec 10 36 81 07 04 10 00 07 00 00 02 10 00 00 00 10: 01 e0 00 00 00 00 00 00 04 00 10 ef 00 00 00 00 20: 0c 00 00 e0 00 00 00 00 00 00 00 00 43 10 0f 20 30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 00 00 40: 01 50 c3 ff 08 00 00 00 00 00 00 00 00 00 00 00 50: 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 10 b0 02 02 c0 8d 90 05 10 20 10 00 11 7c 47 00 80: 42 01 11 10 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 1f 08 0c 00 00 04 00 00 02 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 11 d0 03 80 04 00 00 00 04 08 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dev@endless:~$ sudo ~/pcimem/pcimem /sys/devices/pci0000\:00/0000\:00\:1c.4/0000\:02\:00.0/resource4 0 b*16384 [sudo] password for dev: /sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.0/resource4 opened. Target offset is 0x0, page size is 4096 mmap(0, 16384, 0x3, 0x1, 3, 0x0) PCI Memory mapped to address 0x7f15186d1000. 0x0000: 0x38 0x0001: 0x03 0x0002: 0xE0 0x0003: 0xFE 0x0004: 0x00 ... 0x0010: 0x41 0x0011: 0x72 . . . 0x003C: 0x01 0x003D: 0x00 ... 0x1000: 0x38 0x1001: 0x03 . . . After resume: dev@endless:~$ sudo lspci -xxxs 02:00.0 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller (rev 07) 00: ec 10 36 81 07 04 10 00 07 00 00 02 10 00 00 00 10: 01 e0 00 00 00 00 00 00 04 00 10 ef 00 00 00 00 20: 0c 00 00 e0 00 00 00 00 00 00 00 00 43 10 0f 20 30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 00 00 40: 01 50 c3 ff 08 00 00 00 00 00 00 00 00 00 00 00 50: 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 10 b0 02 02 c0 8d 90 05 10 20 10 00 11 7c 47 00 80: 42 01 11 10 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 1f 08 0c 00 00 04 00 00 02 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 11 d0 03 80 04 00 00 00 04 08 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dev@endless:~$ sudo ~/pcimem/pcimem /sys/devices/pci0000\:00/0000\:00\:1c.4/0000\:02\:00.0/resource4 0 b*16384 /sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.0/resource4 opened. Target offset is 0x0, page size is 4096 mmap(0, 16384, 0x3, 0x1, 3, 0x0) PCI Memory mapped to address 0x7f8d68dd5000. 0x0000: 0xFF ... The config is the same, but values in BAR=4 is weird after resume. They all become 0xFF. Regards, Jian-Hong Pan