irqchip/gic-v4: Enable low-level GICv4 operations

Get the show on the road...

Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

+18 -2
+1 -1
drivers/irqchip/Makefile
··· 28 28 obj-$(CONFIG_ARCH_REALVIEW) += irq-gic-realview.o 29 29 obj-$(CONFIG_ARM_GIC_V2M) += irq-gic-v2m.o 30 30 obj-$(CONFIG_ARM_GIC_V3) += irq-gic-v3.o irq-gic-common.o 31 - obj-$(CONFIG_ARM_GIC_V3_ITS) += irq-gic-v3-its.o irq-gic-v3-its-pci-msi.o irq-gic-v3-its-platform-msi.o 31 + obj-$(CONFIG_ARM_GIC_V3_ITS) += irq-gic-v3-its.o irq-gic-v3-its-pci-msi.o irq-gic-v3-its-platform-msi.o irq-gic-v4.o 32 32 obj-$(CONFIG_PARTITION_PERCPU) += irq-partition-percpu.o 33 33 obj-$(CONFIG_HISILICON_IRQ_MBIGEN) += irq-mbigen.o 34 34 obj-$(CONFIG_ARM_NVIC) += irq-nvic.o
+2 -1
drivers/irqchip/irq-gic-v3-its.c
··· 3226 3226 has_v4 |= its->is_v4; 3227 3227 3228 3228 if (has_v4 & rdists->has_vlpis) { 3229 - if (its_init_vpe_domain()) { 3229 + if (its_init_vpe_domain() || 3230 + its_init_v4(parent_domain, &its_vpe_domain_ops)) { 3230 3231 rdists->has_vlpis = false; 3231 3232 pr_err("ITS: Disabling GICv4 support\n"); 3232 3233 }
+13
drivers/irqchip/irq-gic-v4.c
··· 210 210 211 211 return irq_set_vcpu_affinity(irq, &info); 212 212 } 213 + 214 + int its_init_v4(struct irq_domain *domain, const struct irq_domain_ops *ops) 215 + { 216 + if (domain) { 217 + pr_info("ITS: Enabling GICv4 support\n"); 218 + gic_domain = domain; 219 + vpe_domain_ops = ops; 220 + return 0; 221 + } 222 + 223 + pr_err("ITS: No GICv4 VPE domain allocated\n"); 224 + return -ENODEV; 225 + }
+2
include/linux/irqchip/arm-gic-v4.h
··· 100 100 int its_unmap_vlpi(int irq); 101 101 int its_prop_update_vlpi(int irq, u8 config, bool inv); 102 102 103 + int its_init_v4(struct irq_domain *domain, const struct irq_domain_ops *ops); 104 + 103 105 #endif