I've ended up working around the issue. I blacklist the pata_via module, and build my own kernels with all the old ide drivers as modules, loading via82cxxx for my pata devices. Unfortunately I haven't been able to convince my ppa to build those kernels (some sort of issue with ABI's and sadly the ubuntu kernel package is poorly documented on how to actually update that)
I'm quite certain that the timing code for the libata versions is broken, but it's not immediately obvious to me exactly where or how to fix it. all I can suggest is that the old ide driver and the new libata driver should be both closly examined and the libata driver should be adjusted as needed to match the ide driver.
I've ended up working around the issue. I blacklist the pata_via module, and build my own kernels with all the old ide drivers as modules, loading via82cxxx for my pata devices. Unfortunately I haven't been able to convince my ppa to build those kernels (some sort of issue with ABI's and sadly the ubuntu kernel package is poorly documented on how to actually update that)
I'm quite certain that the timing code for the libata versions is broken, but it's not immediately obvious to me exactly where or how to fix it. all I can suggest is that the old ide driver and the new libata driver should be both closly examined and the libata driver should be adjusted as needed to match the ide driver.