* [PATCH] sata_mv: fix SoC interrupt breakage
@ 2009-02-19 15:38 Mark Lord
2009-02-25 20:28 ` Jeff Garzik
0 siblings, 1 reply; 2+ messages in thread
From: Mark Lord @ 2009-02-19 15:38 UTC (permalink / raw)
To: Jeff Garzik, IDE/ATA development list, Lennert Buytenhek,
Martin Michlmayr
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@marvell.com>
Signed-off-by: Mark Lord <mlord@pobox.com>
---
This is for 2.6.29 (upstream-fixes).
Despite appearances, this patch simply removes a single unnecessary
if-stmt from the code. It looks larger due to the resulting change
in indentation level.
--- old/drivers/ata/sata_mv.c.orig 2009-02-17 09:31:30.000000000 -0500
+++ new/drivers/ata/sata_mv.c 2009-02-19 10:31:28.000000000 -0500
@@ -3114,19 +3114,17 @@
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);
-
- /* 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);
- }
+ /* 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);
+
+ /*
+ * 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;
}
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] sata_mv: fix SoC interrupt breakage
2009-02-19 15:38 [PATCH] sata_mv: fix SoC interrupt breakage Mark Lord
@ 2009-02-25 20:28 ` Jeff Garzik
0 siblings, 0 replies; 2+ messages in thread
From: Jeff Garzik @ 2009-02-25 20:28 UTC (permalink / raw)
To: Mark Lord; +Cc: IDE/ATA development list, Lennert Buytenhek, Martin Michlmayr
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@marvell.com>
> Signed-off-by: Mark Lord <mlord@pobox.com>
> ---
>
> This is for 2.6.29 (upstream-fixes).
> Despite appearances, this patch simply removes a single unnecessary
> if-stmt from the code. It looks larger due to the resulting change
> in indentation level.
applied manually... not even patch(1) liked this one, and patch(1) is
far less strict than git-am patch import tool. Other peoples' patches
are processing just fine.
Jeff
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-02-25 20:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-19 15:38 [PATCH] sata_mv: fix SoC interrupt breakage Mark Lord
2009-02-25 20:28 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).