• Tejun Heo's avatar
    libata: always use polling SETXFER · 464cf177
    Tejun Heo authored
    Several people have reported LITE-ON LTR-48246S detection failed
    because SETXFER fails.  It seems the device raises IRQ too early after
    SETXFER.  This is controller independent.  The same problem has been
    reported for different controllers.
    
    So, now we have pata_via where the controller raises IRQ before it's
    ready after SETXFER and a device which does similar thing.  This patch
    makes libata always execute SETXFER via polling.  As this only happens
    during EH, performance impact is nil.  Setting ATA_TFLAG_POLLING is
    also moved from issue hot path to ata_dev_set_xfermode() - the only
    place where SETXFER can be issued.
    
    Note that ATA_TFLAG_POLLING applies only to drivers which implement
    SFF TF interface and use libata HSM.  More advanced controllers ignore
    the flag.  This doesn't matter for this fix as SFF TF controllers are
    the problematic ones.
    Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    464cf177
libata-core.c 169 KB