棋子 · 2020年01月27日

GIC500

Is there a way to forward the interrupts from Descriptor to multiple Cores using GICD_IROUTER ?

Seems the Affinity Routing field in my case is hard-tied to 1.

P.S. The SoC I'm working on, do have 8 ARM cores

1 个回答 得票排序 · 时间排序
极术小姐姐 · 2020年01月27日

Yes, set GICD_IROUTER<n>.IRM==1. This means "Interrupts routed to any PE defined as a participating node". Where "participating node" means that the core is awake and has the Group the interrupt belongs to enabled.

Note: There is a difference between GICv2 (GIC-400) and GICv3 (GIC-500). With GIC-400 if you selected multiple targets, the interrupt would be sent to multiple targets with the first to respond getting it. With GIC-500/GICv3, the GIC picks one target and sends it there. So a given instance of an interrupt only goes to one place. Although for the next instance the GIC could pick one of the other possible targets.

你的回答