Home
last modified time | relevance | path

Searched full:ipi (Results 1 – 25 of 348) sorted by relevance

12345678910>>...14

/Linux-v6.1/drivers/mailbox/
Dzynqmp-ipi-mailbox.c3 * Xilinx Inter Processor Interrupt(IPI) Mailbox Driver
15 #include <linux/mailbox/zynqmp-ipi-message.h>
23 /* IPI agent ID any */
26 /* indicate if ZynqMP IPI mailbox driver uses SMC calls or HVC calls */
30 /* Default IPI SMC function IDs */
39 /* IPI SMC Macros */
49 /* IPI mailbox status */
54 #define IPI_MB_CHNL_TX 0 /* IPI mailbox TX channel */
55 #define IPI_MB_CHNL_RX 1 /* IPI mailbox RX channel */
58 * struct zynqmp_ipi_mchan - Description of a Xilinx ZynqMP IPI mailbox channel
[all …]
/Linux-v6.1/Documentation/devicetree/bindings/mailbox/
Dxlnx,zynqmp-ipi-mailbox.yaml4 $id: "http://devicetree.org/schemas/mailbox/xlnx,zynqmp-ipi-mailbox.yaml#"
7 title: Xilinx IPI(Inter Processor Interrupt) mailbox controller
10 The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage
11 messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI
15 | Xilinx ZynqMP IPI Controller |
27 Hardware | | IPI Agent | | IPI Buffers | |
32 | Xilinx IPI Agent Block |
40 const: xlnx,zynqmp-ipi-mailbox
61 xlnx,ipi-id:
63 Remote Xilinx IPI agent ID of which the mailbox is connected to.
[all …]
/Linux-v6.1/arch/mips/kvm/
Dloongson_ipi.c3 * Loongson-3 Virtual IPI interrupt support.
51 static int loongson_vipi_read(struct loongson_kvm_ipi *ipi, in loongson_vipi_read() argument
59 struct ipi_state *s = &(ipi->ipistate[id]); in loongson_vipi_read()
96 static int loongson_vipi_write(struct loongson_kvm_ipi *ipi, in loongson_vipi_write() argument
104 struct kvm *kvm = ipi->kvm; in loongson_vipi_write()
106 struct ipi_state *s = &(ipi->ipistate[id]); in loongson_vipi_write()
155 struct loongson_kvm_ipi *ipi; in kvm_ipi_read() local
159 ipi = ipi_device->ipi; in kvm_ipi_read()
161 spin_lock_irqsave(&ipi->lock, flags); in kvm_ipi_read()
162 loongson_vipi_read(ipi, addr, len, val); in kvm_ipi_read()
[all …]
/Linux-v6.1/drivers/remoteproc/
Dmtk_scp_ipi.c17 * scp_ipi_register() - register an ipi function
20 * @id: IPI ID
21 * @handler: IPI handler
22 * @priv: private data for IPI handler
24 * Register an ipi function to receive ipi interrupt from SCP.
26 * Return: 0 if ipi registers successfully, -error on error.
49 * scp_ipi_unregister() - unregister an ipi function
52 * @id: IPI ID
54 * Unregister an ipi function to receive ipi interrupt from SCP.
108 * scp_ipi_lock() - Lock before operations of an IPI ID
[all …]
/Linux-v6.1/kernel/irq/
Dipi.c6 * This file contains driver APIs to the IPI subsystem.
9 #define pr_fmt(fmt) "genirq/ipi: " fmt
15 * irq_reserve_ipi() - Setup an IPI to destination cpumask
16 * @domain: IPI domain
17 * @dest: cpumask of CPUs which can receive the IPI
19 * Allocate a virq that can be used to send IPI to any CPU in dest mask.
31 pr_warn("Reservation on a non IPI domain\n"); in irq_reserve_ipi()
59 * The IPI requires a separate HW irq on each CPU. We require in irq_reserve_ipi()
62 * several IPI ranges. in irq_reserve_ipi()
80 pr_warn("Can't reserve IPI, failed to alloc descs\n"); in irq_reserve_ipi()
[all …]
/Linux-v6.1/include/linux/rpmsg/
Dmtk_rpmsg.h15 * struct mtk_rpmsg_info - IPI functions tied to the rpmsg device.
16 * @register_ipi: register IPI handler for an IPI id.
17 * @unregister_ipi: unregister IPI handler for a registered IPI id.
18 * @send_ipi: send IPI to an IPI id. wait is the timeout (in msecs) to wait
20 * @ns_ipi_id: the IPI id used for name service, or -1 if name service isn't
/Linux-v6.1/include/trace/events/
Dipi.h3 #define TRACE_SYSTEM ipi
13 * @mask: mask of recipient CPUs for the IPI
14 * @reason: string identifying the IPI purpose
56 * ipi_entry - called immediately before the IPI handler
58 * @reason: string identifying the IPI purpose
62 * for that IPI.
72 * ipi_exit - called immediately after the IPI handler returns
74 * @reason: string identifying the IPI purpose
78 * that IPI.
/Linux-v6.1/drivers/media/platform/mediatek/vpu/
Dmtk_vpu.h32 * For other IPI below, AP should send the request
52 * @IPI_MAX: The maximum IPI number
82 * vpu_ipi_register - register an ipi function
85 * @id: IPI ID
86 * @handler: IPI handler
87 * @name: IPI name
88 * @priv: private data for IPI handler
90 * Register an ipi function to receive ipi interrupt from VPU.
92 * Return: Return 0 if ipi registers successfully, otherwise it is failed.
101 * @id: IPI ID
[all …]
Dmtk_vpu.c154 * struct vpu_ipi_desc - VPU IPI descriptor
156 * @handler: IPI handler
157 * @name: the name of IPI handler
158 * @priv: the private data of IPI handler
170 * @id: IPI id
186 * @ipi_desc: VPU IPI descriptor
205 * @ipi_id_ack: The ACKs for registered IPI function sending
307 dev_err(&pdev->dev, "register vpu ipi id %d with invalid arguments\n", in vpu_ipi_register()
324 dev_err(vpu->dev, "failed to send ipi message\n"); in vpu_ipi_send()
345 dev_err(vpu->dev, "vpu_ipi_send: IPI timeout!\n"); in vpu_ipi_send()
[all …]
/Linux-v6.1/Documentation/virt/kvm/
Dvcpu-requests.rst49 order to perform some KVM maintenance. To do so, an IPI is sent, forcing
55 1) Send an IPI. This forces a guest mode exit.
70 as well as to avoid sending unnecessary IPIs (see "IPI Reduction"), and
71 even to ensure IPI acknowledgements are waited upon (see "Waiting for
160 then the caller will wait for each VCPU to acknowledge its IPI before
162 If, for example, the VCPU is sleeping, so no IPI is necessary, then
192 kick will send an IPI to force an exit from guest mode when necessary.
197 enter guest mode. This means that an optimized implementation (see "IPI
198 Reduction") must be certain when it's safe to not send the IPI. One
208 !kvm_request_pending() on its last check and then not receiving an IPI for
[all …]
/Linux-v6.1/arch/hexagon/kernel/
Dsmp.c38 static inline void __handle_ipi(unsigned long *ops, struct ipi_data *ipi, in __handle_ipi() argument
69 /* Used for IPI call from other CPU's to unmask int */
77 * This is based on Alpha's IPI stuff.
85 struct ipi_data *ipi = &per_cpu(ipi_data, cpu); in handle_ipi() local
88 while ((ops = xchg(&ipi->bits, 0)) != 0) in handle_ipi()
89 __handle_ipi(&ops, ipi, cpu); in handle_ipi()
102 struct ipi_data *ipi = &per_cpu(ipi_data, cpu); in send_ipi() local
104 set_bit(msg, &ipi->bits); in send_ipi()
212 /* Also need to register the interrupts for IPI */ in smp_prepare_cpus()
/Linux-v6.1/arch/arc/kernel/
Dsmp.c248 * figure out what msg was sent. For those which don't (ARC has dedicated IPI
274 * Call the platform specific IPI kick function, but avoid if possible: in ipi_send_msg_one()
277 * IPI corresponding to that msg. This is true, even if it is already in in ipi_send_msg_one()
278 * IPI handler, because !@old means it has not yet dequeued the msg(s) in ipi_send_msg_one()
319 * ipi_cpu_stop - handle IPI from smp_send_stop()
352 * Has hooks for platform specific IPI
359 pr_debug("IPI [%ld] received on cpu %d\n", in do_IPI()
366 * "dequeue" the msg corresponding to this IPI (and possibly other in do_IPI()
377 pr_info("IPI with bogus msg %ld in %ld\n", msg, copy); in do_IPI()
385 * API called by platform code to hookup arch-common ISR to their IPI IRQ
[all …]
/Linux-v6.1/kernel/sched/
Dmembarrier.c12 * A) Userspace thread execution after IPI vs membarrier's memory
13 * barrier before sending the IPI
22 * CPU1 after the IPI-induced memory barrier:
29 * b: send IPI IPI-induced mb
46 * before the IPI-induced memory barrier on CPU1.
48 * B) Userspace thread execution before IPI vs membarrier's memory
49 * barrier after completing the IPI
68 * b: send IPI IPI-induced mb
80 * after the IPI-induced memory barrier on CPU1.
173 * ensure that memory on remote CPUs that occur before the IPI in ipi_sync_core()
[all …]
/Linux-v6.1/arch/riscv/include/asm/
Dsmp.h30 /* print IPI stats */
36 /* Called from C code, this handles an IPI. */
47 /* Set custom IPI operations */
50 /* Clear IPI for current CPU */
/Linux-v6.1/Documentation/admin-guide/hw-vuln/
Dcore-scheduling.rst112 Once a task has been selected for all the siblings in the core, an IPI is sent to
113 siblings for whom a new task was selected. Siblings on receiving the IPI will
130 When the highest priority task is selected to run, a reschedule-IPI is sent to
142 (victim) to enter idle mode. This is because the sending of the IPI would bring
145 which may not be worth protecting. It is also possible that the IPI is received
171 IPI processing delays
173 Core scheduling selects only trusted tasks to run together. IPI is used to notify
175 receiving of the IPI on some arch (on x86, this has not been observed). This may
177 IPI. Even though cache is flushed on entry to user mode, victim tasks on siblings
/Linux-v6.1/tools/testing/selftests/kvm/x86_64/
Dxapic_ipi_test.c9 * Test that when the APIC is in xAPIC mode, a vCPU can send an IPI to wake
15 * has reentered HLT before sending the next IPI. While the vCPUs are running,
43 * Vector for IPI from sender vCPU to halting vCPU.
50 * Incremented in the IPI handler. Provides evidence to the sender that the IPI
117 * Runs on halter vCPU when IPI arrives. Write an arbitrary non-zero value to
160 * Send IPI to halter vCPU. in sender_guest_code()
161 * First IPI can be sent unconditionally because halter vCPU in sender_guest_code()
170 * 1. Received the IPI in sender_guest_code()
352 "IPI, HLT and wake count have not increased " in do_migrations()
462 "IPI sender vCPU thread started. Letting vCPUs run for %d seconds.\n", in main()
/Linux-v6.1/arch/powerpc/kexec/
Dcrash.c30 * avoid sending an IPI if the secondary CPUs are entering
46 * having to send an IPI explicitly. So, indicate if the crash is via
47 * system reset to avoid sending another IPI.
119 printk(KERN_EMERG "Sending IPI to other CPUs\n"); in crash_kexec_prepare_cpus()
127 * Else, send IPI to all other CPUs. in crash_kexec_prepare_cpus()
138 * the crash CPU will send an IPI and wait for other CPUs to in crash_kexec_prepare_cpus()
148 printk(KERN_EMERG "IPI complete\n"); in crash_kexec_prepare_cpus()
286 * such that another IPI will not be sent. in crash_kexec_prepare()
/Linux-v6.1/arch/powerpc/sysdev/xics/
Dicp-opal.c26 /* Clear any pending IPI */ in icp_opal_teardown_cpu()
33 * We take the ipi irq but and never return so we need to EOI the IPI, in icp_opal_flush_ipi()
92 * Here be dragons. The caller has asked to allow only IPI's and not in icp_opal_set_cpu_priority()
159 /* Clear pending IPI */ in icp_opal_flush_interrupt()
Dicp-hv.c65 /* Make sure all previous accesses are ordered before IPI sending */ in icp_hv_set_qirr()
87 /* Clear any pending IPI */ in icp_hv_teardown_cpu()
93 /* We take the ipi irq but and never return so we in icp_hv_flush_ipi()
94 * need to EOI the IPI, but want to leave our priority 0 in icp_hv_flush_ipi()
Dxics-common.c126 unsigned int ipi; in xics_request_ipi() local
128 ipi = irq_create_mapping(xics_host, XICS_IPI); in xics_request_ipi()
129 BUG_ON(!ipi); in xics_request_ipi()
134 BUG_ON(request_irq(ipi, icp_ops->ipi_action, in xics_request_ipi()
135 IRQF_NO_DEBUG | IRQF_PERCPU | IRQF_NO_THREAD, "IPI", NULL)); in xics_request_ipi()
155 * not going to return from the IPI in xics_teardown_cpu()
257 * interrupts, the expectation is that we'll only get woken up by an IPI in xics_migrate_irqs_away()
525 /* Patch up IPI chip EOI */ in xics_init()
/Linux-v6.1/Documentation/devicetree/bindings/powerpc/fsl/
Dmpic.txt71 non-IPI interrupts to a single CPU at a time (EG: Freescale MPIC).
127 2 = MPIC inter-processor interrupt (IPI)
130 the MPIC IPI number. The type-specific
193 * MPIC IPI interrupts. Note the interrupt
196 ipi@410a0 {
197 compatible = "fsl,mpic-ipi";
/Linux-v6.1/drivers/irqchip/
Dirq-apple-aic.c35 * and funnel all IPIs into one per-CPU IPI (the second "self" IPI is unused).
166 /* IPI request registers */
178 /* IPI status register */
187 /* Deferred IPI countdown register */
531 pr_err_ratelimited("Fast IPI fired. Acking.\n"); in aic_handle_fiq()
735 * IPI irqchip
776 * If a pending vIPI was unmasked, raise a HW IPI to ourselves. in aic_ipi_unmask()
777 * No barriers needed here since this is a self-IPI. in aic_ipi_unmask()
821 * The flag writes must complete before the physical IPI is issued in aic_ipi_send_mask()
831 .name = "AIC-IPI",
[all …]
/Linux-v6.1/Documentation/features/sched/membarrier-sync-core/
Darch-support.txt11 # when returning from IPI handler, and when returning to user-space.
15 # x86-32 uses IRET as return from interrupt, which takes care of the IPI.
19 # x86-64 uses IRET as return from interrupt, which takes care of the IPI.
/Linux-v6.1/arch/powerpc/kvm/
Dbook3s_hv_builtin.c195 * to memory vs. the IPI/message.
222 /* Else poke the target with an IPI */ in kvmhv_rm_send_ipi()
238 /* Order setting of exit map vs. msgsnd/IPI */ in kvmhv_interrupt_vcore()
327 * If we have an interrupt that's not an IPI, check if we have a
373 * -1 if there was a guest wakeup IPI (which has now been cleared)
408 /* see if a host IPI is pending */ in kvmppc_read_one_intr()
444 * If it is an IPI, clear the MFRR and EOI it. in kvmppc_read_one_intr()
465 * We need to re-check host IPI now in case it got set in the in kvmppc_read_one_intr()
472 * we need to resend that IPI, bummer in kvmppc_read_one_intr()
485 /* OK, it's an IPI for us */ in kvmppc_read_one_intr()
/Linux-v6.1/arch/x86/kernel/apic/
Dipi.c23 pr_info("IPI shorthand broadcast: %s\n", in print_ipi_mode()
61 * Send a 'reschedule' IPI to another CPU. It goes straight through and
137 * Send the IPI. The write to APIC_ICR fires this off. in __default_send_IPI_shortcut()
143 * This is used to send an IPI with no shorthand notation (the destination is
170 * Send the IPI. The write to APIC_ICR fires this off. in __default_send_IPI_dest_field()

12345678910>>...14