Commit a1195ae3 authored by Kumar Gala's avatar Kumar Gala Committed by Carles Cufi
Browse files

smp: Move for loops to use arch_num_cpus instead of CONFIG_MP_NUM_CPUS



Change for loops of the form:

for (i = 0; i < CONFIG_MP_NUM_CPUS; i++)
   ...

to

unsigned int num_cpus = arch_num_cpus();
for (i = 0; i < num_cpus; i++)
   ...

We do the call outside of the for loop so that it only happens once,
rather than on every iteration.

Signed-off-by: default avatarKumar Gala <kumar.gala@intel.com>
parent 77dcf91f
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -133,7 +133,9 @@ void arch_sched_ipi(void)
	/* broadcast sched_ipi request to other cores
	 * if the target is current core, hardware will ignore it
	 */
	for (i = 0U; i < CONFIG_MP_NUM_CPUS; i++) {
	unsigned int num_cpus = arch_num_cpus();

	for (i = 0U; i < num_cpus; i++) {
		z_arc_connect_ici_generate(i);
	}
}
+3 −1
Original line number Diff line number Diff line
@@ -96,7 +96,9 @@ static void flush_owned_fpu(struct k_thread *thread)
	int i;

	/* search all CPUs for the owner we want */
	for (i = 0; i < CONFIG_MP_NUM_CPUS; i++) {
	unsigned int num_cpus = arch_num_cpus();

	for (i = 0; i < num_cpus; i++) {
		if (_kernel.cpus[i].arch.fpu_owner != thread) {
			continue;
		}
+3 −1
Original line number Diff line number Diff line
@@ -160,7 +160,9 @@ static void broadcast_ipi(unsigned int ipi)
	/*
	 * Send SGI to all cores except itself
	 */
	for (int i = 0; i < CONFIG_MP_NUM_CPUS; i++) {
	unsigned int num_cpus = arch_num_cpus();

	for (int i = 0; i < num_cpus; i++) {
		uint64_t target_mpidr = cpu_node_list[i];
		uint8_t aff0 = MPIDR_AFFLVL(target_mpidr, 0);

+3 −1
Original line number Diff line number Diff line
@@ -67,7 +67,9 @@ void arch_sched_ipi(void)
	key = arch_irq_lock();

	id = _current_cpu->id;
	for (i = 0U; i < CONFIG_MP_NUM_CPUS; i++) {
	unsigned int num_cpus = arch_num_cpus();

	for (i = 0U; i < num_cpus; i++) {
		if (i != id) {
			volatile uint32_t *r = (uint32_t *)get_hart_msip(i);
			*r = 1U;
+3 −1
Original line number Diff line number Diff line
@@ -67,7 +67,9 @@ FUNC_NORETURN void z_x86_prep_c(void *arg)
#endif

#if CONFIG_X86_STACK_PROTECTION
	for (int i = 0; i < CONFIG_MP_NUM_CPUS; i++) {
	unsigned int num_cpus = arch_num_cpus();

	for (int i = 0; i < num_cpus; i++) {
		z_x86_set_stack_guard(z_interrupt_stacks[i]);
	}
#endif
Loading