sata_sil: ignore and clear spurious IRQs while executing commands by polling
sata_sil used to trigger HSM error if IRQ occurs during polling command. This didn't matter because polling wasn't used in sata_sil. However, as of 2.6.20, all IDENTIFYs are performed by polling and device detection sometimes fails due to spurious IRQ. This patch makes sata_sil ignore and clear spurious IRQ while executing commands by polling. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
Родитель
6a59dcf867
Коммит
e2f8fb7214
|
@ -386,9 +386,15 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2)
|
|||
goto freeze;
|
||||
}
|
||||
|
||||
if (unlikely(!qc || qc->tf.ctl & ATA_NIEN))
|
||||
if (unlikely(!qc))
|
||||
goto freeze;
|
||||
|
||||
if (unlikely(qc->tf.flags & ATA_TFLAG_POLLING)) {
|
||||
/* this sometimes happens, just clear IRQ */
|
||||
ata_chk_status(ap);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Check whether we are expecting interrupt in this state */
|
||||
switch (ap->hsm_task_state) {
|
||||
case HSM_ST_FIRST:
|
||||
|
|
Загрузка…
Ссылка в новой задаче