Dear All,
I have a strange problem regarding synchronous multiprocessing (SMP) with a
P1020 compatible board and I appreciate if could advise me. While booting
Linux, if I pass "-nosmp" as a boot argument, it works fine. Enabling the SMP
(removing the -nosmp"), Linux crashes and does not boot. Note that when it
crashes, the kernel log appears somehow randomly (find some of them below). Most of the time, it reports a "Data Cache Parity Error" or "Data Cache Push Parity Error" and sometimes "Unable to handle kernel paging request for instruction fetch" and “Unable to handle kernel paging request for data at address...”. In some cases, it even halts with no error message (just hangs up in the middle of the boot). So, I guess that the error can not be related
to one of the kernel drivers which are being loaded one by one.
Since the problem has a random nature, I even tried putting a big fan on the board, using a more strong power supply, using different Linux images with
different boot arguments such as -noapic , -nomce, ... None of them solved the problem.
Any comment is appreciated.
Unable to handle kernel paging request for instruction fetch
Faulting instruction address: 0x00000000
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=2 P1020 RDB
Modules linked in:
Machine check in kernel mode.
Caused by (from MCSR=20000000): Data Cache Push Parity Error
Oops: Machine check, sig: 7 [#2]
SMP NR_CPUS=2 P1020 RDB
Modules linked in:
Oops: Exception in kernel mode, sig: 4 [#1]
SMP NR_CPUS=2 P1020 RDB
Modules linked in:
Machine check in kernel mode.
Caused by (from MCSR=20000000): Data Cache Push Parity Error
Oops: Machine check, sig: 7 [#2]
SMP NR_CPUS=2 P1020 RDB
Modules linked in:
Fixing recursive fault but reboot is needed!
Unable to handle kernel paging request for instruction fetch
Faulting instruction address: 0x00000000
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=2 P1020 RDB
Modules linked in:
Unable to handle kernel paging request for data at address 0x81a403b0
Faulting instruction address: 0xc01d7d88
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=2 P1020 RDB
Arash, what is the kernel version you are running there ?
See below technical support comment:
Do you use Freescale SDK on the P1020 board?
What is value of the CONFIG_SMP variable in Linux kernel?
There is the following information about this parameter in the Linux kernel:
CONFIG_SMP:
This enables support for systems with more than one CPU. If you have a system with only one CPU, say N. If you have a system with more than one CPU, say Y. Note that the kernel does not currently support SMP machines with 603/603e/603ev or PPC750 ("G3") processors since they have inadequate hardware support for multiprocessor operation.
If you say N here, the kernel will run on single and multiprocessor machines, but will use only one CPU of a multiprocessor machine. If you say Y here, the kernel will run on single-processor machines. On a single-processor machine, the kernel will run faster if you say N here.
If you don't know what to do here, say N.
Symbol: SMP [=y]
Type : boolean
Prompt: Symmetric multi-processing support Defined at arch/powerpc/platforms/Kconfig.cputype:427
Depends on: PPC_BOOK3S [=n] || PPC_BOOK3E [=n] || FSL_BOOKE [=y] || PPC_47x [=n]
Location:
-> Processor support
Hi,
Thank you for your comment.
Yes. I use Freescale LTIB. When I enable SMP (so the value is Y) in kernel configuration, I put the number of CPUs equal to 2. When I disable it, the line to select the number of CPUs will not be there. In the latter case, the built uImage works fine. As I explained, I can also build the Linux with SMP (2 CPUs) but pass "-nosmp" in U-boot boot args. It works fine.
Regards,
Arash