Commit 227bbaab authored by Nysal Jan K.A's avatar Nysal Jan K.A Committed by Michael Ellerman

powerpc/topology: Check if a core is online

topology_is_core_online() checks if the core a CPU belongs to
is online. The core is online if at least one of the sibling
CPUs is online. The first CPU of an online core is also online
in the common case, so this should be fairly quick.

Fixes: 73c58e7e ("powerpc: Add HOTPLUG_SMT support")
Signed-off-by: default avatarNysal Jan K.A <nysal@linux.ibm.com>
Reviewed-by: default avatarShrikanth Hegde <sshegde@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20240731030126.956210-3-nysal@linux.ibm.com
parent 6c17ea1f
...@@ -145,6 +145,7 @@ static inline int cpu_to_coregroup_id(int cpu) ...@@ -145,6 +145,7 @@ static inline int cpu_to_coregroup_id(int cpu)
#ifdef CONFIG_HOTPLUG_SMT #ifdef CONFIG_HOTPLUG_SMT
#include <linux/cpu_smt.h> #include <linux/cpu_smt.h>
#include <linux/cpumask.h>
#include <asm/cputhreads.h> #include <asm/cputhreads.h>
static inline bool topology_is_primary_thread(unsigned int cpu) static inline bool topology_is_primary_thread(unsigned int cpu)
...@@ -156,6 +157,18 @@ static inline bool topology_smt_thread_allowed(unsigned int cpu) ...@@ -156,6 +157,18 @@ static inline bool topology_smt_thread_allowed(unsigned int cpu)
{ {
return cpu_thread_in_core(cpu) < cpu_smt_num_threads; return cpu_thread_in_core(cpu) < cpu_smt_num_threads;
} }
#define topology_is_core_online topology_is_core_online
static inline bool topology_is_core_online(unsigned int cpu)
{
int i, first_cpu = cpu_first_thread_sibling(cpu);
for (i = first_cpu; i < first_cpu + threads_per_core; ++i) {
if (cpu_online(i))
return true;
}
return false;
}
#endif #endif
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment