Jacob
Jacob

Reputation: 80

Why do setpci and lspci -xxxx show different data for the same address?

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.

Upvotes: 1

Views: 4671

Answers (1)

Sasi V
Sasi V

Reputation: 1094

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

Upvotes: 2

Related Questions