1 GIC中断控制器初始化
(1)SPI配置成:group-1 non-secure,
(2)SPI中断源优先级配置成一样:GICD_INT_DEF_PRI_X4
(3)所有的全局中断都默认路由到启动CPU
(4)使用EOIMode1模式
Linux不是为硬实时设计的系统,他无视了GIC的许多的先进功能,Linux为了获得系统的稳定性,关闭了中断嵌入的功能,把所有的SPI中断源优先级都是设置成一样。
gic_dist_init(void)@drivers\irqchip\irq-gic-v3.c
...
for (i = 0; i < GIC_ESPI_NR; i += 4)
writel_relaxed(GICD_INT_DEF_PRI_X4, base + GICD_IPRIORITYRnE + i);
2 关于中断控制器的EOImode
Linux系统默认开启了supports_deactivate_key,选择使用gic_eoimode1_chip作为当前使用中断控制器的对象。将中断处理器的EOImode设置成了eoimode1。
//@irq-gic-v3.c
gic_cpu_sys_reg_init(void){
...
if (static_branch_likely(&supports_dea