diff options
author | Pierrick Bouvier <pierrick.bouvier@linaro.org> | 2025-05-12 11:04:50 -0700 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2025-05-14 15:12:40 +0100 |
commit | 1dfe5a0c2e3da5d315cb45dbd7336bf20ea9a0ae (patch) | |
tree | 1c8d11d491b00a1f33192bd0d5d264d836dc2aaa | |
parent | cb9f95996a5d2941da5a41cc168145aca3051a55 (diff) | |
download | qemu-1dfe5a0c2e3da5d315cb45dbd7336bf20ea9a0ae.zip qemu-1dfe5a0c2e3da5d315cb45dbd7336bf20ea9a0ae.tar.gz qemu-1dfe5a0c2e3da5d315cb45dbd7336bf20ea9a0ae.tar.bz2 |
target/arm/machine: move cpu_post_load kvm bits to kvm_arm_cpu_post_load function
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20250512180502.2395029-37-pierrick.bouvier@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | target/arm/kvm.c | 13 | ||||
-rw-r--r-- | target/arm/kvm_arm.h | 4 | ||||
-rw-r--r-- | target/arm/machine.c | 8 |
3 files changed, 16 insertions, 9 deletions
diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 82668d6..a2791aa 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -938,13 +938,24 @@ void kvm_arm_cpu_pre_save(ARMCPU *cpu) } } -void kvm_arm_cpu_post_load(ARMCPU *cpu) +bool kvm_arm_cpu_post_load(ARMCPU *cpu) { + if (!write_list_to_kvmstate(cpu, KVM_PUT_FULL_STATE)) { + return false; + } + /* Note that it's OK for the TCG side not to know about + * every register in the list; KVM is authoritative if + * we're using it. + */ + write_list_to_cpustate(cpu); + /* KVM virtual time adjustment */ if (cpu->kvm_adjvtime) { cpu->kvm_vtime = *kvm_arm_get_cpreg_ptr(cpu, KVM_REG_ARM_TIMER_CNT); cpu->kvm_vtime_dirty = true; } + + return true; } void kvm_arm_reset_vcpu(ARMCPU *cpu) diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index b638e09..c4178d1 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -83,8 +83,10 @@ void kvm_arm_cpu_pre_save(ARMCPU *cpu); * @cpu: ARMCPU * * Called from cpu_post_load() to update KVM CPU state from the cpreg list. + * + * Returns: true on success, or false if write_list_to_kvmstate failed. */ -void kvm_arm_cpu_post_load(ARMCPU *cpu); +bool kvm_arm_cpu_post_load(ARMCPU *cpu); /** * kvm_arm_reset_vcpu: diff --git a/target/arm/machine.c b/target/arm/machine.c index 868246a..e442d48 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -976,15 +976,9 @@ static int cpu_post_load(void *opaque, int version_id) } if (kvm_enabled()) { - if (!write_list_to_kvmstate(cpu, KVM_PUT_FULL_STATE)) { + if (!kvm_arm_cpu_post_load(cpu)) { return -1; } - /* Note that it's OK for the TCG side not to know about - * every register in the list; KVM is authoritative if - * we're using it. - */ - write_list_to_cpustate(cpu); - kvm_arm_cpu_post_load(cpu); } else { if (!write_list_to_cpustate(cpu)) { return -1; |