其他分享
首页 > 其他分享> > ARM GIC手册学习:Affinity routing

ARM GIC手册学习:Affinity routing

作者:互联网

1 Affinity routing

Affinity routing是一种基于分层地址的方案,用于标识用于中断路由的特定PE节点。

AArch64状态下,一个PE的affinity value定义在MPIDR_EL1寄存器中

Affinity routing value是由4个8-bit字段(a.b.c.d)组成的32bit value。

这四个字段被标准化为下面的形式:

Aff3.Aff2.Aff1.Aff0

其中 Affx 代表Affinity level x.


通过ARE bit来启用Distributor安全状态下的 Affinity routing,Affinity routing 启用的条件:

当 Affinity routing 启动时,若处理 physical interrupts,那么 System register access 也必须启用。


1.1 SPI and SGI中断使用 Affinity Routing

SPI中断的 affinity address 和 routing mode 信息在GICD_IROUTER<n>寄存器中配置。

SGI中断的 affinity address 和 routing mode 信息由生成中断时通过软件配置。


SGI中断的生成使用以下寄存器:

ARM建议 Aff0 字段使用0-15的值来与 SGI target list 保持一致。


SPI和SGI中断路由使用不同的寄存器:


1.2 Participating nodes

在以下情况下,配置成1 of N distribution model 的 SPI 中断可以转发到此PE:

对于以上规则确定的PE总称为 Participating nodes.


1.3 Enable Affinity routing

本文讨论的都是GICv3架构中启用Affinity routing,于是以下必然成立:

当 GICD_CTLR. DS == 0 :

当 GICD_CTLR. DS == 1 :

标签:GICD,CTLR,中断,GIC,routing,PE,Affinity
来源: https://www.cnblogs.com/Irvingcode/p/15061616.html