Message ID | 20250504052914.3525365-39-pierrick.bouvier@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | single-binary: compile target/arm twice | expand |
On 5/3/25 22:29, Pierrick Bouvier wrote: > Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> > --- > target/arm/kvm_arm.h | 4 +++- > target/arm/kvm.c | 13 ++++++++++++- > target/arm/machine.c | 8 +------- > 3 files changed, 16 insertions(+), 9 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ > > diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h > index d156c790b66..00fc82db711 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/kvm.c b/target/arm/kvm.c > index 8f68aa10298..8132f2345c5 100644 > --- a/target/arm/kvm.c > +++ b/target/arm/kvm.c > @@ -977,13 +977,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/machine.c b/target/arm/machine.c > index 868246a98c0..e442d485241 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;
diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index d156c790b66..00fc82db711 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/kvm.c b/target/arm/kvm.c index 8f68aa10298..8132f2345c5 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -977,13 +977,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/machine.c b/target/arm/machine.c index 868246a98c0..e442d485241 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;
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> --- target/arm/kvm_arm.h | 4 +++- target/arm/kvm.c | 13 ++++++++++++- target/arm/machine.c | 8 +------- 3 files changed, 16 insertions(+), 9 deletions(-)