[PATCH][RFC] ServerWorks autodma behavior

Ken Brownfield (brownfld@irridia.com)
Tue, 26 Feb 2002 03:26:29 -0600


There wasn't a specific MAINTAINER for this stuff, other than perhaps
Andre Hedrick by proxy, so I decided it might be best to post this
directly.

I have a lot of ServerWorks OSB4 IDE hardware, which has the annoyingly
suboptimal behavior of corrupting filesystems when DMA is active.
Unfortunately, serverworks.c (in recent 2.4, at least) does not honor
the CONFIG_IDEDMA_AUTO config option -- it turns dma on only unless
"ide=nodma" is set on the kernel command line.

Personally, I think the correct behavior is for the subdrivers to honor
this config value. However, only VIA behaves in this way, and PIIX only
because of its funky CONFIG_PIIX_TUNING config. This obviates having to
modify lilo.conf (or similar) on all machines, and having to remember
to do so, etc etc.

The alternative is that, somewhat unintuitively, the correct behavior is
for the subdrivers to make their own non-CONFIGurable decisions on DMA.
In this case, VIA and PIIX should be corrected, I would think.

In any case, I've appended the patch I'm using to be able to turn off
auto-DMA at config-time rather than run-time for ServerWorks. One
alternative is to shed this code altogether, since ide-pci.c seems to
set a rational default.

I just wanted to see if there was any clear consensus on this -- I'd be
glad to whip out patches for either behavior.

Thanks,

-- 
Ken.
brownfld@irridia.com

--- linux/drivers/ide/serverworks.c.orig Sun Sep 9 10:43:02 2001 +++ linux/drivers/ide/serverworks.c Tue Feb 26 00:39:17 2002 @@ -590,8 +590,10 @@ #else /* CONFIG_BLK_DEV_IDEDMA */ if (hwif->dma_base) { +#ifdef CONFIG_IDEDMA_AUTO if (!noautodma) hwif->autodma = 1; +#endif hwif->dmaproc = &svwks_dmaproc; } else { hwif->autodma = 0;

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/