Thread (11 messages) flat view 11 messages, 4 authors, 2006-09-21

Re: Hang with isync

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2006-09-20 21:35:22

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help