kvm, arm: Add support for aarch64
authorAndreas Sandberg <andreas.sandberg@arm.com>
Mon, 1 Jun 2015 18:44:19 +0000 (19:44 +0100)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Mon, 1 Jun 2015 18:44:19 +0000 (19:44 +0100)
commit7c4eb3b4d88480003f8c227731f7a31bd55cb819
tree894adf74576a37d7aea435f25be95875a553dd77
parentdbfd6effe0e0a620ef0bdbbc9620e43dac622e83
kvm, arm: Add support for aarch64

This changeset adds support for aarch64 in kvm. The CPU module
supports both checkpointing and online CPU model switching as long as
no devices are simulated by the host kernel. It currently has the
following limitations:

   * The system register based generic timer can only be simulated by
     the host kernel. Workaround: Use a memory mapped timer instead to
     simulate the timer in gem5.

   * Simulating devices (e.g., the generic timer) in the host kernel
     requires that the host kernel also simulates the GIC.

   * ID registers in the host and in gem5 must match for switching
     between simulated CPUs and KVM. This is particularly important
     for ID registers describing memory system capabilities (e.g.,
     ASID size, physical address size).

   * Switching between a virtualized CPU and a simulated CPU is
     currently not supported if in-kernel device emulation is
     used. This could be worked around by adding support for switching
     to the gem5 (e.g., the KvmGic) side of the device models. A
     simpler workaround is to avoid in-kernel device models
     altogether.
SConstruct
configs/common/CpuConfig.py
src/arch/arm/kvm/ArmV8KvmCPU.py [new file with mode: 0644]
src/arch/arm/kvm/BaseArmKvmCPU.py [new file with mode: 0644]
src/arch/arm/kvm/SConscript
src/arch/arm/kvm/armv8_cpu.cc [new file with mode: 0644]
src/arch/arm/kvm/armv8_cpu.hh [new file with mode: 0644]
src/arch/arm/kvm/base_cpu.cc [new file with mode: 0644]
src/arch/arm/kvm/base_cpu.hh [new file with mode: 0644]
src/cpu/kvm/vm.cc
src/cpu/kvm/vm.hh