Question

On my x86 Linux system reading from different locations in PCI configuration space using setpci seems to give completely different answers for some registers when compared to output from lspci -xxxx.

For example, I pick an arbitrary device on my bus and do lspci -s 00:1f.3 -xxxx and get:

00: 86 80 22 1e 03 00 80 02 04 00 05 0c 00 00 00 00
10: 04 40 51 d0 00 00 00 00 00 00 00 00 00 00 00 00
20: a1 ef 00 00 00 00 00 00 00 00 00 00 28 10 8b 05

...

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 87 0f 04 08 00 00 00 00

Now, the output from setpci -s 00:1f.3 0x40+0.l is 02800003 which is consistent with the output above. However, the output from setpci -s 00:1f.3 0xf8+0.l is ffffffff which from the dump above I would have expected to be 08040f87.

Can someone please help shed some light on what is going on here. I'm new to the world of PCI debugging, so I may be missing something obvious here.

Thanks in advance.

Was it helpful?

Solution

man setpci

setpci is a utility for querying and configuring PCI devices.

Root privileges are necessary for almost all operations, excluding reads of the standard header of the configuration space on some operating systems. Please see lspci(8) for details on access rights.

Try as a Super-user

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top