Re: [PATCH v4 3/4] KVM: async_pf: Force a nested vmexit if the injected #PF is async_pf

From: Paolo Bonzini
Date: Tue Jun 27 2017 - 09:40:57 EST




On 22/06/2017 04:06, Wanpeng Li wrote:
> From: Wanpeng Li <wanpeng.li@xxxxxxxxxxx>
>
> Add an async_page_fault field to vcpu->arch.exception to identify an async
> page fault, and constructs the expected vm-exit information fields. Force
> a nested VM exit from nested_vmx_check_exception() if the injected #PF
> is async page fault. Extending the userspace interface KVM_GET_VCPU_EVENTS
> and KVM_SET_VCPU_EVENTS for live migration.

I am not sure what would happen if new kernel (that can produce
async_page_fault=1) runs on top of old userspace (that can consume it).

I think it would be safer to make the new field "nested_apf", and only
set it if in guest_mode, like

vcpu->arch.exception.nested_apf =
is_guest_mode(vcpu) && fault->async_page_fault;
if (vcpu->arch.exception.nested_apf)
vcpu->arch.apf.nested_apf_token = fault->address;
else
vcpu->arch.cr2 = fault->address;

What do you think?

Paolo