summaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2016-03-02 23:20:18 +0100
committerBjorn Helgaas <bhelgaas@google.com>2016-03-12 13:00:29 +0100
commitf976721e826e06ba1cdfce701495b49e2e25289d (patch)
treeb84029e6f7e7866ef0a2b7a8c35ab4efae2ab48b /arch/ia64
parentia64/PCI: Use temporary struct resource * to avoid repetition (diff)
downloadlinux-f976721e826e06ba1cdfce701495b49e2e25289d.tar.xz
linux-f976721e826e06ba1cdfce701495b49e2e25289d.zip
ia64/PCI: Use ioremap() instead of open-coded equivalent
Depositing __IA64_UNCACHED_OFFSET in the upper address bits is essentially equivalent to ioremap(): it converts a CPU physical address to a virtual address using the ia64 uncacheable identity map. Call ioremap() instead of doing the phys-to-virt conversion manually with __IA64_UNCACHED_OFFSET. Note that this makes it obvious that (a) we're putting a virtual address in a struct resource, and (b) we're passing a virtual address to ioremap() below in the PCI_ROM_RESOURCE case. These are both pre-existing problems that I'll resolve next. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/sn/kernel/io_init.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 40c02635f19f..0227e202b6bb 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -185,9 +185,8 @@ sn_io_slot_fixup(struct pci_dev *dev)
if (size == 0)
continue;
- addr = pcidev_info->pdi_pio_mapped_addr[idx];
- addr = ((addr << 4) >> 4) | __IA64_UNCACHED_OFFSET;
- res->start = addr;
+ res->start = ioremap(pcidev_info->pdi_pio_mapped_addr[idx],
+ size + 1);
res->end = addr + size;
/*