Lines Matching +full:used +full:- +full:by +full:- +full:rtas

1 // SPDX-License-Identifier: GPL-2.0-or-later
36 #include <asm/rtas.h>
43 #include <asm/code-patching.h>
49 * The Primary thread of each non-boot processor was started from the OF client
50 * interface by prom_hold_cpus and is spinning on secondary_hold_spinloop.
58 int qcss_tok = rtas_token("query-cpu-stopped-state"); in smp_query_cpu_stopped()
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
80 * started from Open Firmware. For anything else, call RTAS with the
84 * 0 - failure
85 * 1 - success
96 /* Already started by OF and sitting in spin loop */ in smp_startup_cpu()
108 task_thread_info(paca_ptrs[lcpu]->__current)->preempt_count = 0; in smp_startup_cpu()
111 * If the RTAS start-cpu token does not exist then presume the in smp_startup_cpu()
114 start_cpu = rtas_token("start-cpu"); in smp_startup_cpu()
120 printk(KERN_ERR "start-cpu failed: %i\n", status); in smp_startup_cpu()
143 return -EINVAL; in smp_pSeries_kick_cpu()
146 return -ENOENT; in smp_pSeries_kick_cpu()
150 * cpu_start field to become non-zero After we set cpu_start, in smp_pSeries_kick_cpu()
153 paca_ptrs[nr]->cpu_start = 1; in smp_pSeries_kick_cpu()
165 /* Cause IPI as setup by the interrupt controller (xics or xive) */
209 /* Doorbells can only be used for IPIs between SMT siblings */ in pSeries_smp_probe()
215 * KVM emulates doorbells by disabling FSCR[MSGP] so msgsndp in pSeries_smp_probe()
235 * faster than the interrupt controller, and they can be used by in pSeries_smp_probe()
239 ic_cause_ipi = smp_ops->cause_ipi; in pSeries_smp_probe()
240 smp_ops->cause_ipi = dbell_or_ic_cause_ipi; in pSeries_smp_probe()
245 .cause_ipi = NULL, /* Filled at runtime by pSeries_smp_probe() */
259 pr_debug(" -> smp_init_pSeries()\n"); in smp_init_pseries()
267 * We know prom_init will not have started them if RTAS supports in smp_init_pseries()
268 * query-cpu-stopped-state. in smp_init_pseries()
270 if (rtas_token("query-cpu-stopped-state") == RTAS_UNKNOWN_SERVICE) { in smp_init_pseries()
282 /* Non-lpar has additional take/give timebase */ in smp_init_pseries()
283 if (rtas_token("freeze-time-base") != RTAS_UNKNOWN_SERVICE) { in smp_init_pseries()
284 smp_ops->give_timebase = rtas_give_timebase; in smp_init_pseries()
285 smp_ops->take_timebase = rtas_take_timebase; in smp_init_pseries()
288 pr_debug(" <- smp_init_pSeries()\n"); in smp_init_pseries()