config HAS_ITS
bool
prompt "GICv3 ITS MSI controller support" if EXPERT = "y"
- depends on HAS_GICV3
+ depends on HAS_GICV3 && !NEW_VGIC
+
+config NEW_VGIC
+ bool
+ prompt "Use new VGIC implementation"
+ select NEEDS_LIST_SORT
+ ---help---
+
+ This is an alternative implementation of the ARM GIC interrupt
+ controller emulation, based on the Linux/KVM VGIC. It has a better
+ design and fixes many shortcomings of the existing GIC emulation in
+ Xen. It will eventually replace the existing/old VGIC.
+ However at the moment it lacks support for Dom0 using the ITS for
+ using MSIs.
+ Say Y if you want to help testing this new code or if you experience
+ problems with the standard emulation.
+ At the moment this implementation is not security supported.
config SBSA_VUART_CONSOLE
bool "Emulated SBSA UART console support"
obj-y += domctl.o
obj-$(EARLY_PRINTK) += early_printk.o
obj-y += gic.o
-obj-y += gic-vgic.o
obj-y += gic-v2.o
obj-$(CONFIG_HAS_GICV3) += gic-v3.o
obj-$(CONFIG_HAS_ITS) += gic-v3-its.o
obj-y += time.o
obj-y += traps.o
obj-y += vcpreg.o
+subdir-$(CONFIG_NEW_VGIC) += vgic
+ifneq ($(CONFIG_NEW_VGIC),y)
+obj-y += gic-vgic.o
obj-y += vgic.o
obj-y += vgic-v2.o
obj-$(CONFIG_HAS_GICV3) += vgic-v3.o
obj-$(CONFIG_HAS_ITS) += vgic-v3-its.o
+endif
obj-y += vm_event.o
obj-y += vtimer.o
obj-$(CONFIG_SBSA_VUART_CONSOLE) += vpl011.o
--- /dev/null
+obj-y += vgic.o
+obj-y += vgic-v2.o
+obj-y += vgic-mmio.o
+obj-y += vgic-mmio-v2.o
+obj-y += vgic-init.o
return min_t(unsigned int, MAX_VIRT_CPUS, vgic_vcpu_limit);
}
+#ifdef CONFIG_HAS_GICV3
+/* Dummy implementation to allow building without actual vGICv3 support. */
+void vgic_v3_setup_hw(paddr_t dbase,
+ unsigned int nr_rdist_regions,
+ const struct rdist_region *regions,
+ unsigned int intid_bits)
+{
+ panic("New VGIC implementation does not yet support GICv3.");
+}
+#endif
+
/*
* Local variables:
* mode: C