diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2012-01-11 14:16:19 -0700 |
---|---|---|
committer | Martin Mares <mj@ucw.cz> | 2012-01-14 15:06:20 +0100 |
commit | f288d32f34f6a3948e49891012864ad8ed6e3bd6 (patch) | |
tree | 0e9634266ab251c16dbca3fcae19ba189607edae /lspci.c | |
parent | 364275f83d6153474b10a86b8c69d3d7bba13e6a (diff) | |
download | pciutils-f288d32f34f6a3948e49891012864ad8ed6e3bd6.tar.gz |
Correct the end of CardBus memory windows
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>
Diffstat (limited to 'lspci.c')
-rw-r--r-- | lspci.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -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)" : ""); |