Re: ide patches
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Date: 2007-07-29 18:05:11
On Sunday 29 July 2007, Sergei Shtylyov wrote:
Bartlomiej Zolnierkiewicz wrote:quoted
quoted
quoted
Ok, there's a combination of things here:quoted
quoted
quoted
- 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 thinkquoted
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