I'm curious about how INTID calculation works.

From what I understand, the interrupt ID (INTID) in GIC is uniquely assigned based on the type of interrupt: SGI (Software Generated Interrupts), PPI (Private Peripheral Interrupts), and SPI (Shared Peripheral Interrupts). Each of these has a specific INTID range.

In GIC-400, can the INTIDs be handled independently for each Processing Element (PE) rather than for the entire CPU?

  • SGI (INTID 0-15): Does each PE have its own 0-15 INTID range?
  • PPI (INTID 16-31): Are PPIs assigned to each PE, and can they be triggered independently for specific PEs?

For example:

1. SGI and PPI Calculation (per PE):

  • PE 0 (Core 0, Thread 0):
    • SGI: 0-15
    • PPI: 16-31
  • PE 1 (Core 0, Thread 1):
    • SGI: 0-15
    • PPI: 16-31
  • PE 2 (Core 1, Thread 0):
    • SGI: 0-15
    • PPI: 16-31
  • Repeating this pattern up to PE 7.

Can GIC-400 handle this kind of control?"

0