Bug 428758

Summary: lspci does not display extended configuration registers
Product: [Fedora] Fedora Reporter: Geoff Smith <gsmith>
Component: kernelAssignee: Kernel Maintainer List <kernel-maint>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: low Docs Contact:
Priority: low    
Version: 8CC: harald
Target Milestone: ---   
Target Release: ---   
Hardware: ia64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-03-13 16:13:04 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Geoff Smith 2008-01-14 23:28:06 UTC
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.

Comment 1 Harald Hoyer 2008-02-22 09:09:24 UTC
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




Comment 2 Chuck Ebbert 2008-02-25 18:31:09 UTC
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...


Comment 3 Chuck Ebbert 2008-03-10 23:15:50 UTC
NOTABUG ??

Comment 4 Geoff Smith 2008-03-13 21:25:03 UTC
This works for me, too.  Thanks!