<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DE" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi Joel,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Yes, that should be the case in patch 5/9.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">There, the addition to cpukit/score/cpu/i386/include/rtems/score/cpu.h should be the struct the ticket is talking about.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">   Jan<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Joel Sherrill [mailto:joel@rtems.org]
<br>
<b>Sent:</b> Monday, June 1, 2020 10:58 PM<br>
<b>To:</b> Sommer, Jan<br>
<b>Cc:</b> rtems-devel@rtems.org<br>
<b>Subject:</b> Re: [PATCH v1 0/9] Enable SMP for pc386 based bsps<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Thank you for taking the time and energy to do this. It <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Did your patch comments close <a href="https://devel.rtems.org/ticket/3335">https://devel.rtems.org/ticket/3335</a>? <o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Sun, May 31, 2020 at 9:23 AM Jan Sommer <<a href="mailto:jan.sommer@dlr.de">jan.sommer@dlr.de</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal">Hello,<br>
<br>
Here is a patch set which should enable SMP again for the pc386-based BSPs (mainly tested with pc686).<br>
So far I only tested it with qemu. Tests on real hardware are pending.<br>
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.<br>
Subsequent runs of the testsuite with a current master build already produce different numbers of failed/timeout/invalid tests.<br>
<br>
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.<br>
Regarding smptests, the current status with qemu-4.2.0 and 4 cores looks like this:<br>
<br>
Passed:        55<br>
Failed:         1<br>
User Input:     0<br>
Expected Fail:  0<br>
Indeterminate:  0<br>
Benchmark:      0<br>
Timeout:        2<br>
Invalid:        1<br>
Wrong Version:  0<br>
Wrong Build:    0<br>
Wrong Tools:    0<br>
-----------------<br>
Total:         59<br>
Failures:<br>
 smpatomic01.exe<br>
Timeouts:<br>
 smpclock01.exe<br>
 smpopenmp01.exe<br>
Invalid:<br>
 smpfatal09.exe<br>
<br>
Some details on the missing tests:<br>
-----------------------------------<br>
smpfatal09: This test actually does pass, but because the fatal error handler is executed before the console is initialized, no output is produced.<br>
<br>
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.<br>
At the same time CPU1 is waiting for a timer event before releasing the barrier. Any hints how to resolve this are very welcome.<br>
<br>
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:<br>
] === atomic or/and test case ===<br>
] worker 0 value: 1<br>
] worker 1 value: 0<br>
] atomic value: expected = 1, actual = 1<br>
] ../../../../../../smp-refex-rtems/c/src/../../testsuites/smptests/smpatomic01/init.c: 404 n - s < LONG_MAX<br>
] <br>
] *** FATAL ***<br>
<br>
smpopenmp01: I don't know more about openmp then what is on wikipedia. It has currently a low priority for me.<br>
<br>
Some details regarding the patch set:<br>
-------------------------------------<br>
<br>
- 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.<br>
- 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.<br>
- The last 4 commits are smaller changes made after debugging certain test cases.<br>
<br>
<br>
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.<br>
If you would like to see any logs from a testsuite run with certain parameters, just tell me.<br>
<br>
Best regards,<br>
<br>
    Jan<br>
<br>
<br>
<br>
Jan Sommer (9):<br>
  bsp/pc386: Fix Makefile for building with SMP<br>
  bsp/pc386: Turn start16.S into a startAP.S<br>
  bsp/pc386: Update GDT to work for SMP<br>
  bsp/pc386: Update context switch and restore<br>
  bsp/pc386: Define interrupt stack frame for smp<br>
  bsps/pc386: Fix Clock_isr for SMP<br>
  bsps/pc386: Separate smp API functions. Makes smpfatal08 link<br>
  smpsignal01: Change state before sending the signal<br>
  bsp/pc386: Disable interrupt nesting for job handler<br>
<br>
 bsps/i386/include/bsp/smp-imps.h                   |   3 +<br>
 bsps/i386/pc386/clock/ckinit.c                     |   2 +-<br>
 bsps/i386/pc386/include/bsp.h                      |   7 +<br>
 bsps/i386/pc386/include/bsp/tblsizes.h             |   8 +-<br>
 bsps/i386/pc386/start/bspsmp.c                     |  43 ++++<br>
 bsps/i386/pc386/start/getcpuid.c                   |  22 --<br>
 bsps/i386/pc386/start/ldsegs.S                     |   4 +-<br>
 bsps/i386/pc386/start/smp-imps.c                   |  79 ++++---<br>
 bsps/i386/pc386/start/start16.S                    | 254 ---------------------<br>
 bsps/i386/pc386/start/startAP.S                    | 118 ++++++++++<br>
 bsps/i386/shared/irq/irq_asm.S                     | 102 +++++----<br>
 c/src/lib/libbsp/i386/pc386/Makefile.am            |   8 +-<br>
 cpukit/score/cpu/i386/cpu_asm.S                    |  74 ++++--<br>
 cpukit/score/cpu/i386/include/rtems/asm.h          |  26 +++<br>
 cpukit/score/cpu/i386/include/rtems/score/cpu.h    |  32 +--<br>
 .../score/cpu/i386/include/rtems/score/cpuimpl.h   |   2 +<br>
 testsuites/smptests/smpsignal01/init.c             |   2 +-<br>
 17 files changed, 382 insertions(+), 404 deletions(-)<br>
 create mode 100644 bsps/i386/pc386/start/bspsmp.c<br>
 delete mode 100644 bsps/i386/pc386/start/getcpuid.c<br>
 delete mode 100644 bsps/i386/pc386/start/start16.S<br>
 create mode 100644 bsps/i386/pc386/start/startAP.S<br>
<br>
-- <br>
2.12.3<br>
<br>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</body>
</html>