We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Is there any use case where this register (ICH_EISR_EL2) can report more than one outstanding EOI?I don't really understand why we have 16-bit wide register (one bit per LR) if there is no use-case. I'm sure I'm missing something.
Sharing some experiments:
do { u32 irqstat = gic_read_iar(); u32 irqnr = gic_iar_irqnr(irqstat); if (irqnr != GICC_INT_SPURIOUS) { ... delay ... gic_write_eoir(irqstat); } else { break; } } while (1);
do { u32 irqstat = gic_read_iar(); u32 irqnr = gic_iar_irqnr(irqstat); if (irqnr != GICC_INT_SPURIOUS) { < IRQ Handling > gic_write_eoir(irqstat); } else { break; } } while (1); MSR(ICC_DIR_EL1, 7); MSR(ICC_DIR_EL1, 6); MSR(ICC_DIR_EL1, 5); MSR(ICC_DIR_EL1, 4);