Description of problem: lspci does not display extended configuration registers lspci -vvxxxx is supposed to display extended configuration registers for PCI-Express devices that have them -- i.e., configuration information past the first 64 bytes. On our machine, "lspci -s 02:00.0 -vvxxxx" displays only the standard PCI configuration registers, but not the extended ones. This is when using Fedora 8 -- Fedora 6 works just fine. The machine uses the Intel E7520 MCH as its chipset. Version-Release number of selected component (if applicable): 2.2.6 (output of "lspci --version") (Older version, which works, is 2.2.3) How reproducible: Every time Steps to Reproduce: 1. lspci -s 02:00.0 -vvxxxx Actual results: 00:02.0 PCI bridge: Intel Corporation E7525/E7520/E7320 PCI Express Port A (rev 0c) (prog-if 00 [Normal decode]) Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0, Cache Line Size: 64 bytes etc. etc. c0: 00 00 00 00 30 00 0c 00 01 00 08 00 00 00 00 00 d0: 00 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: 82 20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 Expected results: Same thing, but showing offsets from 100 in addition. Additional info: Any suggestions for diagnosing this would be welcome.
lspci reads from sysfs and sysfs only seems to provide the first 256 bytes. So, this can be a kernel bug. $ sudo strace -e pread /sbin/lspci -s 00:1c.4 -xxxx pread(3, "\206\200\340\'\7\5\20\0\1\0\4\6\20\0\201\0\0\0\0\0\0\0\0\0\0\3\3\0\360\0\0 "..., 64, 0) = 64 00:1c.4 PCI bridge: Intel Corporation 82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 (rev 01) pread(3, "\20\200A\1\300\17\0\0\17\0\20\0\21$\21\5@\0\1\20`\5\10\0\0\0\0\0\0\0\0\0"..., 192, 64) = 192 pread(3, "", 3840, 256) = 0 as you can see... pread(3, "", 3840, 256) = 0 # hexdump -C /sys/bus/pci/devices/0000\:00\:1c.4/config 00000000 86 80 e0 27 07 05 10 00 01 00 04 06 10 00 81 00 |...'............| 00000010 00 00 00 00 00 00 00 00 00 03 03 00 f0 00 00 20 |............... | 00000020 f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 40 00 00 00 00 00 00 00 0b 01 02 00 |....@...........| 00000040 10 80 41 01 c0 0f 00 00 0f 00 10 00 11 24 11 05 |..A..........$..| 00000050 40 00 01 10 60 05 08 00 00 00 00 00 00 00 00 00 |@...`...........| 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000080 05 90 01 00 0c f0 e0 fe 69 41 00 00 00 00 00 00 |........iA......| 00000090 0d a0 00 00 28 10 de 01 00 00 00 00 00 00 00 00 |....(...........| 000000a0 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000000d0 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 |................| 000000e0 00 00 c7 00 06 07 08 00 00 00 00 00 00 00 00 00 |................| 000000f0 00 00 00 00 00 00 00 00 86 0f 01 00 00 00 00 00 |................| 00000100
MMCONFIG is disabled unless you boot with the kernel option "pci=mmconf". I can see data all the way up to offset 0xfff on PCIE devices when I boot with that option...
NOTABUG ??
This works for me, too. Thanks!