Lines Matching +full:ipi +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0
7 #define pr_fmt(fmt) "riscv-imsic: " fmt
15 #include <linux/irqchip/riscv-imsic.h>
21 #include "irq-riscv-imsic-state.h"
28 struct imsic_local_config *local = per_cpu_ptr(imsic->global.local, cpu); in imsic_ipi_send()
30 writel_relaxed(IMSIC_IPI_ID, local->msi_va); in imsic_ipi_send()
49 /* Create IMSIC IPI multiplexing */ in imsic_ipi_domain_init()
52 return virq < 0 ? virq : -ENOMEM; in imsic_ipi_domain_init()
58 pr_info("%pfwP: providing IPIs using interrupt %d\n", imsic->fwnode, IMSIC_IPI_ID); in imsic_ipi_domain_init()
70 * instruction. If TOPEI CSR is non-zero then we translate TOPEI.ID to
91 if (unlikely(!imsic->base_domain)) in imsic_handle_irq()
96 pr_warn_ratelimited("vector not found for local ID 0x%lx\n", local_id); in imsic_handle_irq()
100 err = generic_handle_domain_irq(imsic->base_domain, vec->hwirq); in imsic_handle_irq()
102 pr_warn_ratelimited("hwirq 0x%x mapping not found\n", vec->hwirq); in imsic_handle_irq()
110 /* Mark per-CPU IMSIC state as online */ in imsic_starting_cpu()
113 /* Enable per-CPU parent interrupt */ in imsic_starting_cpu()
121 * this CPU was not running so sync-up local enable/disable state. in imsic_starting_cpu()
136 /* Mark per-CPU IMSIC state as offline */ in imsic_dying_cpu()
151 return -ENOENT; in imsic_early_probe()
156 return -ENOENT; in imsic_early_probe()
159 /* Initialize IPI domain */ in imsic_early_probe()
162 pr_err("%pfwP: Failed to initialize IPI domain\n", fwnode); in imsic_early_probe()
172 * Don't disable per-CPU IMSIC file when CPU goes offline in imsic_early_probe()
173 * because this affects IPI and the masking/unmasking of in imsic_early_probe()
174 * virtual IPIs is done via generic IPI-Mux in imsic_early_probe()
184 struct fwnode_handle *fwnode = &node->fwnode; in imsic_early_dt_init()
224 return -ENOMEM; in imsic_early_acpi_init()
254 * Even if imsic_platform_acpi_probe() fails, the IPI part of IMSIC can in imsic_early_acpi_init()
256 * DT where IPI works but MSI probe fails for some reason. in imsic_early_acpi_init()