[PATCH v1 0/9] Enable SMP for pc386 based bsps
Jan.Sommer at dlr.de
Jan.Sommer at dlr.de
Thu Jun 18 07:42:22 UTC 2020
> -----Original Message-----
> From: Chris Johns [mailto:chrisj at rtems.org]
> Sent: Thursday, June 11, 2020 4:22 AM
> To: Sommer, Jan; devel at rtems.org
> Subject: Re: [PATCH v1 0/9] Enable SMP for pc386 based bsps
>
> On 1/6/20 12:22 am, Jan Sommer wrote:
> > Hello,
> >
[...]
> >
> > 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.
>
> Please create a ticket.
https://devel.rtems.org/ticket/4008
> > 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.
>
> Please create a ticket.
https://devel.rtems.org/ticket/4009
> > 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.
>
> This is something I would like to see. I feel a first step of getting the
> changes merge as SMP experimental would be acceptable if no one objects
> and then
> branch release can look at moving SMP to functional if the changed lets us do
> that. That may also depend on RTEMS 6 and it's time frame. My hope is a lot
> shorter than 5.
>
Ok, the single core testsuites now ran through on hardware.
Here is the comparison between the pre-SMP-patches and the current snapshot.
For the latter I also built everything from the ground up to test the snapshot. Everything worked fine.
Pre-SMP-Patches: 5.0.0-m2006-2 release snapshot:
Passed: 564 Passed: 570
Failed: 7 Failed: 6
User Input: 9 User Input: 4
Expected Fail: 0 Expected Fail: 0
Indeterminate: 0 Indeterminate: 0
Benchmark: 3 Benchmark: 3
Timeout: 6 Timeout: 9
Invalid: 3 Invalid: 0
Wrong Version: 0 Wrong Version: 0
Wrong Build: 0 Wrong Build: 0
Wrong Tools: 0 Wrong Tools: 0
------------------ ------------------
Total: 592 Total: 592
Failures: Failures:
dl01.exe dl02.exe
dl05.exe dl06.exe
dl07.exe dl07.exe
dl08.exe dl08.exe
dl09.exe dl09.exe
tmcontext01.exe spconsole01.exe
tmfine01.exe User Input:
User Input: dl10.exe
dl10.exe monitor.exe
monitor.exe termios.exe
termios.exe top.exe
top.exe Benchmark:
ttest01.exe dhrystone.exe
tztest.exe linpack.exe
uid01.exe whetstone.exe
capture.exe Timeouts:
cdtest.exe dl04.exe
Benchmark: dl05.exe
dhrystone.exe cdtest.exe
linpack.exe cxx_iostream.exe
whetstone.exe fileio.exe
Timeouts: spfatal09.exe
dl02.exe spfatal12.exe
dl04.exe spstkalloc02.exe
dl06.exe tmtimer01.exe
cxx_iostream.exe Average test time: 0:00:49.426009
fileio.exe Testing time : 8:07:40.197135
spfatal12.exe
Invalid:
fsnofs01.exe
fsrfsbitmap01.exe
fsrofs01.exe
Average test time: 0:00:47.982294
Testing time : 7:53:25.518093
Next, I will look at the tests in SMP configuration.
Best regards,
Jan
> Chris
>
> > 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
> >
More information about the devel
mailing list