• Linus Torvalds's avatar
    libata: honour host controllers that want just one host · dc87c398
    Linus Torvalds authored
    The Marvell IDE interface on my machine would hit a BUG_ON() in
    lib/iomem.c because it was calling ata_pci_init_one() specifying just a
    single port on the host, but that would actually end up trying to
    initialize two ports, the second one with bogus information.
    
    This fixes "ata_pci_init_one()" so that it actually passes down the
    n_ports variable that it got from the low-level driver to the host
    allocation routine ("ata_host_alloc_pinfo()"), which results in the ATA
    layer actually having the correct port number information.
    
    And in order to make it all work, I also needed to fix a few places that
    had incorrectly hard-coded the fact that a host always had exactly two
    ports (both ata_pci_init_bmdma() and ata_request_legacy_irqs() would
    just always iterate over both ports).
    Acked-by: default avatarJeff Garzik <jeff@garzik.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    dc87c398
libata-sff.c 27.3 KB