This is the stack trace.<br><br>Registers:<br>GPR00: 00069030 C01F3000 C01F1080 00000000 00048000 C0639F48 C01F1080 FFFFFC18<br>GPR08: C02203FC 00000020 C0638000 C01F31B0 42FEE022 1056A7F8 00FE502A 00000000<br>GPR16: 00000000 FFC44232 00000000 00000000 FFC441EC 00080000 00010000 0000000A
<br>GPR24: 00000000 0007CD80 00000CE0 00000000 00000000 C02B0000 00000000 C02B0000<br><br>NIP; c0005da4 _<_nmask_and_or_msr+0x18/0x20 [kernel]><br>Trace; c0025328 _<check_pgt_cache+0x20/0x30 [kernel]><br>Trace; c0004f4c _<idled+0x58/0x70 [kernel]>
<br>Trace; c0004f74 _<cpu_idle+0x10/0x24 [kernel]><br>Trace; c00012b0 _<rest_init+0x30/0x40 [kernel]><br>Trace; c02a45a4 _<start_kernel+0x168/0x17c [kernel]><br>Trace; c0000250 _<skpinv+0x1f8/0x234 [kernel]>
<br><br><br><div><span class="gmail_quote">On 9/20/06, <b class="gmail_sendername">Benjamin Herrenschmidt</b> <<a href="mailto:benh@kernel.crashing.org">benh@kernel.crashing.org</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Tue, 2006-09-19 at 18:16 -0700, Manoj Sharma wrote:<br>> Hi,<br>><br>> We use linux kernel 2.4.20 on ppc405 and the system hangs once<br>> in a while when isync gets called in this function:
<br>><br>> _GLOBAL(_nmask_and_or_msr)<br>> mfmsr r0 /* Get current msr */<br>> andc r0,r0,r3 /* And off the bits set in r3 (first<br>> parm) */`<br>> or r0,r0,r4 /* Or on the bits in r4 (second parm) */
<br>> sync /* Some chip revs have problems here... */<br>> isync<br>> mtmsr r0 /* Update machine state */<br>> isync<br>> blr /* Done */
<br>><br>> 2.5 onwards, I find that "sync; isync" has been replaced by a<br>> macro SYNC (defined only for 601). I don't find it in any<br>> changelog and reason for the change.
<br>><br>> Can someone give some information on this change?<br><br>Regardless of the change... on 2.4, _nmask_and_or_msr() was used for a<br>number of things. We would need to know where it was called from with
<br>what values as arguments to have an idea of what's going wrong. It's<br>probably not dying on the isync, but rather on the following mtmsr due<br>to a problem with the values passed in....<br><br>Ben.<br><br><br><br></blockquote>
</div><br>