Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 04 Jan 2013 12:45:47 -0700
From:      Ian Lepore <freebsd@damnhippie.dyndns.org>
To:        Brett Wynkoop <wynkoop@wynn.com>
Cc:        freebsd-arm <freebsd-arm@freebsd.org>
Subject:   Re: BeagleBone System Hang
Message-ID:  <1357328747.1088.18.camel@revolution.hippie.lan>
In-Reply-To: <20130104053011.095e9fad@ivory.wynn.com>
References:  <20130104053011.095e9fad@ivory.wynn.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--=-BnlEyX3uWwww59Q2mNLx
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

On Fri, 2013-01-04 at 05:30 -0500, Brett Wynkoop wrote:
> Greeting-
> 
> Ok tonight before trying to install the world I just built I decided to
> back up my 8G microsd to my laptop.
> 
> On the Bone I ran:
> 
> dd if=/dev/mmcsd0 | gzip -c | nc laptop 12345
> 
> With of course the correct receiving nc and dd on the other side.
> 
> The result was:
> 
> 
> aintc0: Spurious interrupt detected (0xffffffff)
[...]
> aintc0: Spurious interrupt detected (0xffffffff)
> 
> and the loss of network connectivity as well as the inability to
> terminate the process with ctl-C and the inability to background it
> with ctl-Z.
> 
> I have no idea what aintc is, but what ever it is I bet we need to do
> some driver work related to it.
> 
> -Brett

After a few minutes of glancing at the complex and confusing datasheet
for that interrupt controller, I'm not sure what's causing the spurious
interrupt, but the code that's detecting and reporting the problem isn't
clearing the status, so it just gets into a tight reporting loop.

Try the attached patch to see if it makes the loop stop and the system
become responsive again.  This is more of a workaround than a real fix.

-- Ian


--=-BnlEyX3uWwww59Q2mNLx
Content-Disposition: inline; filename="aintc_spurious.diff"
Content-Type: text/x-patch; name="aintc_spurious.diff"; charset="us-ascii"
Content-Transfer-Encoding: 7bit

diff -r 28b12492cd58 sys/arm/ti/aintc.c
--- a/sys/arm/ti/aintc.c	Fri Dec 21 11:20:58 2012 -0700
+++ b/sys/arm/ti/aintc.c	Fri Jan 04 12:42:34 2013 -0700
@@ -157,6 +157,7 @@ arm_get_next_irq(int last_irq)
 	if ((active_irq & 0xffffff80)) {
 		device_printf(ti_aintc_sc->sc_dev,
 			"Spurious interrupt detected (0x%08x)\n", active_irq);
+		aintc_write_4(INTC_SIR_IRQ, (active_irq & 0xffffff80));
 		return -1;
 	}
 

--=-BnlEyX3uWwww59Q2mNLx--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1357328747.1088.18.camel>