编辑
2025-04-21
记录知识
0
请注意,本文编写于 66 天前,最后修改于 59 天前,其中某些信息可能已经过时。

目录

ITS转发LPI到Redistributor
总结

根据《GICv3寄存器接口》的介绍,我们知道SPI/SGI/PPI 通过Distributor 找到Redistributor 然后确定CPU interface。而LPI是基于MSI的,基于MSI的中断可以通过ITS服务来之间确定Redistributor,无需Distributor 。本文介绍ITS服务

ITS转发LPI到Redistributor

image.png

根据这个图我们可以知道ITS服务的流程如下

  1. 外设通过写GITS_TRANSLATER产生一个ITS中断消息
  2. GITS_TRANSLATER里面包含Device ID和Event ID信息
  3. Device ID标识了设备,Event ID标识了哪个中断
  4. 通过DeviceID可以从Device Table中选择合适的ITT(Interrupt Translation Table)
  5. 通过EventID可以从ITT中查询到INTID和CollectionID
  6. 通过CollectionID可以从Collection Table找到中断路由信息
  7. 根据信息之间转发到目标Redistributor

到这里,我们就知道了ITS服务的工作流程了。我们发现,ITS需要查询五张表,分别如下

  • LPI中断配置表
  • 标识LPI中断挂起状态的Pending表
  • 查询设备ID的Device Table
  • 查询INTID和CollectionID的Interrupt Translation Table
  • 可以获得路由信息的Collection Table

总结

至此,我们就了解了GICv3的ITS服务。