• T
    [PATCH] libata-eh-fw: implement new EH scheduling from PIO · dafadcde
    Tejun Heo 提交于
    PIO executes without holding host_set lock, so it cannot be
    synchronized using the same mechanism as interrupt driven execution.
    port_task framework makes sure that EH is not entered until PIO task
    is flushed, so PIO task can be sure the qc in progress won't go away
    underneath it.  One thing it cannot be sure of is whether the qc has
    already been scheduled for EH by another exception condition while
    host_set lock was released.
    
    This patch makes ata_poll_qc-complete() handle such conditions
    properly and make it freeze the port if HSM violation is detected
    during PIO execution.
    Signed-off-by: NTejun Heo <htejun@gmail.com>
    dafadcde
libata-core.c 128.3 KB