ia64/PCI: Keep CPU physical (not virtual) addresses in shadow ROM resource
authorBjorn Helgaas <bhelgaas@google.com>
Wed, 2 Mar 2016 22:06:32 +0000 (16:06 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Sat, 12 Mar 2016 12:00:29 +0000 (06:00 -0600)
commit240504adaf0798a5ab18fac46ae782d3b004859f
treeddb0599d3fba6ab5cb995b55bbc17d295bc28d78
parentf976721e826e06ba1cdfce701495b49e2e25289d
ia64/PCI: Keep CPU physical (not virtual) addresses in shadow ROM resource

A struct resource contains CPU physical addresses, not virtual addresses.
But sn_acpi_slot_fixup() and sn_io_slot_fixup() stored the virtual address
of a shadow ROM copy in the resource.  To compensate, pci_map_rom() had a
special case that returned the resource address directly rather than
calling ioremap() on it.

When we're using a shadow copy in RAM or PROM, disable the ROM BAR and
release the address space it was consuming.

Store the CPU physical (not virtual) address in the shadow ROM resource,
and mark the resource as IORESOURCE_ROM_SHADOW so we use the normal
pci_map_rom() path that ioremaps the copy.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
arch/ia64/sn/kernel/io_acpi_init.c
arch/ia64/sn/kernel/io_init.c