libata regression 2.6.6-rc1 -> 2.6.6-rc2 located

From: Brad Campbell
Date: Sat May 29 2004 - 11:51:06 EST


I managed to narrow it down to a diff between 2.6.6-rc1 and 2.6.6-rc2

2.6.6-rc1 works fine and 2.6.6-rc2 exhibits the lockup on the third card.

Reverting this hunk makes everything happy again.
I also tested this against 2.6.7-rc1-bk4 and it solves the problem.
I don't pretend to understand why, just did the donkey testing to locate it.


diff -urN linux-2.6.5-a/drivers/scsi/sata_promise.c linux-2.6.5-b/drivers/scsi/sata_promise.c
--- linux-2.6.5-a/drivers/scsi/sata_promise.c 2004-05-29 19:53:40.000000000 +0400
+++ linux-2.6.5-b/drivers/scsi/sata_promise.c 2004-05-29 19:41:47.000000000 +0400
@@ -1180,14 +1180,14 @@

static void pdc_tf_load_mmio(struct ata_port *ap, struct ata_taskfile *tf)
{
- if (tf->protocol != ATA_PROT_DMA)
+ if (tf->protocol == ATA_PROT_PIO)
ata_tf_load_mmio(ap, tf);
}


static void pdc_exec_command_mmio(struct ata_port *ap, struct ata_taskfile *tf)
{
- if (tf->protocol != ATA_PROT_DMA)
+ if (tf->protocol == ATA_PROT_PIO)
ata_exec_command_mmio(ap, tf);
}


Hope this helps shed some light.. Still don't understand why it works perfectly with only 2 cards however.

Regards,
Brad
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/