On Sat, 07 Jul 2007 15:02:49 +0800, Albert Lee wrote:
> After checking the current implementations of freeze()/thaw(), it seems only 
> pdc_freeze()
>does more than simple irq masking. Remove the DMA stop code from pdc_freeze().
>
>Signed-off-by: Albert Lee <[EMAIL PROTECTED]>
>---
>
>diff -Nrup 01_remove_leftover_irqon/drivers/ata/sata_promise.c 
>02_sata_pdc_freeze/drivers/ata/sata_promise.c
>--- 01_remove_leftover_irqon/drivers/ata/sata_promise.c        2007-07-07 
>09:58:55.000000000 +0800
>+++ 02_sata_pdc_freeze/drivers/ata/sata_promise.c      2007-07-07 
>10:39:22.000000000 +0800
>@@ -578,7 +578,6 @@ static void pdc_freeze(struct ata_port *
> 
>       tmp = readl(mmio + PDC_CTLSTAT);
>       tmp |= PDC_IRQ_DISABLE;
>-      tmp &= ~PDC_DMA_ENABLE;
>       writel(tmp, mmio + PDC_CTLSTAT);
>       readl(mmio + PDC_CTLSTAT); /* flush */
> }

pdc_freeze() halts in-flight DMAs because that's what libata
specifices. E.g., Documentation/DocBook/libata.tmpl writes:

>void (*freeze) (struct ata_port *ap);
>void (*thaw) (struct ata_port *ap);
>       </programlisting>
>
>       <para>
>ata_port_freeze() is called when HSM violations or some other
>condition disrupts normal operation of the port.  A frozen port
>is not allowed to perform any operation until the port is
>thawed, which usually follows a successful reset.
>       </para>
>
>       <para>
>The optional ->freeze() callback can be used for freezing the port
>hardware-wise (e.g. mask interrupt and stop DMA engine).  If a
>port cannot be frozen hardware-wise, the interrupt handler
>must ack and clear interrupts unconditionally while the port
>is frozen.
>       </para>
>       <para>
>The optional ->thaw() callback is called to perform the opposite of ->freeze():
>prepare the port for normal operation once again.  Unmask interrupts,
>start DMA engine, etc.

Similar wording exists in libata-eh.c above __ata_port_freeze().

Albert's patch is OK as far as sata_promise is concerned, but
I want to see an update of libata.tmpl and libata-eh.c to
indicate the new, weakened, specification of freeze/thaw before
I ACK this patch.

/Mikael
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to