SIGBUS error in the kernel's function; pa_quantum_to_paddr

Dear Everyone.



I’m trying to port QNX into my own SoC platform.

My own SoC platform is based ARM926EJ-S 32-bit RISC Core which operates
141MHz and has 32MB SDRAM(base: 0x10000000) and 1MB NOR Flash.

The tool is QNX Momentics 6.3.2 non-commercial version.

I was modifying IPL, startup, and serial device driver of the legacy Samsung
S3C2410 BSP which had developed by RT Solution ago.



I met the shutdown message with SIGBUS.


\


Shutdown[0,0] S/C/F=10/1/5 C/D=fe006950/% state(c0)= now lock

QNX Version 6.3.2 Release 2006/03/16-14:15:43EST

[0]PID-TID=1-1? P/T FL=00019001/09000000

armle context[fc43ff50]:

0000: fc404000 00000011 fe057060 fc404400 fc441140 fc441140 e3c0301f
fc439630

0020: 00000000 00000000 00000011 fc43ffa4 fc408000 fc43ff94 fe02dfe0
fc404624

0040: 600000d3

instruction[fc404624]:

d4 70 96 e5 40 70 c7 e3 d4 70 86 e5 01 20 a0 e3 12 24 a0 e1 08 20 8c e5 00
00

stack[fc43ff94]:

0000: fc43b6a8 fc43ffd8 fc43ffa8 fe02dc68 fe02df64 00000000 fe02b384
00000011

0020: fe05716c 00000001 fc439630 00000000 00000000 00000000 fc43ffec
fc43ffdc

0040: fe02bbcc fe02daf0 fc439630 fc43fffc fc43fff0 fe03e468 fe02bb7c
fc440f6c

0060: fc440000 fe0293e0 fe03e450 f7ffffff bdfffffe ffffdfff ffbfefdf
fffbffff



S/C/F => SIGBUS/BUS_ADRALN/FLTACCESS

C/D => Location of the kernel’s code and data

state => The state of the kernel

now – in the kernel

lock – nonpreemptible

exit – leaving kernel

specret – special return processing

any number – the interrupt nesting level

[x]PID-TID=y-z

On CPU x(think SMP), process y was running thread z when the
crash occurred

P/T:00019001 => 00010000 + => _NTO_PF_NOCLDSTOP

00000001 + => _NTO_PF_SLEADER

00008000 + => _NTO_PF_RING0

00001000 => _NTO_PF_CHECK_INTR

FL:09000000=> 08000000 + => _NTO_TF_NOMULTISIG

01000000 => _NTO_TF_ALIGN_FAULT

PF => The process flags for the ASPACE PID

context => The register set

instruction => fc404624 The instruction on which the error
occurred

stack The contents of the stack






Thus, I debugged my BSP by TRACE32 ARM In-Circuit Debugger.



Attached 2-1.PNG image file is my debugging information.

In pa_quantum_to_paddr, during “ldr r3,[r3,+r1, lsl #0x2]” execution at the
address 0xFE01CB08,

when r1 was 0x2, operation was good but when r1 was 0xFFDF, exception
happened.

Because r3 had abnormal address at that time, memory access violation
happened.



Pa_quantum_to_paddr is the function of the kernel and thus I have problems
to debug it.



What source code out of the startup source code or serial device driver
source code causes this problem ?



After meeting shutdown message, I saw where PC is located.

You can look at this at the attached file “trace32.0219.PNG”.

In addition, You can see QNX’s procnto is loaded and running.



Best regards.



Pusik.