> if (m5229_revision <= 0x20) { > return 0; > } else if ((m5229_revision < 0xC2) && So 0xC1 takes this path > Looking back at the equivalent code in 2.4.27 (the previous kernel > this machine ran), that's rather different: > > if (m5229_revision < 0xC1) { /* According to ALi */ > return 0; > } else if ((m5229_revision < 0xC2) && And 0xC1 takes the same path. > So it would seem there has been a regression here - the assumption now > is that versions between 0x20 and 0xC1 can use UDMA fine unless there > is a WDC drive attached, but the old code wouldn't try UDMA at all on > chips older than rev C1. There are no versions between 0x21 and 0xC0. > I have the machine out and ready to experiment with if any more > details are needed to help solve this problem. Interesting report as we've had essentially no corruption reports equivalent to this on common architectures for a long time and the hardware is in a huge number of PC systems. Also UDMA transfers are CRC protected by hardware at each end. That makes me wonder if you have a platform or endian bug, or indeed your firmware isn't setting up all the chipset as required by the ALi chipset and BIOS documentation (which unfortunately is NDA) Alan - 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