Subject: Re: Xarm32VIDC Problem?
To: Dave Daniels <dave_daniels@argonet.co.uk>
From: Richard Earnshaw <rearnsha@buzzard.freeserve.co.uk>
List: port-arm32
Date: 02/22/2001 00:02:55
> In article <200102202141.f1KLfBD06548@buzzard.freeserve.co.uk>,
>    Richard Earnshaw <rearnsha@buzzard.freeserve.co.uk> wrote:
> > A stack backtrace would be useful, it would at least tell us the function 
> > that was dying.
> 
> I assume the command 'trace' produces this. I fear it is not going
> to be very helpful, though. All it says is:
> 
> _cpu_Debugger(_cpu_Debugger+0x10)
> _userret(_userret+0x10)
> _syscall(_syscall+0x10)

It is a clue, userret() contains the following code:

#ifdef DEBUG
        if (current_spl_level != _SPL_0) {
                printf("userret: spl level=%d on exit\n", 
current_spl_level);
#ifdef DDB
                Debugger();
#endif  /* DDB */
        }
#endif  /* DEBUG */

> 
> > Also, you could try just continuing.  What happens then?
> 
> I get the following messages:
> 
> db>continue
> userret: spl level=6 on exit
> Stopped in Xarm32VIDC at _cpu_Debugger+0x10: ldmdb r11,{r11,r13,r15}
> db>continue
> userret: spl level=6 on entry

Are you sure this was "on entry"?  I can't find that message in the source.


> Stopped in Xarm32VIDC at _cpu_Debugger+0x10: ldmdb r11,{r11,r13,r15}
> 
> The messages above were repeated a number of times. (About 10, I
> think.) After that I got the db> prompt but it would not take any
> more input. I found that the machine was working normally again
> when I switched to one of the other consoles. I found that there
> is a core dump (Xarm32VIDC.core). This is the first time this has
> been produced.
> 

So, we have a syscall that is trying to return control to the user without 
resetting the interrupt levels.  naughty!  A ktrace should tell us what it 
is, and how it fails.

R.