Lines Matching +full:cpu +full:- +full:nr

1 // SPDX-License-Identifier: GPL-2.0-or-later
22 #include <linux/cpu.h>
42 #include <asm/text-patching.h>
49 * The Primary thread of each non-boot processor was started from the OF client
54 /* Query where a cpu is now. Return codes #defined in plpar_wrappers.h */
62 "Firmware doesn't support query-cpu-stopped-state\n"); in smp_query_cpu_stopped()
69 "RTAS query-cpu-stopped-state failed: %i\n", status); in smp_query_cpu_stopped()
77 * smp_startup_cpu() - start the given cpu
84 * 0 - failure
85 * 1 - success
101 /* Check to see if the CPU out of FW already for kexec */ in smp_startup_cpu()
108 * If the RTAS start-cpu token does not exist then presume the in smp_startup_cpu()
109 * cpu is already spinning. in smp_startup_cpu()
117 printk(KERN_ERR "start-cpu failed: %i\n", status); in smp_startup_cpu()
124 static void smp_setup_cpu(int cpu) in smp_setup_cpu() argument
128 else if (cpu != boot_cpuid) in smp_setup_cpu()
132 vpa_init(cpu); in smp_setup_cpu()
134 cpumask_clear_cpu(cpu, of_spin_mask); in smp_setup_cpu()
137 static int smp_pSeries_kick_cpu(int nr) in smp_pSeries_kick_cpu() argument
139 if (nr < 0 || nr >= nr_cpu_ids) in smp_pSeries_kick_cpu()
140 return -EINVAL; in smp_pSeries_kick_cpu()
142 if (!smp_startup_cpu(nr)) in smp_pSeries_kick_cpu()
143 return -ENOENT; in smp_pSeries_kick_cpu()
147 * cpu_start field to become non-zero After we set cpu_start, in smp_pSeries_kick_cpu()
150 paca_ptrs[nr]->cpu_start = 1; in smp_pSeries_kick_cpu()
155 static int pseries_smp_prepare_cpu(int cpu) in pseries_smp_prepare_cpu() argument
158 return xive_smp_prepare_cpu(cpu); in pseries_smp_prepare_cpu()
163 static void (*ic_cause_ipi)(int cpu) __ro_after_init;
166 static void dbell_or_ic_cause_ipi(int cpu) in dbell_or_ic_cause_ipi() argument
168 if (doorbell_try_core_ipi(cpu)) in dbell_or_ic_cause_ipi()
171 ic_cause_ipi(cpu); in dbell_or_ic_cause_ipi()
174 static int pseries_cause_nmi_ipi(int cpu) in pseries_cause_nmi_ipi() argument
178 if (cpu == NMI_IPI_ALL_OTHERS) { in pseries_cause_nmi_ipi()
181 if (cpu < 0) { in pseries_cause_nmi_ipi()
182 WARN_ONCE(true, "incorrect cpu parameter %d", cpu); in pseries_cause_nmi_ipi()
186 hwcpu = get_hard_smp_processor_id(cpu); in pseries_cause_nmi_ipi()
238 ic_cause_ipi = smp_ops->cause_ipi; in pSeries_smp_probe()
239 smp_ops->cause_ipi = dbell_or_ic_cause_ipi; in pSeries_smp_probe()
258 pr_debug(" -> smp_init_pSeries()\n"); in smp_init_pseries()
267 * query-cpu-stopped-state. in smp_init_pseries()
281 pr_debug(" <- smp_init_pSeries()\n"); in smp_init_pseries()