GICv3介绍系列(四)CPU INTERRFACE

1 CPU interface组件介绍

        CPU interface可用于物理中断、虚拟中断处理,以及可为hypervisor提供虚拟机控制接口。包括SGI中断产生、PPI、SGI的优先级设置,最高pending优先级读取以及应答、deactivate、完成操作执行等。

2 中断分组使能配置

        CPU interface可以使能或关闭某一group中断,在CPU interface中一共有三个寄存器用于配置中断的使能:
(1)ICC_IGRPEN0_EL1:它用于控制是否使能group 0中断
GICv3介绍系列(四)CPU INTERRFACE
(2)ICC_IGRPEN1_EL3:它用于控制group 1中断的使能,其中bit 0用于控制non secure group 0的使能,bit 1用于控制secure group 1的使能
GICv3介绍系列(四)CPU INTERRFACE
(3)ICC_IGRPEN1_EL1:它用于控制当前secure状态下group 1中断使能。该寄存器其实只是ICC_IGRPEN1_EL3寄存器的别名,即在non secure状态下其与ICC_IGRPEN1_EL3的bit 0等价,在secure状态下其与ICC_IGRPEN1_EL3的bit 1等价。
GICv3介绍系列(四)CPU INTERRFACE

3 中断的状态转换

        中断的状态转换包括中断应答、中断deactivate以及中断完成操作。其中中断应答通过读取ICC_IAR0_EL1(group 0)和ICC_IAR1_EL1(group 1)寄存器完成,寄存器定义如下:
GICv3介绍系列(四)CPU INTERRFACE
        中断的deactivate可通过向寄存器ICC_DIR_EL1写入中断ID完成。其寄存器定义如下:
GICv3介绍系列(四)CPU INTERRFACE
        只有当前异常等级和security状态下的EOImode为1时,才需要执行deactivate操作。否则只要执行完成操作即可。中断完成操作通过向寄存器ICC_EOIR0_EL1(group 0)或ICC_EOIR1_EL1(group 1)写入中断ID实现,该操作之后CPU将又可以响应新的中断。
GICv3介绍系列(四)CPU INTERRFACE

4 最高优先级pending中断获取

        当前PE上最高优先级pending中断可分别通过读取ICC_HPPIR0和ICC_HPPIR1寄存器获取。其中ICC_HPPIR0的寄存器定义如下:
GICv3介绍系列(四)CPU INTERRFACE

5 SGI中断产生

        SGI是由软件通过写CPU interface寄存器触发的,其需要设置的内容包括中断号,中断需要被发送的目的PE。根据不同的security状态和中断group其可分别通过ICC_SGI0R_EL1、ICC_SGI1R_EL1和 ICC_ASGI1R_EL1寄存器产生,其对应关系如下表:

寄存器 中断类型
ICC_SGI0R_EL1 Securegroup 0中断
ICC_SGI1R_EL1 当前security状态的group 1中断
ICC_ASGI1R_EL1 非当前security状态的group 1中断

        这三个寄存器的定义类似,以ICC_SGI0R_EL1为例其定义如下:
GICv3介绍系列(四)CPU INTERRFACE

        其中IRM指定中断路由模型,当其为0时中断被路由到affinity指定的PElist上,否则会被发送给系统中除自身之外的其他PE。TargetList指定中断将要被发送的PE组,它与aff0的定义相匹配。

上一篇:20210131HCIP MPLS实验


下一篇:2020-2021-1学期 20202427《网络空间安全专业导论》第十周学习总结