Messages in this thread Patch in this message | | | Date | Wed, 07 Mar 2007 09:11:30 -0800 | From | Greg KH <> | Subject | [patch 055/101] 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.
This fixes bug#7996 and IMHO should also be included in -stable.
Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- drivers/ata/sata_sil.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/ata/sata_sil.c +++ linux-2.6.20.1/drivers/ata/sata_sil.c @@ -383,9 +383,15 @@ static void sil_host_intr(struct ata_por 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: -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |