Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2f8fb72 authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik
Browse files

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: default avatarTejun Heo <htejun@gmail.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 6a59dcf8
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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: