summaryrefslogtreecommitdiff
path: root/src/arch/arm/kvm/armv8_cpu.hh
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2017-03-20 14:36:48 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2017-04-03 16:37:55 +0000
commit66a1016a3548e244f4d96773bfa8985262e4d4b4 (patch)
tree12d2163183229c7069c82e37f12afa8407f1ca24 /src/arch/arm/kvm/armv8_cpu.hh
parentd2254e034e76dc23320ea1b300177a79e4818b61 (diff)
downloadgem5-66a1016a3548e244f4d96773bfa8985262e4d4b4.tar.xz
arm, kvm: Override the kernel's default MPIDR value
The kernel and gem5 derive MPIDR values from CPU IDs in slightly different ways. This means that guests running in a multi-CPU setup sometimes fail to bring up secondary CPUs. Fix this by overriding the MPIDR value in virtual CPUs just after they have been instantiated. Change-Id: I916d44978a9c855ab89c80a083af45b0cea6edac Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Curtis Dunham <curtis.dunham@arm.com> Reviewed-by: Sascha Bischoff <sascha.bischoff@arm.com> Reviewed-on: https://gem5-review.googlesource.com/2461 Reviewed-by: Weiping Liao <weipingliao@google.com>
Diffstat (limited to 'src/arch/arm/kvm/armv8_cpu.hh')
-rw-r--r--src/arch/arm/kvm/armv8_cpu.hh6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/arch/arm/kvm/armv8_cpu.hh b/src/arch/arm/kvm/armv8_cpu.hh
index d3e390b4f..63e03908f 100644
--- a/src/arch/arm/kvm/armv8_cpu.hh
+++ b/src/arch/arm/kvm/armv8_cpu.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015 ARM Limited
+ * Copyright (c) 2015, 2017 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -83,6 +83,8 @@ class ArmV8KvmCPU : public BaseArmKvmCPU
ArmV8KvmCPU(ArmV8KvmCPUParams *params);
virtual ~ArmV8KvmCPU();
+ void startup() override;
+
void dump() const override;
protected:
@@ -132,6 +134,8 @@ class ArmV8KvmCPU : public BaseArmKvmCPU
static const std::vector<ArmV8KvmCPU::IntRegInfo> intRegMap;
/** Mapping between gem5 misc registers registers and registers in kvm */
static const std::vector<ArmV8KvmCPU::MiscRegInfo> miscRegMap;
+ /** Mapping between gem5 ID misc registers registers and registers in kvm */
+ static const std::vector<ArmV8KvmCPU::MiscRegInfo> miscRegIdMap;
/** Cached mapping between system registers in kvm and misc regs in gem5 */
mutable std::vector<ArmV8KvmCPU::MiscRegInfo> sysRegMap;