• B
    sparc/PCI: convert devtree and arch-probed bus addresses to resource · a031589b
    Bjorn Helgaas 提交于
    Normal PCI enumeration via PCI config space uses __pci_read_base(), where
    the PCI core applies any bus-to-resource offset.  But sparc sometimes
    reads PCI config space itself, and sometimes it gets addresses from the
    device tree.
    
    In ac1edcc5, I converted sparc to use the PCI core bus-to-resource
    conversion, but I missed these sparc-specific paths.  I don't have a way
    to test it, but I think sparc is broken between that commit and this one.
    
    This patch replaces the sparc-specific pci_resource_adjust() with the
    generic pcibios_bus_to_resource() in the following paths:
    
        pci_cfg_fake_ranges()       (addresses read from PCI config)
        apb_fake_ranges()           (addresses computed based on PCI config)
        of_scan_pci_bridge()        (addresses from OF "ranges" property)
    
    N.B.: Resources of non-P2P bridge devices are set in pci_parse_of_addrs()
    and, as far as I can see, never converted to CPU addresses.  I do not
    understand why these would be treated differently than bridge windows.
    
    CC: "David S. Miller" <davem@davemloft.net>
    CC: sparclinux@vger.kernel.org
    Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
    a031589b
pci.c 28.1 KB