Thank you for taking the time and energy to do this. It Did your patch comments close https://devel.rtems.org/ticket/3335?
On Sun, May 31, 2020 at 9:23 AM Jan Sommer <jan.som...@dlr.de> wrote: > Hello, > > Here is a patch set which should enable SMP again for the pc386-based BSPs > (mainly tested with pc686). > So far I only tested it with qemu. Tests on real hardware are pending. > To me it looks like there are no regressions for the standard non-SMP > version of the BSP, but it is difficult to say for sure. > Subsequent runs of the testsuite with a current master build already > produce different numbers of failed/timeout/invalid tests. > > However, even with the patch set applied the amount of passed tests > continues to range from 550-557 and the failed/timeout/invalid tests seem > to be generally the same. > Regarding smptests, the current status with qemu-4.2.0 and 4 cores looks > like this: > > Passed: 55 > Failed: 1 > User Input: 0 > Expected Fail: 0 > Indeterminate: 0 > Benchmark: 0 > Timeout: 2 > Invalid: 1 > Wrong Version: 0 > Wrong Build: 0 > Wrong Tools: 0 > ----------------- > Total: 59 > Failures: > smpatomic01.exe > Timeouts: > smpclock01.exe > smpopenmp01.exe > Invalid: > smpfatal09.exe > > Some details on the missing tests: > ----------------------------------- > smpfatal09: This test actually does pass, but because the fatal error > handler is executed before the console is initialized, no output is > produced. > > smpclock01.exe: Here CPU0 disables its local interrupts and waits for a > barrier release of CPU1. This means it doesn't handle timer interrupts > anymore and doesn't send corresponding IPIs to other CPUs. > At the same time CPU1 is waiting for a timer event before releasing the > barrier. Any hints how to resolve this are very welcome. > > smpatomic01: This test seems very large and a bit complicated to me. I > will have a look at it next, but any suggestions are welcome. It fails with > this information: > ] === atomic or/and test case === > ] worker 0 value: 1 > ] worker 1 value: 0 > ] atomic value: expected = 1, actual = 1 > ] > ../../../../../../smp-refex-rtems/c/src/../../testsuites/smptests/smpatomic01/init.c: > 404 n - s < LONG_MAX > ] > ] *** FATAL *** > > smpopenmp01: I don't know more about openmp then what is on wikipedia. It > has currently a low priority for me. > > Some details regarding the patch set: > ------------------------------------- > > - The first 3 commits are basically cleaning the original start16.S to be > used for starting the application processors only and updating the general > bring up infrastructure. > - The next 2 commits are updating the low level context switch and isr > handling in assembly. I used the ARM implementation as a template and tried > to stay comparably close to it. > - The last 4 commits are smaller changes made after debugging certain test > cases. > > > My next step would be to test the SMP functionality on HW. My goal would > be to get the final revision published as part of the RTEMS5 release. > If you would like to see any logs from a testsuite run with certain > parameters, just tell me. > > Best regards, > > Jan > > > > Jan Sommer (9): > bsp/pc386: Fix Makefile for building with SMP > bsp/pc386: Turn start16.S into a startAP.S > bsp/pc386: Update GDT to work for SMP > bsp/pc386: Update context switch and restore > bsp/pc386: Define interrupt stack frame for smp > bsps/pc386: Fix Clock_isr for SMP > bsps/pc386: Separate smp API functions. Makes smpfatal08 link > smpsignal01: Change state before sending the signal > bsp/pc386: Disable interrupt nesting for job handler > > bsps/i386/include/bsp/smp-imps.h | 3 + > bsps/i386/pc386/clock/ckinit.c | 2 +- > bsps/i386/pc386/include/bsp.h | 7 + > bsps/i386/pc386/include/bsp/tblsizes.h | 8 +- > bsps/i386/pc386/start/bspsmp.c | 43 ++++ > bsps/i386/pc386/start/getcpuid.c | 22 -- > bsps/i386/pc386/start/ldsegs.S | 4 +- > bsps/i386/pc386/start/smp-imps.c | 79 ++++--- > bsps/i386/pc386/start/start16.S | 254 > --------------------- > bsps/i386/pc386/start/startAP.S | 118 ++++++++++ > bsps/i386/shared/irq/irq_asm.S | 102 +++++---- > c/src/lib/libbsp/i386/pc386/Makefile.am | 8 +- > cpukit/score/cpu/i386/cpu_asm.S | 74 ++++-- > cpukit/score/cpu/i386/include/rtems/asm.h | 26 +++ > cpukit/score/cpu/i386/include/rtems/score/cpu.h | 32 +-- > .../score/cpu/i386/include/rtems/score/cpuimpl.h | 2 + > testsuites/smptests/smpsignal01/init.c | 2 +- > 17 files changed, 382 insertions(+), 404 deletions(-) > create mode 100644 bsps/i386/pc386/start/bspsmp.c > delete mode 100644 bsps/i386/pc386/start/getcpuid.c > delete mode 100644 bsps/i386/pc386/start/start16.S > create mode 100644 bsps/i386/pc386/start/startAP.S > > -- > 2.12.3 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel