| From foo@baz Thu Dec 21 09:02:40 CET 2017 |
| From: Wanpeng Li <wanpeng.li@hotmail.com> |
| Date: Mon, 20 Mar 2017 21:18:55 -0700 |
| Subject: KVM: x86: correct async page present tracepoint |
| |
| From: Wanpeng Li <wanpeng.li@hotmail.com> |
| |
| |
| [ Upstream commit 24dccf83a121b8a4ad5c2ad383a8184ef6c266ee ] |
| |
| After async pf setup successfully, there is a broadcast wakeup w/ special |
| token 0xffffffff which tells vCPU that it should wake up all processes |
| waiting for APFs though there is no real process waiting at the moment. |
| |
| The async page present tracepoint print prematurely and fails to catch the |
| special token setup. This patch fixes it by moving the async page present |
| tracepoint after the special token setup. |
| |
| Before patch: |
| |
| qemu-system-x86-8499 [006] ...1 5973.473292: kvm_async_pf_ready: token 0x0 gva 0x0 |
| |
| After patch: |
| |
| qemu-system-x86-8499 [006] ...1 5973.473292: kvm_async_pf_ready: token 0xffffffff gva 0x0 |
| |
| Cc: Paolo Bonzini <pbonzini@redhat.com> |
| Cc: Radim Krčmář <rkrcmar@redhat.com> |
| Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com> |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/kvm/x86.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/x86/kvm/x86.c |
| +++ b/arch/x86/kvm/x86.c |
| @@ -8443,11 +8443,11 @@ void kvm_arch_async_page_present(struct |
| { |
| struct x86_exception fault; |
| |
| - trace_kvm_async_pf_ready(work->arch.token, work->gva); |
| if (work->wakeup_all) |
| work->arch.token = ~0; /* broadcast wakeup */ |
| else |
| kvm_del_async_pf_gfn(vcpu, work->arch.gfn); |
| + trace_kvm_async_pf_ready(work->arch.token, work->gva); |
| |
| if ((vcpu->arch.apf.msr_val & KVM_ASYNC_PF_ENABLED) && |
| !apf_put_user(vcpu, KVM_PV_REASON_PAGE_READY)) { |