• Yoichi Yuasa's avatar
    PCI: fix IDE legacy mode resources · fd6e7321
    Yoichi Yuasa authored
    I got the following error on MIPS Cobalt.
    
    PCI: Unable to reserve I/O region #1:8@f00001f0 for device 0000:00:09.1
    pata_via 0000:00:09.1: failed to request/iomap BARs for port 0 (errno=-16)
    PCI: Unable to reserve I/O region #3:8@f0000170 for device 0000:00:09.1
    pata_via 0000:00:09.1: failed to request/iomap BARs for port 1 (errno=-16)
    pata_via 0000:00:09.1: no available native port
    
    The legacy mode IDE resources set the following order.
    
    pci_setup_device()
        Legacy mode ATA controllers have fixed addresses.
        IDE resources: 0x1F0-0x1F7, 0x3F6, 0x170-0x177, 0x376
        |
        V
    pcibios_fixup_bus()
        MIPS Cobalt PCI bus regions have the -0x10000000 offset from PCI resources.
        pcibios_fixup_bus() fix PCI bus regions.
        0x1F0 - 0x10000000 = 0xF00001F0
        |
        V
    ata_pci_init_one()
        PCI: Unable to reserve I/O region #1:8@f00001f0 for device 0000:00:09.1
    
    In some architectures, PCI bus regions have the offset from PCI resources. 
    For this reason, pci_setup_device() should set PCI bus regions to
    dev->resource[].
    
    [akpm@linux-foundation.org: use struct initialiser]
    Signed-off-by: default avatarYoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: Greg KH <greg@kroah.com>
    Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    fd6e7321
probe.c 34 KB