On Sunday 29 July 2007, Sergei Shtylyov wrote: > Bartlomiej Zolnierkiewicz wrote: > > >>>Ok, there's a combination of things here: > > >>> - First, doing a set_pio from userland (hdparm -p XX) causes the kernel > >>>to disable DMA, which I think is incorrect. It's not the case with > >>>2.6.22 from my quick tests. The problem is that ide_config_drive_speed > >>>disables DMA, but only re-enables it when setting a DMA speed. I think > > > The problem is that _many_ chipsets don't support separate PIO and DMA > > timings so disabling DMA while programming chipset for PIO timings is a > > necessity for them. > > Actually, I didn't quite follow (as I'm afraid Ben also :-). Do you mean > the fact that the DMA timings may get overwritten (which happens due to the > failure of the drivers to handle the shared PIO/DMA timing registers, and in > some cases by "coupling" PIO to UltraDMA timings for no apparent reasons which > leads to disabling UltraDMA when PIO is being programmed)? Yes, in particular I meant cases like cmd64x (shared MWDMA/PIO timing registers) so doing "hdparm -p" on a drive currently using DMA without ide_config_drive_speed() disabling DMA would result in DMA operations using PIO timings and possible data corruptions. BTW all PIO to (U)DMA "couplings" should be fixed now Bart - 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