This is a complete GICv3 implementation, both software emulation and KVM acceleration are supported.
This series is a consolidated and updated patch set, based on: - GIC-500 implementation: http://lists.nongnu.org/archive/html/qemu-devel/2015-06/msg01512.html - vGICv3 implementation: https://lists.gnu.org/archive/html/qemu-devel/2015-05/msg04496.html I decided to repost because qemu development has progressed and it became difficult to apply those series to current master. Changes from previous versions: - Removed RFC prefix - Base class separated from the rest, as was requested in RFC v2 review - Fixed small number of broken comments / code formatting issues, according to the same review - Removed #if 0 in virt.c - vGICv3 patch set restructured and more clearly separated into portions, according to old Eric's review - Removed duplication of low-level vGICv3 code. Common helper routines are used instead. - Put informative commit messages Pavel Fedin (6): Add virt-v3 machine that uses GIC-500 Extract some reusable vGIC code Set kernel_irqchip_type for the rest of ARM boards which use GIC Make use of kernel_irqchip_type in kvm_arch_irqchip_create() Initial implementation of vGICv3 Enable KVM acceleration for GICv3 Shlomo Pongratz (3): Implement GIC-500 base class Implement GIC-500 GICv3 support hw/arm/exynos4_boards.c | 1 + hw/arm/realview.c | 1 + hw/arm/vexpress.c | 1 + hw/arm/virt.c | 141 ++- hw/intc/Makefile.objs | 3 + hw/intc/arm_gic_kvm.c | 84 +- hw/intc/arm_gicv3.c | 2086 ++++++++++++++++++++++++++++++++++++ hw/intc/arm_gicv3_common.c | 216 ++++ hw/intc/arm_gicv3_kvm.c | 203 ++++ hw/intc/gicv3_internal.h | 159 +++ hw/intc/vgic_common.h | 43 + include/hw/arm/fdt.h | 2 +- include/hw/arm/virt.h | 6 +- include/hw/boards.h | 1 + include/hw/intc/arm_gicv3.h | 44 + include/hw/intc/arm_gicv3_common.h | 116 ++ include/sysemu/kvm.h | 3 +- kvm-all.c | 2 +- stubs/kvm.c | 2 +- target-arm/cpu.h | 12 + target-arm/cpu64.c | 105 ++ target-arm/kvm.c | 8 +- 22 files changed, 3164 insertions(+), 75 deletions(-) create mode 100644 hw/intc/arm_gicv3.c create mode 100644 hw/intc/arm_gicv3_common.c create mode 100644 hw/intc/arm_gicv3_kvm.c create mode 100644 hw/intc/gicv3_internal.h create mode 100644 hw/intc/vgic_common.h create mode 100644 include/hw/intc/arm_gicv3.h create mode 100644 include/hw/intc/arm_gicv3_common.h -- 1.9.5.msysgit.0