diff options
author | Marc Zyngier <Marc.Zyngier@arm.com> | 2013-04-11 17:36:25 +0100 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2015-06-01 16:39:54 +0100 |
commit | ef8a47b3e5026263f7a7ea2a517963840567d911 (patch) | |
tree | 8b54a6ab974250e27d06b58034a4b1547c035670 | |
parent | beff7ae0e7857eba651017b1d496371e339dddac (diff) | |
download | kvmtool-ef8a47b3e5026263f7a7ea2a517963840567d911.tar.gz |
kvm tools: arm64: add support for AEM and Foundation models
The ARMv8 architecture is supported by two publicly available
software models: the Architecture Enveloppe Model, and the
Foundation model.
Both are fairly similar to the Cortex-A57 from a kvm tools point of
view, so we can hijack the A57 implementation to register these
new targets.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
-rw-r--r-- | arm/aarch64/cortex-a57.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/arm/aarch64/cortex-a57.c b/arm/aarch64/cortex-a57.c index 5b0dc4c3..0c340fb7 100644 --- a/arm/aarch64/cortex-a57.c +++ b/arm/aarch64/cortex-a57.c @@ -49,6 +49,22 @@ static int cortex_a57__vcpu_init(struct kvm_cpu *vcpu) return 0; } +/* + * As far as userspace is concerned, both of these implementations are + * extremely similar. + */ +static struct kvm_arm_target target_aem_v8 = { + .id = KVM_ARM_TARGET_AEM_V8, + .compatible = "arm,arm-v8", + .init = cortex_a57__vcpu_init, +}; + +static struct kvm_arm_target target_foundation_v8 = { + .id = KVM_ARM_TARGET_FOUNDATION_V8, + .compatible = "arm,arm-v8", + .init = cortex_a57__vcpu_init, +}; + static struct kvm_arm_target target_cortex_a57 = { .id = KVM_ARM_TARGET_CORTEX_A57, .compatible = "arm,cortex-a57", @@ -57,6 +73,8 @@ static struct kvm_arm_target target_cortex_a57 = { static int cortex_a57__core_init(struct kvm *kvm) { - return kvm_cpu__register_kvm_arm_target(&target_cortex_a57); + return (kvm_cpu__register_kvm_arm_target(&target_aem_v8) || + kvm_cpu__register_kvm_arm_target(&target_foundation_v8) || + kvm_cpu__register_kvm_arm_target(&target_cortex_a57)); } core_init(cortex_a57__core_init); |