From 03211772cd6e20e8ea9d63fceffb895b08ead8ac Mon Sep 17 00:00:00 2001
From: zhanghao1 <zhanghao1@kylinos.cn>
Date: Tue, 11 May 2021 19:55:52 +0800
Subject: [PATCH] arm/cpu: Fixed function undefined error at compile time under
 arm

    Add the compilation option CONFIG_KVM while using
    "kvm_arm_cpu_feature_supported" and "kvm_arm_get_one_reg".
    In arm, the default value of CONFIG_KVM is no.

    While the target is arm, the compilation fails because
    the function "kvm_arm_cpu_feature_supporte" is declared
    or the function "kvm_arm_get_one_reg" is not defined.

Signed-off-by: zhanghao1 <zhanghao1@kylinos.cn>
---
 target/arm/helper.c  | 4 ++++
 target/arm/kvm_arm.h | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/target/arm/helper.c b/target/arm/helper.c
index bddd355fa0..9d2b2659f6 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -284,6 +284,7 @@ bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync)
 
         newval = read_raw_cp_reg(&cpu->env, ri);
         if (kvm_sync) {
+#ifdef CONFIG_KVM
             if (is_id_reg(ri)) {
                 /* Only sync if we can sync to KVM successfully. */
                 uint64_t oldval;
@@ -306,6 +307,7 @@ bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync)
 
                 kvm_arm_set_one_reg(cpu, cpu->cpreg_indexes[i], &oldval);
             } else {
+#endif
                 /*
                  * Only sync if the previous list->cpustate sync succeeded.
                  * Rather than tracking the success/failure state for every
@@ -324,7 +326,9 @@ bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync)
                 }
 
                 write_raw_cp_reg(&cpu->env, ri, newval);
+#ifdef CONFIG_KVM
             }
+#endif
         }
         cpu->cpreg_values[i] = newval;
     }
diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h
index 49e80878f4..a223967d4d 100644
--- a/target/arm/kvm_arm.h
+++ b/target/arm/kvm_arm.h
@@ -312,6 +312,10 @@ static inline void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu)
 
 static inline void kvm_arm_add_vcpu_properties(Object *obj) {}
 
+static inline bool kvm_arm_cpu_feature_supported(void) {
+    return false;
+}
+
 static inline int kvm_arm_get_max_vm_ipa_size(MachineState *ms)
 {
     return -ENOENT;
-- 
2.27.0

