diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2016-03-02 21:42:04 -0600 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2016-03-12 06:00:29 -0600 |
commit | 97f47e73c4a0dc2519276cd63274696c850e0613 (patch) | |
tree | 16905743f6759d80a8c3386d8860b9f28bc9d0e7 /drivers/pci | |
parent | 53f0a509775dae77dab64d0b858635a70e3d6f4f (diff) |
MIPS: Loongson 3: Keep CPU physical (not virtual) addresses in shadow ROM resource
Loongson 3 used the IORESOURCE_ROM_COPY flag for its ROM resource. There
are two problems with this:
- When IORESOURCE_ROM_COPY is set, pci_map_rom() assumes the resource
contains virtual addresses, so it doesn't ioremap the resource. This
implies loongson_sysconf.vgabios_addr is a virtual address. That's a
problem because resources should contain CPU *physical* addresses not
virtual addresses.
- When IORESOURCE_ROM_COPY is set, pci_cleanup_rom() calls kfree() on the
resource. We did not kmalloc() the loongson_sysconf.vgabios_addr area,
so it is incorrect to kfree() it.
If we're using a shadow copy in RAM for the Loongson 3 VGA BIOS area,
disable the ROM BAR and release the address space it was consuming.
Use IORESOURCE_ROM_SHADOW instead of IORESOURCE_ROM_COPY. This means the
struct resource contains CPU physical addresses, and pci_map_rom() will
ioremap() it as needed.
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci')
0 files changed, 0 insertions, 0 deletions