From 00bf6625153067e3d894beb984fc3a2a381f8700 Mon Sep 17 00:00:00 2001 From: Aaron Sierra Date: Fri, 25 May 2012 14:11:39 -0500 Subject: [PATCH] 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 --- lib/sysfs.c | 2 +- lspci.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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(""); -- 2.39.5