]> git.ipfire.org Git - thirdparty/pciutils.git/commitdiff
Correct the end of CardBus memory windows
authorBjorn Helgaas <bhelgaas@google.com>
Wed, 11 Jan 2012 21:16:19 +0000 (14:16 -0700)
committerMartin Mares <mj@ucw.cz>
Sat, 14 Jan 2012 14:06:20 +0000 (15:06 +0100)
The low twelve bits of memory base/limit are assumed to be all zeros
and all ones, respectively.  Therefore, a window with base == limit
is a valid 4K window, which we should display by default, and the
true end of the window is ...fff, not ...000.  For example,

    05:07.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller
    ...
-     Memory window 0: 88000000-8bfff000 (prefetchable)
+     Memory window 0: 88000000-8bffffff (prefetchable)

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
lspci.c

diff --git a/lspci.c b/lspci.c
index bca1ccbca3b3d3e9a3aaecbf1ca57987ef553065..681ef6a769b38dac6122e5e46a1a9cf260fa1f3d 100644 (file)
--- a/lspci.c
+++ b/lspci.c
@@ -590,7 +590,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)" : "");