From: Marc Zyngier <Marc.Zyngier@xxxxxxx> 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@xxxxxxx> Signed-off-by: Will Deacon <will.deacon@xxxxxxx> --- tools/kvm/arm/aarch64/cortex-a57.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/kvm/arm/aarch64/cortex-a57.c b/tools/kvm/arm/aarch64/cortex-a57.c index 5b0dc4c..0c340fb 100644 --- a/tools/kvm/arm/aarch64/cortex-a57.c +++ b/tools/kvm/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); -- 1.8.0 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html