On Tue, 13 Aug 2019 10:43:52 +0200, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > On 09/08/19 17:59, Adalbert Lazăr wrote: > > +void kvmi_handle_requests(struct kvm_vcpu *vcpu) > > +{ > > + struct kvmi *ikvm; > > + > > + ikvm = kvmi_get(vcpu->kvm); > > + if (!ikvm) > > + return; > > + > > + for (;;) { > > + int err = kvmi_run_jobs_and_wait(vcpu); > > + > > + if (err) > > + break; > > + } > > + > > + kvmi_put(vcpu->kvm); > > +} > > + > > Using kvmi_run_jobs_and_wait from two places (here and kvmi_send_event) > is very confusing. Does kvmi_handle_requests need to do this, or can it > just use kvmi_run_jobs? I think I've added this wait to block vCPUs during single-step. A 'wait_until_single_step_finished' job will do, I guess, so we could use kvmi_run_jobs() here.