关于LINUX多核SMP中断绑定CPU的问题?

我在学习的过程中,创建了gpio按键中断,但是我想做下实验,我cat /proc/interrupts 发现我的的中断类型为gpio,网卡等中断类型是GICV3,我想将我自己的按键中断绑定在CPU2上,使用echo "2" > /proc/irq/70/smp_affinity
sh: echo: write error: Input/output error,但是我绑定网卡等中断就可以,我搞不明白,是否有这个方向的学习资料。

首先,要理解中断和CPU的关系。每个CPU都有其自己的中断控制器(Interrupt Controller,IC),这个控制器会将来自设备的所有中断信号路由到系统中的特定CPU上。因此,你不能直接将一个特定的中断绑定到特定的CPU上。你只能控制哪个CPU可以接收来自特定中断控制器(如GIC)的中断。

关于你遇到的问题,echo "2" > /proc/irq/70/smp_affinity 这个命令是用来控制GIC的中断在哪些CPU之间进行亲和性调度。这适用于GIC类型的中断,而不适用于GPIO或其他非GIC类型的中断。

如果你想将你的GPIO中断路由到特定的CPU,你可能需要查看你的硬件和操作系统的文档,看看是否有任何选项可以让你控制这个。这可能涉及到修改你的设备驱动,或者修改系统的中断路由配置。

在Linux内核中,中断的路由和分配是由中断控制器的驱动程序来控制的。这包括GIC、GPIO等。对于具体的设备,你需要查看设备的技术手册或者Linux内核的文档。

此外,关于Linux中断和SMP(多处理器)的更多信息,你可以查阅Linux内核的文档或者相关的教科书。这是一项深入的工作,需要理解操作系统、硬件和驱动程序的基础知识。