Quoting Mark Lord <liml@xxxxxx>: > Alan Cox wrote: > > > >> diff -uprdN linux/drivers/ata/libata-core.c > linux/drivers/ata/libata-core.c > >> --- linux/drivers/ata/libata-core.c 2007-03-07 22:13:24.000000000 -0800 > >> +++ linux/drivers/ata/libata-core.c 2007-03-08 00:15:37.000000000 -0800 > >> @@ -3455,7 +3455,8 @@ static void ata_dev_xfermask(struct ata_ > >> "device is on DMA blacklist, disabling DMA\n"); > >> } > >> > >> - if ((host->flags & ATA_HOST_SIMPLEX) && host->simplex_claimed != ap) { > >> + if ((host->flags & ATA_HOST_SIMPLEX) && > >> + host->simplex_claimed && host->simplex_claimed != ap) { > > A different version of this fix just went upstream for 2.6.21 via Jeff. > Which of the two is correct? > > I believe the other one looks like this: > > >> - if ((host->flags & ATA_HOST_SIMPLEX) && host->simplex_claimed != ap) { > >> + if ((host->flags & ATA_HOST_SIMPLEX) && host->simplex_claimed == ap) { This one does not look correct to me. It will not disable DMA for anything, as simplex_claimed will be NULL on first pass, and either NULL or first port on second pass, so it will never match currently tested port, and so it will leave DMA enabled for both channels, which is deadly for real simplex controllers. Petr - 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