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
07-04 11:36