Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 04 Jan 2013 12:55:20 -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:  <1357329320.1088.20.camel@revolution.hippie.lan>
In-Reply-To: <1357328747.1088.18.camel@revolution.hippie.lan>
References:  <20130104053011.095e9fad@ivory.wynn.com> <1357328747.1088.18.camel@revolution.hippie.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 2013-01-04 at 12:45 -0700, Ian Lepore wrote:
> 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
> 
> differences between files attachment (aintc_spurious.diff)
> 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;
>  	}
>  

Hrm, now I'm not so sure I've interpretted the datasheet correctly.  If
that doesn't work, try this line:

 aintc_write_4(INTC_SIR_IRQ, 0);

And if that doesn't work, then... well... my BeagleBone will arrive in a
few days and I'll try other things. :)

-- Ian





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