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 */

Two comments:

1) I do not think it safe to simply remove this. Have you verified that pdc_reset_port() without a disabled DMA engine works 100%? At the very least I would say to -move- this code, rather the deleting it.

2) It was put there to disable the DMA engine at our first opportunity. For some errors we really should take some preliminary port/DMA-disable actions in the interrupt handler, before kicking off EH and waiting to be scheduled in process context.

        Jeff


-
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