GIC500 :: How to forward interrupts to multiple cores using GICD_IROUTER

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

Parents
  • 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.
Reply
  • 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.
Children
More questions in this forum