From: Aaron Sierra Date: Fri, 25 May 2012 19:11:39 +0000 (-0500) Subject: lspci: zero address in IO isn't always unassigned X-Git-Tag: v3.1.10~6 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=00bf6625153067e3d894beb984fc3a2a381f8700;p=pciutils.git lspci: zero address in IO isn't always unassigned Zero is a valid address in I/O space, so display it and it's associated size when IO is enabled in the PCI command register. From arch/powerpc/kernel/pci-common.c: /* Here, we are a bit different than memory as typically IO space * starting at low addresses -is- valid. What we do instead [is] that * we consider as unassigned anything that doesn't have IO enabled * in the PCI command register, and that's it. */ Signed-off-by: Aaron Sierra --- diff --git a/lib/sysfs.c b/lib/sysfs.c index 1ec4afb..2197fab 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -125,7 +125,7 @@ sysfs_get_resources(struct pci_dev *d) break; if (sscanf(buf, "%llx %llx %llx", &start, &end, &flags) != 3) a->error("Syntax error in %s", namebuf); - if (start) + if (end > start) size = end - start + 1; else size = 0; diff --git a/lspci.c b/lspci.c index 681ef6a..a67a516 100644 --- a/lspci.c +++ b/lspci.c @@ -372,7 +372,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("");