On 28.01.21 16:28, Peter Maydell wrote:
On Wed, 20 Jan 2021 at 22:44, Alexander Graf <ag...@csgraf.de> wrote:
The hooks we have that call us after reset, init and loadvm really all
just want to say "The reference of all register state is in the QEMU
vcpu struct, please push it".
We already have a working pushing mechanism though called cpu->vcpu_dirty,
so we can just reuse that for all of the above, syncing state properly the
next time we actually execute a vCPU.
This fixes PSCI resets on ARM, as they modify CPU state even after the
post init call has completed, but before we execute the vCPU again.
To also make the scheme work for x86, we have to make sure we don't
move stale eflags into our env when the vcpu state is dirty.
Signed-off-by: Alexander Graf <ag...@csgraf.de>
Reviewed-by: Roman Bolshakov <r.bolsha...@yadro.com>
Tested-by: Roman Bolshakov <r.bolsha...@yadro.com>
What's the difference between HVF and KVM that means this code
doesn't have the same structure the KVM code does here?
The main reason is that with KVM, responsibility of register reset is
shared between kernel and user space. With HVF, user space has
everything under full control, so all we need to say is "user space is
your reference now". While with KVM, we may need to still say "KVM state
is your reference, because it will do the register reset on behalf of us".
Alex