irqchip/gic-v3-its: Set implementation defined bit to enable VLPIs

A long time ago, GITS_CTLR[1] used to be called GITC_CTLR.EnableVLPI.
It has been subsequently deprecated and is now an "Implementation
Defined" bit that may ot may not be set for GICv4. Brilliant.

And the current crop of the FastModel requires that bit for VLPIs
to be enabled. Oh well... Let's set it and find out what breaks.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

+6 -2
+5 -2
drivers/irqchip/irq-gic-v3-its.c
··· 2714 2714 return 0; 2715 2715 2716 2716 /* Disable the generation of all interrupts to this ITS */ 2717 - val &= ~GITS_CTLR_ENABLE; 2717 + val &= ~(GITS_CTLR_ENABLE | GITS_CTLR_ImDe); 2718 2718 writel_relaxed(val, base + GITS_CTLR); 2719 2719 2720 2720 /* Poll GITS_CTLR and wait until ITS becomes quiescent */ ··· 2998 2998 2999 2999 gits_write_cwriter(0, its->base + GITS_CWRITER); 3000 3000 ctlr = readl_relaxed(its->base + GITS_CTLR); 3001 - writel_relaxed(ctlr | GITS_CTLR_ENABLE, its->base + GITS_CTLR); 3001 + ctlr |= GITS_CTLR_ENABLE; 3002 + if (its->is_v4) 3003 + ctlr |= GITS_CTLR_ImDe; 3004 + writel_relaxed(ctlr, its->base + GITS_CTLR); 3002 3005 3003 3006 err = its_init_domain(handle, its); 3004 3007 if (err)
+1
include/linux/irqchip/arm-gic-v3.h
··· 298 298 #define GITS_TRANSLATER 0x10040 299 299 300 300 #define GITS_CTLR_ENABLE (1U << 0) 301 + #define GITS_CTLR_ImDe (1U << 1) 301 302 #define GITS_CTLR_ITS_NUMBER_SHIFT 4 302 303 #define GITS_CTLR_ITS_NUMBER (0xFU << GITS_CTLR_ITS_NUMBER_SHIFT) 303 304 #define GITS_CTLR_QUIESCENT (1U << 31)