We are running QNX 6.1 Patch B on PowerPC’s with a custom BSP.
We have ported QNX to two custom boards, one based on the MPC7410 PPC and
another based on the MPC755. The MPC7410 system is running fine. The new
port to the MPC755 has a nasty problem. Anytime spawn() is invoked, the
entire QNX system hangs. All processes stop, regardless of priority. This
system hang doesn’t happen on the MPC7410.
It looks like it’s just spawn() that is the problem. We can start and kill
large processes from the ksh shell just fine.
This problem does not happen on our MPC7410 system. Other than this spawn
problem, both systems run great.
Both systems have MPC107 controllers, 128 MB of SDRAM, and the same Ethernet
controller. The MPC7410 system has 2 MB of external L2 cache, the MPC755
system has 1 MB of external L2. We believe that memory and cache integrity
are OK.
What could spawn() be doing to take down the whole kernel on the MPC755?
Here is a simple example program that runs fine on the MPC7410, but
completely hangs QNX on the MPC755:
#include <stdio.h>
#include <spawn.h>
int main(int argc, char** argv)
{
char* path ="/bin/ls";
printf(“About to spawn %s\n”, path);
fflush(stdout);
spawn(path, 0, NULL, NULL, NULL, NULL);
printf(“Spawn is done\n”);
return 0;
}
Here are the PPC registers on the MPC755 board seen by typical applications:
MSR = 0000.9932
HID0 = 0010.C0A4
HID1 = 8000.0000
L2CR = BB00.0060
We’ve submitted a request to QNX support for help on this. However, if
anyone has any thoughts regarding this problem then please share.
Thanks
Murtaza Amiji