Questions on interrupt vector assignment on MPC8641D

Scott Wood scottwood at freescale.com
Fri Oct 15 02:51:26 EST 2010


On Thu, 14 Oct 2010 11:27:09 +0800
"tiejun.chen" <tiejun.chen at windriver.com> wrote:

> tiejun.chen wrote:
> > Scott Wood wrote:
> >> On Wed, 13 Oct 2010 09:17:01 +0800
> >> "tiejun.chen" <tiejun.chen at windriver.com> wrote:
> >>
> >>> Scott Wood wrote:
> >>>> The crash is happening somewhere in mpic_set_irq_type():
> >>> Agreed. That is just where I pointed out on my email replied for OOPS. To enable
> >>> DBG to figure out 'src' and 'mpic->irq_count' from the file,
> >>> arch/powerpc/sysdev/mpic.c,    .
> >>> ======
> >>> int mpic_set_irq_type(unsigned int virq, unsigned int flow_type)
> >>> {
> >>> 	......
> >>> 	if (src >= mpic->irq_count)
> >>> 		return -EINVAL;
> >>> 			^
> >>> 			I think this OOPS may be from here.
> >> No, it's after that.  His board code is using the mpic's "isu" remapping
> > 
> > I means OOPS is *from* here. According to David's call trace,
> > mpic_set_irq_type() is the last issued function. And that corresponding return
> > value, R3, is '0xffffffea', -22, and also '-EINVAL'.

Just because that value is in r3 doesn't mean that src >=
mpic->irq_count.

Consider something like:

cmplw	r4, r5
li	r3, -EINVAL
bgelr
...


-Scott



More information about the Linuxppc-dev mailing list