gicv3 LPI中,device id和 event id经过its转换为 redistributor 和 intid。
硬件是根据什么发出 deviceid的?its又是是怎么获取到device id的?
具体的示例我没有去看,
但是可以从原理上回答:
-
硬件根据什么发出Deviceid?
比如有2个硬件:GPIO、UART,Deviceid是它们自己的天然属性,
GPIO发出中断时就会使用GPIO模块的ID;
UART发出中断时就会使用UART模块的ID;
可以这样认为:设计芯片时,没有硬件模块比如GPIO、UART就被赋予了独一的DeviceID -
IST怎么获取device id?
硬件模块发出的消息里就含有deviceid
1.设计芯片时,硬件模块被赋予了独一的DeviceID
GPIO,UART模块中没有device id 的概念,GPIO的中断线是硬连线到 GPIO中断控制器 , 对于ARM平台UART 的中断线 是硬连线到 GIC
这个不太理解.可否进一步解释
2. 硬件模块发出的消息里就含有deviceid
在不使用 MSI-64的情况下. 假设是SMMU或者PCIE设备 接入了 ITS, 那么 SMMU或者PCIE设备 产生中断时,会向 ITS的 GITS_TRANSLATER寄存器写入eventid .但是此时 ITS 除了获取到 eventid ,还获取到了 device id. 但是这次mmio动作中并不包含 deviceid.
是否我理解有误,可否进一步解释,硬件模块发出的消息是什么?