X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lspci.c;h=39a464772f8e8649e19d2e8438ffd85d7f94887d;hb=001b9ac6d7b706a223faa7d2dd1bd7d50393e2c9;hp=ce00316923df3b089bd2d1cc0cc666b9998777e0;hpb=f2f8adaa9955cf4e5188075d8eb452a7f6e268c6;p=pciutils.git diff --git a/lspci.c b/lspci.c index ce00316..39a4647 100644 --- a/lspci.c +++ b/lspci.c @@ -10,7 +10,6 @@ #include #include #include -#include #include "lspci.h" @@ -316,6 +315,8 @@ show_terse(struct device *d) word subsys_v, subsys_d; char ssnamebuf[256]; + if (p->label) + printf("\tDeviceName: %s", p->label); get_subid(d, &subsys_v, &subsys_d); if (subsys_v && subsys_v != 0xffff) printf("\tSubsystem: %s\n", @@ -330,7 +331,7 @@ show_terse(struct device *d) static void show_size(pciaddr_t x) { - static const char suffix[][4] = { "", "KiB", "MiB", "GiB", "TiB" }; + static const char suffix[][2] = { "", "K", "M", "G", "T" }; unsigned i; if (!x) return; @@ -373,7 +374,7 @@ show_bases(struct device *d, int cnt) { pciaddr_t a = pos & PCI_BASE_ADDRESS_IO_MASK; printf("I/O ports at "); - if (a) + if (a || (cmd & PCI_COMMAND_IO)) printf(PCIADDR_PORT_FMT, a); else if (flg & PCI_BASE_ADDRESS_IO_MASK) printf(""); @@ -462,7 +463,7 @@ show_htype0(struct device *d) { show_bases(d, 6); show_rom(d, PCI_ROM_ADDRESS); - show_caps(d); + show_caps(d, PCI_CAPABILITY_LIST); } static void @@ -568,7 +569,7 @@ show_htype1(struct device *d) FLAG(brc, PCI_BRIDGE_CTL_DISCARD_TIMER_SERR_EN)); } - show_caps(d); + show_caps(d, PCI_CAPABILITY_LIST); } static void @@ -591,7 +592,8 @@ show_htype2(struct device *d) int p = 8*i; u32 base = get_conf_long(d, PCI_CB_MEMORY_BASE_0 + p); u32 limit = get_conf_long(d, PCI_CB_MEMORY_LIMIT_0 + p); - if (limit > base || verb) + limit = limit + 0xfff; + if (base <= limit || verb) printf("\tMemory window %d: %08x-%08x%s%s\n", i, base, limit, (cmd & PCI_COMMAND_MEMORY) ? "" : " [disabled]", (brc & (PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 << i)) ? " (prefetchable)" : ""); @@ -635,6 +637,7 @@ show_htype2(struct device *d) exca = get_conf_word(d, PCI_CB_LEGACY_MODE_BASE); if (exca) printf("\t16-bit legacy interface ports at %04x\n", exca); + show_caps(d, PCI_CB_CAPABILITY_LIST); } static void @@ -665,7 +668,7 @@ show_verbose(struct device *d) case PCI_HEADER_TYPE_BRIDGE: if ((class >> 8) != PCI_BASE_CLASS_BRIDGE) printf("\t!!! Invalid class %04x for header type %02x\n", class, htype); - irq = int_pin = min_gnt = max_lat = 0; + min_gnt = max_lat = 0; break; case PCI_HEADER_TYPE_CARDBUS: if ((class >> 8) != PCI_BASE_CLASS_BRIDGE) @@ -1013,6 +1016,7 @@ main(int argc, char **argv) else show(); } + show_kernel_cleanup(); pci_cleanup(pacc); return (seen_errors ? 2 : 0);