The vendor and device IDs may be different when using sysfs and proc methods with bus centric view enabled. The sysfs method reads the IDs from the configuration space instead of using the values from sysfs entries. But the proc method always uses values from the proc files. This fix makes the proc method use the values from configuration space, and also clean up some unused code that handles 64-bit BAR (it's already taken care of by generic/proc/sysfs methods code). Signed-off-by: Yu Zhao <yu.zhao@xxxxxxxxx> --- lib/proc.c | 4 ++-- lspci.c | 24 ------------------------ 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/lib/proc.c b/lib/proc.c index bf877c4..e9ca24d 100644 --- a/lib/proc.c +++ b/lib/proc.c @@ -97,10 +97,10 @@ proc_scan(struct pci_access *a) d->func = PCI_FUNC(dfn & 0xff); d->vendor_id = vend >> 16U; d->device_id = vend & 0xffff; - known = PCI_FILL_IDENT; + known = 0; if (!a->buscentric) { - known |= PCI_FILL_IRQ | PCI_FILL_BASES; + known |= PCI_FILL_IDENT | PCI_FILL_IRQ | PCI_FILL_BASES; if (cnt >= 10) known |= PCI_FILL_ROM_BASE; if (cnt >= 17) diff --git a/lspci.c b/lspci.c index d872c75..cb6740f 100644 --- a/lspci.c +++ b/lspci.c @@ -17,7 +17,6 @@ /* Options */ int verbose; /* Show detailed information */ -static int opt_buscentric; /* Show bus addresses/IRQ's instead of CPU-visible ones */ static int opt_hex; /* Show contents of config space as hexadecimal numbers */ struct pci_filter filter; /* Device filter */ static int opt_tree; /* Show bus tree */ @@ -391,28 +390,6 @@ show_bases(struct device *d, int cnt) u32 z = 0; printf("Memory at "); - if (t == PCI_BASE_ADDRESS_MEM_TYPE_64) - { - if (i >= cnt - 1) - { - printf("<invalid-64bit-slot>"); - done = 1; - } - else - { - i++; - z = get_conf_long(d, PCI_BASE_ADDRESS_0 + 4*i); - if (opt_buscentric) - { - u32 y = a & 0xffffffff; - if (a || z) - printf("%08x%08x", z, y); - else - printf("<unassigned>"); - done = 1; - } - } - } if (!done) { if (a) @@ -938,7 +915,6 @@ main(int argc, char **argv) break; case 'b': pacc->buscentric = 1; - opt_buscentric = 1; break; case 's': if (msg = pci_filter_parse_slot(&filter, optarg)) -- 1.5.6.4 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html