gic_irq_domain_translate:负责解析出设备树中描述的中断号和中断触发类型(边缘触发、电平触发等); gic_irq_domain_map:将硬件中断号和linux中断号绑定到一个结构中,也就完成了映射,此外还绑定了irq_desc结构中的其他字段,最重要的是设置了irq_desc->handle_irq的函数指针,这个最终是中断响应时往上执行的入口,这个...
Linux 4.9.88内核源码 Linux-4.9.88\drivers\irqchip\irq-gic.c Linux-4.9.88/arch/arm/boot/dts/imx6ull.dtsi Linux 5.4内核源码 Linux-5.4\drivers\irqchip\irq-gic.c
};structirq_domain {structlist_headlink;//用于添加到全局链表irq_domain_list中constchar*name;//IRQ domain的名字conststructirq_domain_ops *ops;//IRQ domain映射操作函数集void*host_data;//在GIC驱动中,指向了irq_gic_dataunsignedintflags;unsignedintmapcount;//映射中断的个数/* Optional data */struc...
所以,GIC用gic_chip_data来表示,gic_chip_data中重要的成员是:irq_chip、irq_domain。 3. GIC初始化过程 start_kernel (init\main.c) init_IRQ (arch\arm\kernel\irq.c) irqchip_init (drivers\irqchip\irqchip.c) of_irq_init (drivers\of\irq.c) desc->irq_init_cb = match->data; ret = desc...
外设触发中断后,GICv3根据中断配置信息,将其路由到特定cpu的IRQ或FIQ中断线上。CPU接收到中断,执行必要的上下文保存后,跳转到中断异常入口,并执行相应的中断处理流程,其中包含中断服务。 为了实现中断的配置、接收、仲裁和路由功能,GICv3设计了不同功能及组件,它包含了SPI(shared peripheral interrupt)、PPI(private ...
中断由外设或软件触发以后,distributor和redistributor将根据中断的分组、优先级等配置信息将其分发到特定的cpu interface,并以irq或fiq的方式发送给对应的PE。此时中断处于pending状态,PE上的软件可以通过读取ICC_IAR0_EL1 / ICC_IAR1_EL1寄存器应答该中断,中断被应答后将会变为active状态。中断处理完成后,软件可以写...
1 secure EL1中断(1)当前执行在secure EL1,则触发方式为IRQ 由于secure EL1中断需要在secure EL1中处理,故只要将SCR.IRQ设置为0即可将它路由到FEL(2)当前执行在non secure EL1,则触发方式为FIQ 同样,由于它需要被secure EL1处理,而EL3具有中断转发功能,因此可以将中断先路由到EL3,然后由EL3转发给secure EL1...
GICv3为中断的security状态和虚拟化提供了支持。通过中断分组的方式其支持在不同的security状态下中断可以分别以FIQ或IRQ方式触发。与运行在EL2下的hypervisor配合,GICv3还为vPE提供了虚拟中断管理功能。 在多处理器系统中,GICv3还根据中断路由方式的不同支持以下三种中断处理模型: ...