On Wed, Apr 29, 2020 at 12:53:33PM +0200, Paolo Bonzini wrote: > On 29/04/20 11:36, Vitaly Kuznetsov wrote: > > + > > + if (__this_cpu_read(apf_reason.enabled)) { > > + reason = __this_cpu_read(apf_reason.reason); > > + if (reason == KVM_PV_REASON_PAGE_READY) { > > + token = __this_cpu_read(apf_reason.token); > > + /* > > + * Make sure we read 'token' before we reset > > + * 'reason' or it can get lost. > > + */ > > + mb(); > > + __this_cpu_write(apf_reason.reason, 0); > > + kvm_async_pf_task_wake(token); > > + } > > If tokens cannot be zero, could we avoid using reason for the page ready > interrupt (and ultimately retire "reason" completely)? If we are planning to report errors using this interface, then retaining KVM_PV_REASON_PAGE_READY makes sense because we can then introduce another state say KVM_PV_REASON_PAGE_ERROR. Thanks Vivek