This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

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