Hello Sebastian,

On 2023-10-19 15:44, Sebastian Huber wrote:
On 19.10.23 12:22, Martin Åberg wrote:
On 2023-10-13 13:00, Sebastian Huber wrote >> LEON3_Timer_Regs is probed in 
amba.c. There is a link time option to
set GPTIMER core index (leon3_timer_core_index). Instances could have unique GPTIMER cores associated.

The preprocessor symbols LEON3_CLOCK_INDEX (clock driver) and LEON3_COUNTER_GPTIMER_INDEX (timecounter) are used as subtimer index of the GPTIMER core LEON3_Timer_Regs.

For CPU0 these are:
   - LEON3_CLOCK_INDEX is 0 (equal to hardware processor index)
   - LEON3_COUNTER_GPTIMER_INDEX is 1 (LEON3_CLOCK_INDEX+1)
For CPU1 these are:
   - LEON3_CLOCK_INDEX is 1 (equal to hardware processor index)
   - LEON3_COUNTER_GPTIMER_INDEX is 2 (LEON3_CLOCK_INDEX+1)
etc...

In the case when LEON3_Timer_Regs is different on CPU0 and CPU1, there is no conflict but will leave low-numbered subtimers unused. (Behavior not introduced by this patch.)

In the case when LEON3_Timer_Regs is equal on the CPU0 and CPU1 instances, it appears there is now a conflict between CPU0:LEON3_COUNTER_GPTIMER_INDEX and CPU1:LEON3_CLOCK_INDEX.

Ok, I suggest to change the LEON3_CLOCK_INDEX definition to:

/**
  * @brief This constant defines the index of the GPTIMER timer used by the
  *   clock driver.
  */
#if defined(RTEMS_MULTIPROCESSING)
#define LEON3_CLOCK_INDEX \
   ( leon3_timer_core_index != 0 ? 0 : 2 * LEON3_Cpu_Index )
#else
#define LEON3_CLOCK_INDEX 0
#endif

OK!


/**
  * @brief This constant defines the index of the GPTIMER timer used by the
  *   CPU counter if the CPU counter uses the GPTIMER.
  */
#if defined(RTEMS_SMP)
#define LEON3_COUNTER_GPTIMER_INDEX ( LEON3_CLOCK_INDEX + 1 )
#else
#define LEON3_COUNTER_GPTIMER_INDEX LEON3_CLOCK_INDEX
#endif

The rtems_configuration_get_user_multiprocessing_table() is always != NULL if RTEMS_MULTIPROCESSING is defined.


With the suggested update of the LEON3_CLOCK_INDEX definition, the following should be enough for all cases:

#define LEON3_COUNTER_GPTIMER_INDEX ( LEON3_CLOCK_INDEX + 1 )


--
Best regards,

Martin Åberg
Software Engineer
Frontgrade Gaisler
martin.ab...@gaisler.com

Frontgrade Gaisler AB, Kungsgatan 12, SE-411 19 GÖTEBORG, Sweden.
+46 (0) 31 775 8650, www.gaisler.com
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to