From 092b06b7453a9125a0519c623cbdd3fcfc48751b Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Tue, 14 Feb 2017 15:09:18 -0600 Subject: [PATCH] arm, kvm: Automatically use the MuxingKvmGic Automatically use the MuxingKvmGic in the VExpress_GEM5_V1 platform. This removes the need to patch the host kernel or the platform configuration when using KVM on ARM. Change-Id: Ib1ed9b3b849b80c449ef1b62b83748f3f54ada26 Reviewed-by: Curtis Dunham --- src/dev/arm/RealView.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/dev/arm/RealView.py b/src/dev/arm/RealView.py index 8b9b4c20d..4db732d38 100644 --- a/src/dev/arm/RealView.py +++ b/src/dev/arm/RealView.py @@ -1,4 +1,4 @@ -# Copyright (c) 2009-2015 ARM Limited +# Copyright (c) 2009-2017 ARM Limited # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -57,6 +57,18 @@ from EnergyCtrl import EnergyCtrl from ClockDomain import SrcClockDomain from SubSystem import SubSystem +# Platforms with KVM support should generally use in-kernel GIC +# emulation. Use a GIC model that automatically switches between +# gem5's GIC model and KVM's GIC model if KVM is available. +try: + from KvmGic import MuxingKvmGic + kvm_gicv2_class = MuxingKvmGic +except ImportError: + # KVM support wasn't compiled into gem5. Fallback to a + # software-only GIC. + kvm_gicv2_class = Pl390 + pass + class AmbaPioDevice(BasicPioDevice): type = 'AmbaPioDevice' abstract = True @@ -883,7 +895,8 @@ Interrupts: dcc = CoreTile2A15DCC() ### On-chip devices ### - gic = Pl390(dist_addr=0x2c001000, cpu_addr=0x2c002000, it_lines=512) + gic = kvm_gicv2_class(dist_addr=0x2c001000, cpu_addr=0x2c002000, + it_lines=512) vgic = VGic(vcpu_addr=0x2c006000, hv_addr=0x2c004000, ppint=25) gicv2m = Gicv2m() gicv2m.frames = [