On 04/04/2017 20:18, Andrew Jones wrote: >> My understanding is that KVM-ARM is using KVM_REQ_VCPU_EXIT simply to >> reuse the smp_call_function_many code in kvm_make_all_cpus_request. >> Once you add EXITING_GUEST_MODE, ARM can just add a new function >> kvm_kick_all_cpus and use it for both pause and power_off. > > I was wondering about the justification of > 'if (vcpu->mode == EXITING_GUEST_MODE)' in the x86 code, as it seemed > redundant to me with the requests. I'll have another think on it to see > if request-less kicks can be satisfied in all cases by this, as long as we > have the mode setting, barrier, mode checking order ensured in vcpu run. Yes, this is the justification. You should add that to kvm_arch_vcpu_ioctl_run to close the race window (as well as the kvm_request_pending, just for good measure). These two are not really optional, they are part of how kvm_vcpu_exiting_guest_mode and requests are supposed to work. kvm_vcpu_exiting_guest_mode is optional, but ARM is using it and it's a pity to undo it. Once you have done this, you can choose whether to use requests or not for pause and poweroff, but I think it will not be necessary. Paolo