在Linux中启用和分发IRQ

在Linux中启用和分发IRQ,linux,linux-kernel,interrupt,irq,imx6,Linux,Linux Kernel,Interrupt,Irq,Imx6,我使用的是imx6 sabrelite板,其中Linux操作系统在core0上运行,RTOS在core1上运行。我在RTOS中配置了GIC中断寄存器,但Linux操作系统覆盖了它。我需要在linux源代码中启用IRQs 88142143150并将其分发到Core1(RTOS)。我已经浏览了irq_gic.c文件,但没有进一步的想法 我在串行控制台中尝试过cat/proc/interrupts,但看不到上面的IRQ号。这是否表示在Linux中禁用了上述中断 如何在Linux源代码中启用和分发中断

我使用的是imx6 sabrelite板,其中Linux操作系统在core0上运行,RTOS在core1上运行。我在RTOS中配置了GIC中断寄存器,但Linux操作系统覆盖了它。我需要在linux源代码中启用IRQs 88142143150并将其分发到Core1(RTOS)。我已经浏览了irq_gic.c文件,但没有进一步的想法

我在串行控制台中尝试过cat/proc/interrupts,但看不到上面的IRQ号。这是否表示在Linux中禁用了上述中断

如何在Linux源代码中启用和分发中断

欢迎您的建议


提前感谢。

ARM SMP内核通常与GIC相关联,提供每个处理器 中断(PPI)、共享处理器中断(SPI)和软件 生成中断(SGI)

从设备树文件调用GIC驱动程序。您可以在.dtsi文件(arch/arm/boot/dts/imx6qdl.dtsi)中检查相同的条目

一旦您的中断被注册,您就可以在cat/proc/interrupts中看到相同的条目

要将中断分发到核心0,则必须将其绑定到核心0

[root@maverick]# echo 1 > /proc/irq/24/smp_affinity
你可以用同样的方法来改变

[root@maverick]# cat /proc/irq/24/smp_affinity
00000001
要了解更多关于GIC的信息,请查看您的主线内核
Documentation/devicetree/bindings/arm/gic.txt

Hi-vinod,感谢您的回复。我使用maxcpus=1选项将Linux操作系统限制为一个内核。所以我不能在这里使用smp_affinity选项。我的想法是在irq_GIC.c中配置GIC分发接口和目标寄存器,以映射到core 1。但我不确定在哪里包含我的更改。你知道吗?嗨,萨拉瓦南,我明白了。我不确定。但我认为您可以尝试使用gic_notifier()函数或gic_init_base()函数。你能试一下并告诉我结果吗。
request_irq(IRQ_NUM, my_interrupt_handler,IRQ_FLAG, "my_driver", my_dev);
[root@maverick]# echo 1 > /proc/irq/24/smp_affinity
[root@maverick]# cat /proc/irq/24/smp_affinity
00000001