linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* MV kernel on 405GP
@ 2001-01-08 16:12 Juha Okkonen
  2001-01-08 16:25 ` Jerry Van Baren
  0 siblings, 1 reply; 3+ messages in thread
From: Juha Okkonen @ 2001-01-08 16:12 UTC (permalink / raw)
  To: "LinuxEmbeddedMailList


	I have a custom board that uses IBM 405GP -prosessor. I have already
	modified ppcboot-0.5.3 for booting. And am trying to get Monta Vista's
	linux-2.4.0-test2 kernel to run on it also. But there is some problem
	with exceptions. When start_kernel(void)-function calls sti() to enable
	external interrupts, the prosessor hangs totally. I don't get any
register
	dumps or anything else either. I have been able to verify with kgdb
that
	everything works until update of MSR-register.

	If somebody has a version of the kernel modified for 405GP and ppcboot
	both working, I would like to have the sources or at least ideas about
	my problemn.

							'Okko


--
Juha Okkonen/CTO			         Juha.Okkonen@GreenCurrent.com
Green Current Oy				 Phone +358  9 2517 5525
Tekniikantie 21 E 226					      +358 41  517 6542
02150 Espoo

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: MV kernel on 405GP
  2001-01-08 16:12 MV kernel on 405GP Juha Okkonen
@ 2001-01-08 16:25 ` Jerry Van Baren
  2001-01-08 19:37   ` Frank Rowand
  0 siblings, 1 reply; 3+ messages in thread
From: Jerry Van Baren @ 2001-01-08 16:25 UTC (permalink / raw)
  To: linuxppc-embedded


Sounds like you have one or more pending interrupts that you are not
handling properly.  As soon as you enable external interrupts, you take
the vector, but don't clear the pending interrupt(s).  Since you don't
clear the interrupt, as soon as you leave the ISR, you get hit by
another interrupt.  Viola, instant loop.

Suggestions:
1) Check what interrupts are enabled and verify that they are handled
properly.
2) Mask any external interrupt you don't need right now.
3) If that doesn't work, mask all external interrupts and see if you
get further.
4) Re-enable the interrupts one at a time until you die again.
5) Repeat step #1 with the last interrupt you enabled :-).

gvb


At 06:12 PM 1/8/01 +0200, Juha Okkonen wrote:

>         I have a custom board that uses IBM 405GP -prosessor. I have
> already
>         modified ppcboot-0.5.3 for booting. And am trying to get
> Monta Vista's
>         linux-2.4.0-test2 kernel to run on it also. But there is some
> problem
>         with exceptions. When start_kernel(void)-function calls sti()
> to enable
>         external interrupts, the prosessor hangs totally. I don't get any
>register
>         dumps or anything else either. I have been able to verify
> with kgdb
>that
>         everything works until update of MSR-register.
>
>         If somebody has a version of the kernel modified for 405GP
> and ppcboot
>         both working, I would like to have the sources or at least
> ideas about
>         my problemn.
>
>                                                         'Okko
>
>
>--
>Juha
>Okkonen/CTO                                 Juha.Okkonen@GreenCurrent.com
>Green Current Oy                                Phone +358  9 2517 5525
>Tekniikantie 21 E 226                                         +358
>41  517 6542
>02150 Espoo
>


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: MV kernel on 405GP
  2001-01-08 16:25 ` Jerry Van Baren
@ 2001-01-08 19:37   ` Frank Rowand
  0 siblings, 0 replies; 3+ messages in thread
From: Frank Rowand @ 2001-01-08 19:37 UTC (permalink / raw)
  To: Jerry Van Baren; +Cc: linuxppc-embedded


Jerry Van Baren wrote:
>
> Sounds like you have one or more pending interrupts that you are not
> handling properly.  As soon as you enable external interrupts, you take
> the vector, but don't clear the pending interrupt(s).  Since you don't
> clear the interrupt, as soon as you leave the ISR, you get hit by
> another interrupt.  Viola, instant loop.
>
> Suggestions:
> 1) Check what interrupts are enabled and verify that they are handled
> properly.
> 2) Mask any external interrupt you don't need right now.
> 3) If that doesn't work, mask all external interrupts and see if you
> get further.
> 4) Re-enable the interrupts one at a time until you die again.
> 5) Repeat step #1 with the last interrupt you enabled :-).
>
> gvb
>
> At 06:12 PM 1/8/01 +0200, Juha Okkonen wrote:
>
> >         I have a custom board that uses IBM 405GP -prosessor. I have
> > already
> >         modified ppcboot-0.5.3 for booting. And am trying to get
> > Monta Vista's
> >         linux-2.4.0-test2 kernel to run on it also. But there is some
> > problem
> >         with exceptions. When start_kernel(void)-function calls sti()
> > to enable
> >         external interrupts, the prosessor hangs totally. I don't get any
> >register
> >         dumps or anything else either. I have been able to verify
> > with kgdb
> >that
> >         everything works until update of MSR-register.
> >
> >         If somebody has a version of the kernel modified for 405GP
> > and ppcboot
> >         both working, I would like to have the sources or at least
> > ideas about
> >         my problemn.
> >
> >                                                         'Okko
> >
> >
> >--
> >Juha
> >Okkonen/CTO                                 Juha.Okkonen@GreenCurrent.com
> >Green Current Oy                                Phone +358  9 2517 5525
> >Tekniikantie 21 E 226                                         +358
> >41  517 6542
> >02150 Espoo
> >
>


I assume you have the November 26 kernel (001126).  The following example is a
different version, but should work the same.

You can use kgdb to see what interrupts are being asserted.  This example shows
several different interrupts being asserted:




breakinst () at ppc-stub.c:895
895     }
Breakpoint 1 at 0xc0018038: file panic.c, line 54.
Breakpoint 2 at 0xc0037fcc: file buffer.c, line 318.
(gdb) l ppc4xx_pic_get_irq
153      */
154     int
155     ppc4xx_pic_get_irq(struct pt_regs *regs)
156     {
157             int irq;
158             unsigned long bits, mask = (1 << 31);
159
160             /*
161              * Only report the status of those interrupts that are actually
162              * enabled.
(gdb)
163              */
164
165     #ifdef CONFIG_IBM405
166             bits = mfdcr(DCRN_UICMSR);
167     #else
168             bits = mfdcr(DCRN_EXISR) & mfdcr(DCRN_EXIER);
169     #endif
170
171             /*
172              * Walk through the interrupts from highest priority to lowest, and
(gdb)
173              * report the first pending interrupt found.
174              */
175             /* ftr revisit - performance optimization */
176
177             for (irq = 0; irq < NR_IRQS; irq++, mask >>= 1) {
178                     if (bits & mask)
179                             break;
180             }
181
182             if (irq == NR_IRQS)
(gdb)
183                 irq = -1;
184
185             return (irq);
186     }
187
188     #ifdef CONFIG_IBM405
189
190     static void
191     ppc405_uic_enable(unsigned int irq)
192     {
(gdb) b 182
Breakpoint 3 at 0xc000ca1c: file ppc4xx_pic.c, line 182.
(gdb) c
Continuing.

Breakpoint 3, ppc4xx_pic_get_irq (regs=0x19) at ppc4xx_pic.c:182
182             if (irq == NR_IRQS)
(gdb) p bits
$1 = 0x40
(gdb) p/d irq
$3 = 25
(gdb) c
Continuing.
Breakpoint 3, ppc4xx_pic_get_irq (regs=0xb) at ppc4xx_pic.c:182
182             if (irq == NR_IRQS)
(gdb) p bits
$8 = 0x100000
(gdb) c
Continuing.

Breakpoint 3, ppc4xx_pic_get_irq (regs=0xc) at ppc4xx_pic.c:182
182             if (irq == NR_IRQS)
(gdb) p bits
$9 = 0x80000
(gdb) c
Continuing.

Breakpoint 3, ppc4xx_pic_get_irq (regs=0xa) at ppc4xx_pic.c:182
182             if (irq == NR_IRQS)
(gdb) p bits
$12 = 0x220000



-Frank
--
Frank Rowand <frank_rowand@mvista.com>
MontaVista Software, Inc

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2001-01-08 19:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-01-08 16:12 MV kernel on 405GP Juha Okkonen
2001-01-08 16:25 ` Jerry Van Baren
2001-01-08 19:37   ` Frank Rowand

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).