In ata_hsm_qc_complete(): Calling ata_altstatus() after the qc is completed might race with next qc. Remove it. Signed-off-by: Albert Lee <albertcc@xxxxxxxxxx> --- Jeff, (Sorry for re-submitting this patch so late.) The unneeded reading of alt_status might cause trouble when another command doing activity like pio data xfer. After checking, the flush here is leftover/merge damage of ata_pio_block( ) in 2.6.17-rc5: http://git.kernel.org/?p=linux/kernel/git/jgarzik/libata-dev.git;a=commitdiff;h=bb31a8faa270beafcc51a65880c5564c6b718bd6 We can safely remove it. --- linux-2.6.22-rc6/drivers/ata/libata-core.c.ori 2007-06-28 09:47:31.000000000 +0800 +++ linux-2.6.22-rc6/drivers/ata/libata-core.c 2007-06-28 09:49:26.000000000 +0800 @@ -4799,8 +4799,6 @@ static void ata_hsm_qc_complete(struct a } else ata_qc_complete(qc); } - - ata_altstatus(ap); /* flush */ } /** - 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