As per PLIC description it can support 1023 interrupt sources targeting up to 15,872 hart contexts.
If priorities are not assigned then lowest id will have highest priority.
Suppose Interrupt ID 10 assigned to CPU1 and Interrupt ID 20 assigned to CPU2
Interrupt ID 10 -------> CPU1
Interrupt ID 20 -------> CPU2
If both interrupts arrived at same time, then how PLIC will handle it?
My understanding it
- PLIC will raise int (for ID10) CPU1
- CPU1 will service the interrupt and complete it.
- PLIC will raise int (for ID20) to CPU2
- CPU2 will service the interrupt and complete it.
If my understanding is correct then if CPU1 hung in to ISR due to some reasons and interrupt request didn’t get serviced then whole system will hang.