Re: [PATCH v2 06/10] KVM: x86: acknowledgment mechanism for async pf page ready notifications

From: Vitaly Kuznetsov
Date: Thu May 28 2020 - 07:39:30 EST


Paolo Bonzini <pbonzini@xxxxxxxxxx> writes:

> On 25/05/20 16:41, Vitaly Kuznetsov wrote:
>> + case MSR_KVM_ASYNC_PF_ACK:
>> + if (data & 0x1) {
>> + vcpu->arch.apf.pageready_pending = false;
>> + kvm_check_async_pf_completion(vcpu);
>> + }
>> + break;
>> case MSR_KVM_STEAL_TIME:
>>
>> if (unlikely(!sched_info_on()))
>> @@ -3183,6 +3189,9 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
>> case MSR_KVM_ASYNC_PF_INT:
>> msr_info->data = vcpu->arch.apf.msr_int_val;
>> break;
>> + case MSR_KVM_ASYNC_PF_ACK:
>> + msr_info->data = 0;
>> + break;
>
> How is the pageready_pending flag migrated? Should we revert the
> direction of the MSR (i.e. read the flag, and write 0 to clear it)?

The flag is not migrated so it will be 'false'. This can just cause an
extra kick in kvm_arch_async_page_present_queued() but this shouldn't be
a big deal. Also, after migration we will just send 'wakeup all' event,
async pf queue will be empty. MSR_KVM_ASYNC_PF_ACK by itself is not
migrated, we don't even store it, not sure how invering it would change
things.

--
Vitaly