Re: [PATCH] Re: Forcing modes in libata (was: SATA buffered readVERY slow)

From: FD Cami
Date: Sun Jan 06 2008 - 13:09:41 EST


On Sun, 6 Jan 2008 17:27:38 +0100
Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> wrote:

> On Sunday 06 January 2008, FD Cami wrote:
> > On Sun, 6 Jan 2008 13:36:09 +0000
> > Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote:
> >
> > > On Sun, 6 Jan 2008 08:03:31 +0300
> > > > > For now you can boot with libata.dma=1 to select DMA on disks
> > > > > but not CD
> > > >
> > > > Great, but why isn't this in the documentation?
> > >
> > > Send patches
> >
> > patch attached.
> >
> > Description : Add libata.dma= to Documentation/kernel-parameters.txt
> >
> > Found documentation in :
> > http://www.mail-archive.com/linux-ide%40vger.kernel.org/msg09849.html
> > http://www.redhat.com/archives/fedora-extras-commits/2007-October/msg04568.html
> >
> > Signed-off-by: FranÃois Cami <francois.cami@xxxxxxx>
>
> diff -rU2 linux-2.6.24-rc6/Documentation/kernel-parameters.txt
> linux-2.6.24-rc6-mine/Documentation/kernel-parameters.txt
> ---
> linux-2.6.24-rc6/Documentation/kernel-parameters.txtÂÂÂÂÂÂÂÂ2008-01-06
> 15:58:54.000000000 +0100 +++
> linux-2.6.24-rc6-mine/Documentation/kernel-parameters.txtÂÂÂ2008-01-06
> 16:11:20.000000000 +0100 @@ -883,4 +883,11 @@ C2 power state.
> +ÂÂÂÂÂÂÂlibata.dma=ÂÂÂÂÂ[LIBATA] DMA control
> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂlibata.dma=0ÂÂÂÂ ÂDisable all PATA DMA like
> old IDE
>
> this doesn't seem entirely correct:
>
> * IDE has "hdx=nodma" so you can disable DMA on per-device basis

I think that libata.dma=1 is designed to behave like
CONFIG_IDEDMA_ONLYDISK used to. "hdx=nodma" is more fine-grained than
this.

> * is this really limited to PATA?

Alan's original patch took care of PATA. SATA support was added
later by Jeff Garzik. Corrected documentation patch attached.

> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂlibata.dma=1ÂÂÂÂ ÂDisk DMA only
> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂlibata.dma=2ÂÂÂÂ ÂATAPI DMA only
> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂlibata.dma=3ÂÂÂÂ ÂCF DMA only

This is also wrong, it should be "libata.dma=4ÂÂÂÂ ÂCF DMA only"
Thanks to Zoltan Boszormenyi <zboszor@xxxxxxxxxx> for catching this
mistake.

Revised patch attached.

Best,

FranÃois
diff -rU4 linux-2.6.24-rc6/Documentation/kernel-parameters.txt linux-2.6.24-rc6-mine/Documentation/kernel-parameters.txt
--- linux-2.6.24-rc6/Documentation/kernel-parameters.txt 2008-01-06 15:58:54.000000000 +0100
+++ linux-2.6.24-rc6-mine/Documentation/kernel-parameters.txt 2008-01-06 18:46:49.000000000 +0100
@@ -881,8 +881,16 @@

lapic_timer_c2_ok [X86-32,x86-64,APIC] trust the local apic timer in
C2 power state.

+ libata.dma= [LIBATA] DMA control
+ libata.dma=0 Disable all PATA and SATA DMA
+ libata.dma=1 PATA and SATA Disk DMA only
+ libata.dma=2 ATAPI (CDROM) DMA only
+ libata.dma=4 Compact Flash DMA only
+ Combinations also work, so libata.dma=3 enables DMA
+ for disks and CDROMs, but not CFs.
+
libata.noacpi [LIBATA] Disables use of ACPI in libata suspend/resume
when set.
Format: <int>