On Wed, Dec 02, 2020 at 08:04:03PM +0100, Alexander Graf wrote: > When clearing internal state of a CPU, we should also make sure that HVF > knows about it and can push the new values down to vcpu state. >
I'm sorry if I'm asking something dumb. But isn't cpu_synchronize_all_post_reset() is supposed to push QEMU state into HVF (or any other accel) after reset? For x86 it used to work: static void do_hvf_cpu_synchronize_post_reset(CPUState *cpu, run_on_cpu_data arg) { hvf_put_registers(cpu); cpu->vcpu_dirty = false; } Thanks, Roman > Make sure that with HVF enabled, we tell it that it should synchronize > CPU state on next entry after a reset. > > This fixes PSCI handling, because now newly pushed state such as X0 and > PC on remote CPU enablement also get pushed into HVF. > > Signed-off-by: Alexander Graf <ag...@csgraf.de> > --- > target/arm/arm-powerctl.c | 1 + > target/arm/cpu.c | 2 ++ > 2 files changed, 3 insertions(+) > > diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c > index b75f813b40..a49a5b32e6 100644 > --- a/target/arm/arm-powerctl.c > +++ b/target/arm/arm-powerctl.c > @@ -15,6 +15,7 @@ > #include "arm-powerctl.h" > #include "qemu/log.h" > #include "qemu/main-loop.h" > +#include "sysemu/hw_accel.h" > > #ifndef DEBUG_ARM_POWERCTL > #define DEBUG_ARM_POWERCTL 0 > diff --git a/target/arm/cpu.c b/target/arm/cpu.c > index db6f7c34ed..9a501ea4bd 100644 > --- a/target/arm/cpu.c > +++ b/target/arm/cpu.c > @@ -411,6 +411,8 @@ static void arm_cpu_reset(DeviceState *dev) > #ifndef CONFIG_USER_ONLY > if (kvm_enabled()) { > kvm_arm_reset_vcpu(cpu); > + } else if (hvf_enabled()) { > + s->vcpu_dirty = true; > } > #endif > > -- > 2.24.3 (Apple Git-128) >