• Arnd Bergmann's avatar
    PCI: Remove pci_mmap_page_range() wrapper · 0ad722f1
    Arnd Bergmann authored
    The ARCH_GENERIC_PCI_MMAP_RESOURCE symbol came up in a recent discussion,
    and I noticed that this was left behind by an unfinished cleanup from 2017.
    
    The only architecture that still relies on providing its own
    pci_mmap_page_range() helper instead of using the generic
    pci_mmap_resource_range() is sparc. Presumably the reasons for this have
    not changed, but at least this can be simplified by converting sparc to use
    the same interface as the others.
    
    The only difference between the two is the device-specific offset that gets
    added to or subtracted from vma->vm_pgoff.
    
    Change the only caller of pci_mmap_page_range() in common code to subtract
    this offset and call the modern interface, while adding it back in the
    sparc implementation to preserve the existing behavior.
    
    This removes the complexities of the dual interfaces from the common code,
    and keeps it all specific to the sparc architecture code. According to
    David Miller, the sparc code lets user space poke into the VGA I/O port
    registers by mmapping the I/O space of the parent bridge device, which is
    something that the generic pci_mmap_resource_range() code apparently does
    not.
    
    Link: https://lore.kernel.org/lkml/1519887203.622.3.camel@infradead.org/t/
    Link: https://lore.kernel.org/lkml/20220714214657.2402250-3-shorne@gmail.com/
    Link: https://lore.kernel.org/r/20220715153617.3393420-1-arnd@kernel.orgSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Stafford Horne <shorne@gmail.com>
    0ad722f1
mmap.c 1.21 KB