Message ID | 19277.51029.197524.477689@pilspetsen.it.uu.se |
---|---|
State | Not Applicable |
Delegated to: | David Miller |
Headers | show |
On Wed, 2010-01-13 at 14:15 +0100, Mikael Pettersson wrote: > Seems to me the "irq 30: nobody cared" and "Disabling IRQ #30" > are the real problems. Is the pata_macio irq handler registered > too late, or does it ignore the interrupt? It's getting an interrupt it doesn't expect around the reset. The ata freeze code actually tries to prevent that with a read of the status register but that doesn't appear to work. I think it's a bug in the drive FW but I'm not sure of the details. I'll try to make up a workaround involving masking the interrupt until the first taskfile completes. I'll send you a patch to test when I find time to write it. Cheers Ben. -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- linux-2.6.33-rc4/drivers/ata/pata_macio.c.~1~ 2010-01-13 12:49:00.000000000 +0100 +++ linux-2.6.33-rc4/drivers/ata/pata_macio.c 2010-01-13 13:26:01.000000000 +0100 @@ -749,15 +749,21 @@ static void pata_macio_reset_hw(struct p int rc; /* Reset and enable controller */ +#if 0 rc = ppc_md.feature_call(PMAC_FTR_IDE_RESET, priv->node, priv->aapl_bus_id, 1); +#else + rc = 0; +#endif ppc_md.feature_call(PMAC_FTR_IDE_ENABLE, priv->node, priv->aapl_bus_id, 1); msleep(10); /* Only bother waiting if there's a reset control */ if (rc == 0) { +#if 0 ppc_md.feature_call(PMAC_FTR_IDE_RESET, priv->node, priv->aapl_bus_id, 0); +#endif msleep(IDE_WAKEUP_DELAY_MS); } }