On 2012-02-11 15:16, Blue Swirl wrote: > On Fri, Feb 10, 2012 at 18:31, Jan Kiszka <jan.kiszka@xxxxxxxxxxx> wrote: >> In order to perform critical manipulations on the VM state in the >> context of a VCPU, specifically code patching, stopping and resuming of >> all VCPUs may be necessary. resume_all_vcpus is already compatible, now >> enable pause_all_vcpus for this use case by stopping the calling context >> before starting to wait for the whole gang. >> >> CC: Paolo Bonzini <pbonzini@xxxxxxxxxx> >> Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> >> --- >> cpus.c | 12 ++++++++++++ >> 1 files changed, 12 insertions(+), 0 deletions(-) >> >> diff --git a/cpus.c b/cpus.c >> index d0c8340..5adfc6b 100644 >> --- a/cpus.c >> +++ b/cpus.c >> @@ -870,6 +870,18 @@ void pause_all_vcpus(void) >> penv = (CPUState *)penv->next_cpu; >> } >> >> + if (!qemu_thread_is_self(&io_thread)) { >> + cpu_stop_current(); >> + if (!kvm_enabled()) { >> + while (penv) { >> + penv->stop = 0; >> + penv->stopped = 1; >> + penv = (CPUState *)penv->next_cpu; > > The cast is useless, next_cpu is already CPUState *. I wonder why it > is used in other cases too. Indeed, weird. We can clean the others up separately. Jan
Attachment:
signature.asc
Description: OpenPGP digital signature