| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/mailbox/ |
| D | xlnx,zynqmp-ipi-mailbox.txt | 1 Xilinx IPI Mailbox Controller 4 The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage 5 messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI 9 | Xilinx ZynqMP IPI Controller | 21 Hardware | | IPI Agent | | IPI Buffers | | 26 | Xilinx IPI Agent Block | 34 IPI agent node: 35 - compatible: Shall be: "xlnx,zynqmp-ipi-mailbox" 39 - xlnx,ipi-id: local Xilinx IPI agent ID 40 - #address-cells: number of address cells of internal IPI mailbox nodes [all …]
|
| /kernel/linux/linux-5.10/arch/loongarch/kvm/intc/ |
| D | ls3a_ipi.c | 19 struct ls3a_kvm_ipi *ipi = ls3a_ipi_irqchip(kvm); in kvm_helper_send_ipi() local 20 gipiState *s = &(ipi->ls3a_gipistate); in kvm_helper_send_ipi() 26 ls3a_gipi_lock(ipi, flags); in kvm_helper_send_ipi() 34 ls3a_gipi_unlock(ipi, flags); in kvm_helper_send_ipi() 39 static int ls3a_gipi_writel(struct ls3a_kvm_ipi *ipi, gpa_t addr, in ls3a_gipi_writel() argument 44 gipiState *s = &(ipi->ls3a_gipistate); in ls3a_gipi_writel() 50 kvm = ipi->kvm; in ls3a_gipi_writel() 93 kvm_err("Failed lower ipi irq target cpu:%d\n", cpu); in ls3a_gipi_writel() 123 static uint64_t ls3a_gipi_readl(struct ls3a_kvm_ipi *ipi, in ls3a_gipi_readl() argument 129 gipiState *s = &(ipi->ls3a_gipistate); in ls3a_gipi_readl() [all …]
|
| /kernel/linux/linux-5.10/drivers/mailbox/ |
| D | zynqmp-ipi-mailbox.c | 3 * 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 …]
|
| /kernel/linux/linux-6.6/drivers/mailbox/ |
| D | zynqmp-ipi-mailbox.c | 3 * Xilinx Inter Processor Interrupt(IPI) Mailbox Driver 15 #include <linux/mailbox/zynqmp-ipi-message.h> 21 /* IPI agent ID any */ 24 /* indicate if ZynqMP IPI mailbox driver uses SMC calls or HVC calls */ 28 /* Default IPI SMC function IDs */ 37 /* IPI SMC Macros */ 47 /* IPI mailbox status */ 52 #define IPI_MB_CHNL_TX 0 /* IPI mailbox TX channel */ 53 #define IPI_MB_CHNL_RX 1 /* IPI mailbox RX channel */ 56 * struct zynqmp_ipi_mchan - Description of a Xilinx ZynqMP IPI mailbox channel [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/mailbox/ |
| D | xlnx,zynqmp-ipi-mailbox.yaml | 4 $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 …]
|
| /kernel/linux/linux-6.6/arch/mips/kvm/ |
| D | loongson_ipi.c | 3 * 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 …]
|
| /kernel/linux/linux-5.10/arch/mips/kvm/ |
| D | loongson_ipi.c | 3 * 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 …]
|
| /kernel/linux/linux-5.10/drivers/remoteproc/ |
| D | mtk_scp_ipi.c | 17 * 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 * Returns 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 …]
|
| /kernel/linux/linux-6.6/drivers/remoteproc/ |
| D | mtk_scp_ipi.c | 21 * scp_ipi_register() - register an ipi function 24 * @id: IPI ID 25 * @handler: IPI handler 26 * @priv: private data for IPI handler 28 * Register an ipi function to receive ipi interrupt from SCP. 30 * Return: 0 if ipi registers successfully, -error on error. 53 * scp_ipi_unregister() - unregister an ipi function 56 * @id: IPI ID 58 * Unregister an ipi function to receive ipi interrupt from SCP. 112 * scp_ipi_lock() - Lock before operations of an IPI ID [all …]
|
| D | xlnx_r5_remoteproc.c | 12 #include <linux/mailbox/zynqmp-ipi-message.h> 22 /* IPI buffer MAX length */ 94 * @ipi: pointer to mailbox information 103 struct mbox_info *ipi; member 150 struct mbox_info *ipi; in handle_event_notified() local 153 ipi = container_of(work, struct mbox_info, mbox_work); in handle_event_notified() 154 rproc = ipi->r5_core->rproc; in handle_event_notified() 157 * We only use IPI for interrupt. The RPU firmware side may or may in handle_event_notified() 158 * not write the notifyid when it trigger IPI. in handle_event_notified() 171 * Receive data from ipi buffer, ack interrupt and then [all …]
|
| /kernel/linux/linux-6.6/kernel/irq/ |
| D | ipi.c | 6 * 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 …]
|
| D | ipi-mux.c | 3 * Multiplex several virtual IPIs over a single HW IPI. 9 #define pr_fmt(fmt) "ipi-mux: " fmt 49 /* If a pending IPI was unmasked, raise a parent IPI immediately. */ in ipi_mux_unmask() 81 * The flag writes must complete before the physical IPI is in ipi_mux_send_mask() 92 .name = "IPI Mux", 146 * parent IPI. 149 * @mux_send: callback to trigger parent IPI for a particular CPU 170 fwnode = irq_domain_alloc_named_fwnode("IPI-Mux"); in ipi_mux_create() 172 pr_err("unable to create IPI Mux fwnode\n"); in ipi_mux_create() 180 pr_err("unable to add IPI Mux domain\n"); in ipi_mux_create() [all …]
|
| /kernel/linux/linux-5.10/kernel/irq/ |
| D | ipi.c | 6 * 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 …]
|
| /kernel/linux/linux-5.10/include/linux/rpmsg/ |
| D | mtk_rpmsg.h | 15 * 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
|
| /kernel/linux/linux-6.6/include/linux/rpmsg/ |
| D | mtk_rpmsg.h | 15 * 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
|
| /kernel/linux/linux-5.10/include/trace/events/ |
| D | ipi.h | 3 #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.
|
| /kernel/linux/linux-6.6/drivers/media/platform/mediatek/vpu/ |
| D | mtk_vpu.h | 32 * 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 …]
|
| /kernel/linux/linux-5.10/drivers/media/platform/mtk-vpu/ |
| D | mtk_vpu.h | 30 * For other IPI below, AP should send the request 50 * @IPI_MAX: The maximum IPI number 80 * vpu_ipi_register - register an ipi function 83 * @id: IPI ID 84 * @handler: IPI handler 85 * @name: IPI name 86 * @priv: private data for IPI handler 88 * Register an ipi function to receive ipi interrupt from VPU. 90 * Return: Return 0 if ipi registers successfully, otherwise it is failed. 99 * @id: IPI ID [all …]
|
| /kernel/linux/linux-6.6/include/trace/events/ |
| D | ipi.h | 3 #define TRACE_SYSTEM ipi 13 * @mask: mask of recipient CPUs for the IPI 14 * @reason: string identifying the IPI purpose 100 * ipi_entry - called immediately before the IPI handler 102 * @reason: string identifying the IPI purpose 106 * for that IPI. 116 * ipi_exit - called immediately after the IPI handler returns 118 * @reason: string identifying the IPI purpose 122 * that IPI.
|
| /kernel/linux/linux-5.10/Documentation/virt/kvm/ |
| D | vcpu-requests.rst | 47 order to perform some KVM maintenance. To do so, an IPI is sent, forcing 53 1) Send an IPI. This forces a guest mode exit. 68 as well as to avoid sending unnecessary IPIs (see "IPI Reduction"), and 69 even to ensure IPI acknowledgements are waited upon (see "Waiting for 158 then the caller will wait for each VCPU to acknowledge its IPI before 160 If, for example, the VCPU is sleeping, so no IPI is necessary, then 190 kick will send an IPI to force an exit from guest mode when necessary. 195 enter guest mode. This means that an optimized implementation (see "IPI 196 Reduction") must be certain when it's safe to not send the IPI. One 206 !kvm_request_pending() on its last check and then not receiving an IPI for [all …]
|
| /kernel/linux/linux-6.6/Documentation/virt/kvm/ |
| D | vcpu-requests.rst | 49 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 …]
|
| /kernel/linux/linux-6.6/arch/hexagon/kernel/ |
| D | smp.c | 38 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()
|
| /kernel/linux/linux-5.10/arch/hexagon/kernel/ |
| D | smp.c | 38 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()
|
| /kernel/linux/linux-6.6/arch/riscv/kernel/ |
| D | sbi-ipi.c | 3 * Multiplex several IPIs over a single HW IPI. 67 * Don't disable IPI when CPU goes offline because in sbi_ipi_init() 69 * via generic IPI-Mux in sbi_ipi_init() 72 "irqchip/sbi-ipi:starting", in sbi_ipi_init() 76 pr_info("providing IPIs using SBI IPI extension\n"); in sbi_ipi_init()
|
| /kernel/linux/linux-5.10/arch/arc/kernel/ |
| D | smp.c | 258 * figure out what msg was sent. For those which don't (ARC has dedicated IPI 284 * Call the platform specific IPI kick function, but avoid if possible: in ipi_send_msg_one() 287 * IPI corresponding to that msg. This is true, even if it is already in in ipi_send_msg_one() 288 * IPI handler, because !@old means it has not yet dequeued the msg(s) in ipi_send_msg_one() 329 * ipi_cpu_stop - handle IPI from smp_send_stop() 362 * Has hooks for platform specific IPI 369 pr_debug("IPI [%ld] received on cpu %d\n", in do_IPI() 376 * "dequeue" the msg corresponding to this IPI (and possibly other in do_IPI() 387 pr_info("IPI with bogus msg %ld in %ld\n", msg, copy); in do_IPI() 395 * API called by platform code to hookup arch-common ISR to their IPI IRQ [all …]
|