This helper function enables the signaling of LPIs by the redistributor to the connected PE. Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx> --- lib/arm/asm/gic-v3-its.h | 1 + lib/arm/gic-v3-its.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/arm/asm/gic-v3-its.h b/lib/arm/asm/gic-v3-its.h index 21054cb..3e36a2a 100644 --- a/lib/arm/asm/gic-v3-its.h +++ b/lib/arm/asm/gic-v3-its.h @@ -145,6 +145,7 @@ extern struct its_data its_data; extern int its_parse_baser(int i, struct its_baser *baser); extern void its_setup_baser(int i, struct its_baser *baser); +extern void enable_lpi(u32 redist); #endif /* !__ASSEMBLY__ */ diff --git a/lib/arm/gic-v3-its.c b/lib/arm/gic-v3-its.c index f577d5f..7c768a5 100644 --- a/lib/arm/gic-v3-its.c +++ b/lib/arm/gic-v3-its.c @@ -171,3 +171,18 @@ void init_cmd_queue(void) writeq(0, its_data.base + GITS_CWRITER); writeq(0, its_data.base + GITS_CREADR); } + +void enable_lpi(u32 redist) +{ + void *ptr; + u64 val; + + if (redist >= gicv3_data.cpu_count) + report_abort("%s redist=%d >= cpu_count=%d\n", + __func__, redist, gicv3_data.cpu_count); + + ptr = gicv3_data.redist_base[redist]; + val = readl(ptr + GICR_CTLR); + val |= GICR_CTLR_ENABLE_LPIS; + writel(val, ptr + GICR_CTLR); +} -- 2.5.5 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html