Lines Matching +full:ipi +full:- +full:id

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
6 * -- Added support for Inter Processor Interrupts
9 * -- Initial Write (Borrowed heavily from ARM)
54 return -EINVAL; in arc_get_cpu_map()
57 return -EINVAL; in arc_get_cpu_map()
64 * "possible-cpus" property in DeviceTree pretend all [0..NR_CPUS-1] exist.
70 if (arc_get_cpu_map("possible-cpus", &cpumask)) { in arc_init_cpu_possible()
71 pr_warn("Failed to get possible-cpus from dtb, pretending all %u cpus exist\n", in arc_init_cpu_possible()
86 * - Initialise the CPU possible map early - this describes the CPUs
88 * - Call early smp init hook. This can initialize a specific multi-core
117 * Default smp boot helper for Run-on-reset case where all cores start off
118 * together. Non-masters need to wait for Master to start running.
119 * This is implemented using a flag in memory, which Non-masters spin-wait on.
120 * Master sets it to cpu-id of core to "ungate" it.
145 /* for halt-on-reset, we've waited already */ in arc_platform_smp_wait_to_boot()
175 current->active_mm = mm; in start_kernel_secondary()
178 /* Some SMP H/w setup - for each cpu */ in start_kernel_secondary()
182 if (machine_desc->init_per_cpu) in start_kernel_secondary()
183 machine_desc->init_per_cpu(cpu); in start_kernel_secondary()
195 * Called from kernel_init( ) -> smp_init( ) - for each CPU
198 * -It booted, but was halted in head.S
199 * -It was configured to halt-on-reset
228 return -1; in __cpu_up()
248 * In arches with IRQ for each msg type (above), receiver can use IRQ-id to
249 * figure out what msg was sent. For those which don't (ARC has dedicated IPI
250 * IRQ), the msg-type needs to be conveyed via per-cpu data
275 * Call the platform specific IPI kick function, but avoid if possible: in ipi_send_msg_one()
278 * IPI corresponding to that msg. This is true, even if it is already in in ipi_send_msg_one()
279 * IPI handler, because !@old means it has not yet dequeued the msg(s) in ipi_send_msg_one()
280 * so @new msg can be a free-loader in ipi_send_msg_one()
320 * ipi_cpu_stop - handle IPI from smp_send_stop()
352 * arch-common ISR to handle for inter-processor interrupts
353 * Has hooks for platform specific IPI
360 pr_debug("IPI [%ld] received on cpu %d\n", in do_IPI()
367 * "dequeue" the msg corresponding to this IPI (and possibly other in do_IPI()
378 pr_info("IPI with bogus msg %ld in %ld\n", msg, copy); in do_IPI()
386 * API called by platform code to hookup arch-common ISR to their IPI IRQ
388 * Note: If IPI is provided by platform (vs. say ARC MCIP), their intc setup/map
389 * function needs to call irq_set_percpu_devid() for IPI IRQ, otherwise
406 rc = request_percpu_irq(virq, do_IPI, "IPI Interrupt", dev); in smp_ipi_irq_setup()