• Tejun Heo's avatar
    [PATCH] libata: implement presence detection via polling IDENTIFY · 55a8e2c8
    Tejun Heo authored
    On some controllers (ICHs in piix mode), there is *NO* reliable way to
    determine device presence other than issuing IDENTIFY and see how the
    transaction proceeds by watching the TF status register.
    
    libata acted this way before irq-pio and phantom devices caused very
    little problem but now that IDENTIFY is performed using IRQ drive PIO,
    such phantom devices now result in multiple 30sec timeouts during
    boot.
    
    This patch implements ATA_FLAG_DETECT_POLLING.  If a LLD sets this
    flag, libata core issues the initial IDENTIFY in polling mode and if
    the initial data transfer fails w/ HSM violation, the port is
    considered to be empty thus replicating the old libata and IDE
    behavior.
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    55a8e2c8
libata-eh.c 53.9 KB