hw/intc/arm_gicv3: Honour GICD_CTLR.EnableGrp1NS for LPIs
The GICD_CTLR distributor register has enable bits which control whether the different interrupt groups (Group 0, Non-secure Group 1 and Secure Group 1) are forwarded to the CPU. We get this right for traditional interrupts, but forgot to account for it when adding LPIs. LPIs are always Group 1 NS and if the EnableGrp1NS bit is not set we must not forward them to the CPU. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220122182444.724087-7-peter.maydell@linaro.org
This commit is contained in:
parent
0cc38f359c
commit
703090770c
@ -166,6 +166,7 @@ static void gicv3_redist_update_noirqset(GICv3CPUState *cs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((cs->gicr_ctlr & GICR_CTLR_ENABLE_LPIS) && cs->gic->lpi_enable &&
|
if ((cs->gicr_ctlr & GICR_CTLR_ENABLE_LPIS) && cs->gic->lpi_enable &&
|
||||||
|
(cs->gic->gicd_ctlr & GICD_CTLR_EN_GRP1NS) &&
|
||||||
(cs->hpplpi.prio != 0xff)) {
|
(cs->hpplpi.prio != 0xff)) {
|
||||||
if (irqbetter(cs, cs->hpplpi.irq, cs->hpplpi.prio)) {
|
if (irqbetter(cs, cs->hpplpi.irq, cs->hpplpi.prio)) {
|
||||||
cs->hppi.irq = cs->hpplpi.irq;
|
cs->hppi.irq = cs->hpplpi.irq;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user