Hi,

Last week the clock driver for SMP ARM BSPs was fixed which allowed me to start executing the SMP tests for my GSoC project. However, today I seem to be stuck with a clock driver issue again.

When I try to execute SMP tests, the tests exit with no output and a exit code of 0. On trying to run them in QEMU and breaking on _Terminate(), I found out that the tests exit because of an `RTEMS_FATAL_SOURCE_BSP` error which propagates from the `a9mpcore_clock_secondary_initialization` method. The complete backtrace is:

(gdb) bt
#0  _Terminate (the_source=RTEMS_FATAL_SOURCE_BSP, is_internal=false, 
the_error=261) at 
../../../../../../../src/rtems/c/src/../../cpukit/score/src/interr.c:39
#1  0x0010f76a in rtems_fatal (source=RTEMS_FATAL_SOURCE_BSP, error=261) at 
../../../../../../../src/rtems/c/src/../../cpukit/sapi/src/fatal2.c:34
#2  0x00100b0c in bsp_fatal (code=BSP_ARM_A9MPCORE_FATAL_CLOCK_SMP_INIT) at 
../../../../../.././realview_pbx_a9_qemu_smp/lib/include/bsp/fatal.h:130
#3  0x00100d0a in a9mpcore_clock_secondary_initialization (gt=0x1f000200, 
cmpval=5963712, interval=1000000) at 
../../../../../../../../../src/rtems/c/src/lib/libbsp/arm/realview-pbx-a9/../shared/arm-a9mpcore-clock-config.c:131
#4  0x00100dc2 in a9mpcore_clock_initialize () at 
../../../../../../../../../src/rtems/c/src/lib/libbsp/arm/realview-pbx-a9/../shared/arm-a9mpcore-clock-config.c:151
#5  0x00100f92 in Clock_initialize (major=1, minor=0, pargp=0x0) at 
../../../../../../../../../src/rtems/c/src/lib/libbsp/arm/realview-pbx-a9/../shared/../../shared/clockdrv_shell.h:236
#6  0x0011e6f0 in rtems_io_initialize (major=1, minor=0, argument=0x0) at 
../../../../../../../src/rtems/c/src/../../cpukit/sapi/src/ioinitialize.c:36
#7  0x0010f79e in _IO_Initialize_all_drivers () at 
../../../../../../../src/rtems/c/src/../../cpukit/sapi/src/io.c:33
#8  0x0010f73a in rtems_initialize_executive () at 
../../../../../../../src/rtems/c/src/../../cpukit/sapi/src/exinit.c:139
#9  0x00101316 in boot_card (cmdline=0x0) at 
../../../../../../../../../src/rtems/c/src/lib/libbsp/arm/realview-pbx-a9/../../shared/bootcard.c:78
#10 0x00100112 in bsp_vector_table_copy_done () at 
../../../../../../../../../src/rtems/c/src/lib/libbsp/arm/realview-pbx-a9/../shared/start/start.S:279
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

This seems to imply that RTEMS is exiting because the check on line 131 in arm-19mpcore-clock-config.c hits true and hence raises an error:
if (cmpval - a9mpcore_clock_get_counter(gt) >= interval)

And this seems to me to be a race condition since when running under GDB, this condition sometimes evaluates to false and the code continues executing. However, everytime that happens, RTEMS gets stuck in an infinite loop.

As a result, I am again unable to execute SMP tests. If there is any more debugging information I can provide, please let me know.

System: Arch Linux
RTEMS Baseline: 16706b723f788cd26a3d5cb475f5468a68dcf263
RSB Bareline: c476de6150f39afdf142c6f4420c59ba2f1aa2fe
QEMU Version: 2.3.50 (Couldn't find the commit hash, but built using RSB at the above mentioned baseline)

--
Thanking You,
Darshit Shah

Attachment: signature.asc
Description: PGP signature

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to