【问题标题】:How to know which core that send the inter-processor interrupt?如何知道哪个内核发送了处理器间中断?
【发布时间】:2026-01-09 03:10:01
【问题描述】:

我正在研究 ARM64。我在void handle_IPI(int ipinr, struct pt_regs *regs) 中的linux/arch/arm64/kernel/smp.c 中添加了一个处理器间中断(IPI)处理程序。

当我得到一个 IPI 时,我想知道哪个内核发送这个 IPI。比如core 3发送一个IPI给core 0,然后core 0得到这个IPI,我想知道这个IPI是来自core 3的IPI handler。

有办法吗?

非常感谢。

【问题讨论】:

    标签: linux linux-kernel embedded-linux


    【解决方案1】:

    我最近正在研究 cortex-A9 平台上的 IPI,它使用 ARM GIC 作为中断控制器。经过一些代码阅读,我发现核心信息丢失在irq-gic.c中。也许您应该修改handle_IPI 原型或在handle_IPI 之前调用您的特定IPI 处理程序。两者都是使用触发器信息添加自定义 IPI 处理程序的丑陋方式。

    【讨论】:

      最近更新 更多