Re: [PATCH,RFC] sata_mv: don't avoid clearing interrupt status on SoC host adapters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 26, 2008 at 09:50:23AM -0400, Mark Lord wrote:

> >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.
> >
> >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;
> > }
> 
> Looks fine to me -- Saeed Bishara did the SOC stuff, and Marvell
> refuses to show me any documentation for it.

Yeah, docs are often a problem (even internally).  However, this
particular bit has been opened up, and you can get a copy of the SoC
docs here:

	http://www.marvell.com/products/media/index.jsp

(Get the docs for the 5182, which is the only 5xxx series SoC that has
SATA built-in.)
--
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

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux