Hang with isync

Benjamin Herrenschmidt benh at kernel.crashing.org
Thu Sep 21 07:35:11 EST 2006


On Tue, 2006-09-19 at 18:16 -0700, Manoj Sharma wrote:
>         Hi,
>         
>         We use linux kernel 2.4.20 on ppc405 and the system hangs once
>         in a while when isync gets called in this function: 
>         
>         _GLOBAL(_nmask_and_or_msr)
>             mfmsr   r0      /* Get current msr */
>             andc    r0,r0,r3    /* And off the bits set in r3 (first
>         parm) */ 
>             or  r0,r0,r4    /* Or on the bits in r4 (second parm) */
>             sync            /* Some chip revs have problems here... */
>             isync
>             mtmsr   r0      /* Update machine state */
>             isync
>             blr         /* Done */ 
>         
>          2.5 onwards, I find that "sync; isync" has been replaced by a
>         macro SYNC (defined only for 601). I don't find it in any
>         changelog and reason for the change.
>         
>         Can someone give some information on this change? 

Regardless of the change... on 2.4, _nmask_and_or_msr() was used for a
number of things. We would need to know where it was called from with
what values as arguments to have an idea of what's going wrong. It's
probably not dying on the isync, but rather on the following mtmsr due
to a problem with the values passed in....

Ben.






More information about the Linuxppc-dev mailing list