diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2017-02-14 15:09:18 -0600 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2017-02-14 15:09:18 -0600 |
commit | 092b06b7453a9125a0519c623cbdd3fcfc48751b (patch) | |
tree | 5566b27dcadf8235e146fcf9039c20b706b865c2 | |
parent | 0edf6dc9560364691ca0d359ab8321b936f0ec85 (diff) | |
download | gem5-092b06b7453a9125a0519c623cbdd3fcfc48751b.tar.xz |
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 <curtis.dunham@arm.com>
-rw-r--r-- | src/dev/arm/RealView.py | 17 |
1 files 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 = [ |