Paolo Bonzini <pbonz...@redhat.com> 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

Reply via email to