From ef8a47b3e5026263f7a7ea2a517963840567d911 Mon Sep 17 00:00:00 2001 From: Marc Zyngier Date: Thu, 11 Apr 2013 17:36:25 +0100 Subject: [PATCH] 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 Signed-off-by: Will Deacon Signed-off-by: Pekka Enberg --- arm/aarch64/cortex-a57.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/arm/aarch64/cortex-a57.c b/arm/aarch64/cortex-a57.c index 5b0dc4c..0c340fb 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);