On Sat, Feb 22, 2014 at 5:02 PM, Chris Johns <chr...@rtems.org> wrote: > On 19/02/2014 7:52 pm, Sebastian Huber wrote: >> >> Module: rtems >> Branch: master >> Commit: 282bfd3b41e3725ac9f5fb08b1e391af02572f4f >> Changeset: >> http://git.rtems.org/rtems/commit/?id=282bfd3b41e3725ac9f5fb08b1e391af02572f4f >> >> Author: Sebastian Huber <sebastian.hu...@embedded-brains.de> >> Date: Tue Feb 18 13:03:27 2014 +0100 >> >> score: Move _SMP_Handler_initialize() >> >> --- >> >> cpukit/score/src/percpu.c | 31 ------------------------------- >> cpukit/score/src/smp.c | 22 ++++++++++++++++++++++ >> 2 files changed, 22 insertions(+), 31 deletions(-) >> >> diff --git a/cpukit/score/src/percpu.c b/cpukit/score/src/percpu.c >> index aa95aa9..c68f378 100644 >> --- a/cpukit/score/src/percpu.c >> +++ b/cpukit/score/src/percpu.c >> @@ -18,40 +18,9 @@ >> #include "config.h" >> #endif >> >> -#include <rtems/system.h> >> -#include <rtems/score/address.h> >> -#include <rtems/score/thread.h> >> #include <rtems/score/percpu.h> >> -#include <rtems/score/wkspace.h> >> -#include <rtems/config.h> >> -#include <string.h> >> >> #if defined(RTEMS_SMP) >> - >> - #include <rtems/score/smp.h> >> - >> - void _SMP_Handler_initialize(void) >> - { >> - uint32_t max_cpus = rtems_configuration_get_maximum_processors(); >> - uint32_t cpu; >> - >> - /* >> - * Discover and initialize the secondary cores in an SMP system. >> - */ >> - max_cpus = _CPU_SMP_Initialize( max_cpus ); >> - >> - _SMP_Processor_count = max_cpus; >> - >> - for ( cpu = 1 ; cpu < max_cpus; ++cpu ) { >> - const Per_CPU_Control *per_cpu = _Per_CPU_Get_by_index( cpu ); >> - >> - _Per_CPU_Wait_for_state( >> - per_cpu, >> - PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING >> - ); >> - } >> - } >> - >> void _Per_CPU_Change_state( >> Per_CPU_Control *per_cpu, >> Per_CPU_State new_state >> diff --git a/cpukit/score/src/smp.c b/cpukit/score/src/smp.c >> index 86116da..bfd77dc 100644 >> --- a/cpukit/score/src/smp.c >> +++ b/cpukit/score/src/smp.c >> @@ -29,6 +29,28 @@ >> #include <rtems/bspIo.h> >> #endif >> >> +void _SMP_Handler_initialize( void ) >> +{ >> + uint32_t max_cpus = rtems_configuration_get_maximum_processors(); >> + uint32_t cpu; >> + >> + /* >> + * Discover and initialize the secondary cores in an SMP system. >> + */ >> + max_cpus = _CPU_SMP_Initialize( max_cpus ); >> + >> + _SMP_Processor_count = max_cpus; >> + >> + for ( cpu = 1 ; cpu < max_cpus; ++cpu ) { >> + const Per_CPU_Control *per_cpu = _Per_CPU_Get_by_index( cpu ); >> + >> + _Per_CPU_Wait_for_state( >> + per_cpu, >> + PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING >> + ); >> + } >> +} > > > I do not agree with this approach. All cores need to be present before > continuing and it forces cpu 0 to be a "boot" or "primary" processor. This > design is not symmetric. > > Chris Chris, this patch is just moving around the code that exists. Feel free to file a PR if you think there is a bug in the existing code.
-Gedare > _______________________________________________ > rtems-devel mailing list > rtems-devel@rtems.org > http://www.rtems.org/mailman/listinfo/rtems-devel _______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel