#1573 closed enhancement (fixed)

Per CPU Patch -- SMP Step #1

Reported by: Joel Sherrill Owned by: Joel Sherrill
Priority: normal Milestone: 4.11
Component: score Version: 4.11
Severity: minor Keywords:
Cc: jennifer.averett@…, sebastian.huber@…, gedare@… Blocked By:
Blocking:

Description

I have been working on SMP support for RTEMS as a background task.
Now that 4.10 has branched, I wanted to get some of the code merged.
This patch is the first chunk. I have an SMP Exploration test which can
boot multi-core systems. I am testing on the SPARC/LEON3 (quad-core)
and x86/pc386 (qemu with up to 32 cores). I have tried to trim this
patch down to just the Per CPU data structure portion of the work.
This patch ...

+ Adds percpu data structure which contains

  • thread idle, executing, heir
  • isr nest level
  • context switch needed

+ It eliminates two variables about signal sent requiring a dispatch.

  • _ISR_Signals_to_thread_executing
  • _Thread_Do_post_task_switch_extension

That part is good. The bad part is that it touches EVERY IRQ vectoring
implementation. I have fully tested this on SPARC and i386. I have
compiled it for most, if not all, architectures along the way. I
also have modified the sparc64 .S code that is impacted.

Thanks to Ralf's autoconf suggestion, the sizeof(void *) issues is
dealt with. I checked that the number was 2 on the avr.

I also had a number of style changes along the way and have tried to
filter them out and went ahead and committed them. If you see those still
in here, we can commit those separately.

The next steps are to merge the --enable-smp autoconf logic, current
SMP data structure initialization code, and BSP support required
for SMP. I will try to keep the pieces as small as possible.

Please review and comment. I really would like to make more progress
on RTEMS SMP and have the work be public.

Attachments (3)

percpu-1.diff (91.2 KB) - added by Joel Sherrill on Jun 18, 2010 at 7:04:26 PM.
Per CPU Patch V1
percpu-2.diff (89.6 KB) - added by Joel Sherrill on Jun 23, 2010 at 4:07:40 PM.
Per CPU Patch V2
percpu-3.diff (89.7 KB) - added by Joel Sherrill on Jun 24, 2010 at 5:32:19 PM.
Per CPU Patch V3

Download all attachments as: .zip

Change History (14)

Changed on Jun 18, 2010 at 7:04:26 PM by Joel Sherrill

Attachment: percpu-1.diff added

Per CPU Patch V1

comment:1 Changed on Jun 21, 2010 at 5:27:20 PM by Gedare Bloom

Cc: giddyup44@… added

comment:2 Changed on Jun 22, 2010 at 10:00:56 AM by Sebastian Huber

Cc: Sebastian Huber added

Changed on Jun 23, 2010 at 4:07:40 PM by Joel Sherrill

Attachment: percpu-2.diff added

Per CPU Patch V2

comment:3 Changed on Jun 23, 2010 at 4:07:40 PM by Joel Sherrill

attachments.isobsolete: 01

Changed on Jun 24, 2010 at 5:32:19 PM by Joel Sherrill

Attachment: percpu-3.diff added

Per CPU Patch V3

comment:4 Changed on Jun 24, 2010 at 5:32:19 PM by Joel Sherrill

attachments.isobsolete: 01

comment:5 Changed on Jun 28, 2010 at 11:41:10 PM by Joel Sherrill

Resolution: fixed
Status: newclosed

comment:6 Changed on Jul 14, 2010 at 7:22:03 AM by Sebastian Huber

Resolution: fixed
Status: closedreopened

comment:7 Changed on Jul 16, 2010 at 7:53:18 AM by Sebastian Huber

Resolution: fixed
Status: reopenedclosed

comment:8 Changed on Jul 20, 2010 at 7:43:39 AM by Sebastian Huber

Resolution: fixed
Status: closedreopened

comment:9 Changed on May 10, 2011 at 12:36:02 PM by Jennifer Averett

Cc: Jennifer Averett added

comment:10 Changed on Nov 22, 2012 at 3:00:01 PM by Sebastian Huber

Resolution: fixed
Status: reopenedclosed

Fixed.

comment:11 Changed on Nov 24, 2014 at 6:58:28 PM by Gedare Bloom

Version: HEAD4.11

Replace Version=HEAD with Version=4.11 for the tickets with Milestone >= 4.11

Note: See TracTickets for help on using tickets.