> > @@ -1583,6 +1583,12 @@ inline unsigned int ata_sff_host_intr(struct ata_port *ap > > if (status & ATA_BUSY) > > goto idle_irq; > > > > + /* check main status, clearing INTRQ */ > > + status = ap->ops->sff_check_status(ap); > > + if (unlikely(status & ATA_BUSY)) > > + goto idle_irq; > > + > > + Aha all is revealed: and yes it would only show up on a few boxes libata-sff: Don't assume that check_status is an SFF read From: Alan Cox <alan@xxxxxxxxxx> For a few controllers the sff check status is actually a method not an I/O access and we must call the method when doing the IRQ check --- drivers/ata/libata-sff.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) Signed-off-by: Alan Cox <alan@xxxxxxxxxx> diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 90d20c6..215d186 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c @@ -278,7 +278,7 @@ static u8 ata_sff_irq_status(struct ata_port *ap) return status; } /* Clear INTRQ latch */ - status = ata_sff_check_status(ap); + status = ap->ops->sff_check_status(ap); return status; } -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html