* Lennert Buytenhek <buytenh@xxxxxxxxxxxxxx> [2008-08-24 05:04]: > For some reason, sata_mv doesn't clear interrupt status during init > when it's running on an SoC host adapter. If the bootloader has > touched the SATA controller before starting Linux, Linux can end up > enabling the SATA interrupt with events pending, which will cause the > interrupt to be marked as spurious and then be disabled, which then > breaks all further accesses to the controller. > > This patch makes the SoC path clear interrupt status on init like in > the non-SoC case. What's the status of this patch? Saeed said that the patch is correct [1] and Mark asked for his Signed-off-by. Saeed, can you add your Signed-off-by, so this can go in? [1] http://www.spinics.net/lists/linux-ide/msg25686.html > Signed-off-by: Lennert Buytenhek <buytenh@xxxxxxxxxxx> > --- > drivers/ata/sata_mv.c | 21 ++++++++++----------- > 1 files changed, 10 insertions(+), 11 deletions(-) > > diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c > index ad169ff..e829a3a 100644 > --- a/drivers/ata/sata_mv.c > +++ b/drivers/ata/sata_mv.c > @@ -3131,19 +3131,18 @@ static int mv_init_host(struct ata_host *host, unsigned int board_idx) > writelfl(0, hc_mmio + HC_IRQ_CAUSE_OFS); > } > > - if (!IS_SOC(hpriv)) { > - /* Clear any currently outstanding host interrupt conditions */ > - writelfl(0, mmio + hpriv->irq_cause_ofs); > + /* Clear any currently outstanding host interrupt conditions */ > + writelfl(0, mmio + hpriv->irq_cause_ofs); > > - /* and unmask interrupt generation for host regs */ > - writelfl(hpriv->unmask_all_irqs, mmio + hpriv->irq_mask_ofs); > + /* and unmask interrupt generation for host regs */ > + writelfl(hpriv->unmask_all_irqs, mmio + hpriv->irq_mask_ofs); > + > + /* > + * enable only global host interrupts for now. > + * The per-port interrupts get done later as ports are set up. > + */ > + mv_set_main_irq_mask(host, 0, PCI_ERR); > > - /* > - * enable only global host interrupts for now. > - * The per-port interrupts get done later as ports are set up. > - */ > - mv_set_main_irq_mask(host, 0, PCI_ERR); > - } > done: > return rc; > } > -- > 1.5.6.4 > -- > To unsubscribe from this list: send the line "unsubscribe linux-ide" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Martin Michlmayr http://www.cyrius.com/ -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html