|
@@ -207,20 +207,26 @@ int __attribute_const__ kvm_target_cpu(void)
|
|
|
unsigned long implementor = read_cpuid_implementor();
|
|
|
unsigned long part_number = read_cpuid_part_number();
|
|
|
|
|
|
- if (implementor != ARM_CPU_IMP_ARM)
|
|
|
- return -EINVAL;
|
|
|
+ switch (implementor) {
|
|
|
+ case ARM_CPU_IMP_ARM:
|
|
|
+ switch (part_number) {
|
|
|
+ case ARM_CPU_PART_AEM_V8:
|
|
|
+ return KVM_ARM_TARGET_AEM_V8;
|
|
|
+ case ARM_CPU_PART_FOUNDATION:
|
|
|
+ return KVM_ARM_TARGET_FOUNDATION_V8;
|
|
|
+ case ARM_CPU_PART_CORTEX_A57:
|
|
|
+ return KVM_ARM_TARGET_CORTEX_A57;
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case ARM_CPU_IMP_APM:
|
|
|
+ switch (part_number) {
|
|
|
+ case APM_CPU_PART_POTENZA:
|
|
|
+ return KVM_ARM_TARGET_XGENE_POTENZA;
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ };
|
|
|
|
|
|
- switch (part_number) {
|
|
|
- case ARM_CPU_PART_AEM_V8:
|
|
|
- return KVM_ARM_TARGET_AEM_V8;
|
|
|
- case ARM_CPU_PART_FOUNDATION:
|
|
|
- return KVM_ARM_TARGET_FOUNDATION_V8;
|
|
|
- case ARM_CPU_PART_CORTEX_A57:
|
|
|
- /* Currently handled by the generic backend */
|
|
|
- return KVM_ARM_TARGET_CORTEX_A57;
|
|
|
- default:
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
|