Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [PATCH] KVM MMU: check pending exception before injecting APF
@ 2018-02-09 17:00 Paolo Bonzini
  2018-02-09 17:17 ` Greg KH
  0 siblings, 1 reply; 4+ messages in thread
From: Paolo Bonzini @ 2018-02-09 17:00 UTC (permalink / raw)
  To: stable; +Cc: nikola.ciprich, Haozhong Zhang

From: Haozhong Zhang <haozhong.zhang@intel.com>

[ upstream commit 2a266f23550be997d783f27e704b9b40c4010292 Mon Sep 17 00:00:00 2001 ]

For example, when two APF's for page ready happen after one exit and
the first one becomes pending, the second one will result in #DF.
Instead, just handle the second page fault synchronously.

Reported-by: Ross Zwisler <zwisler@gmail.com>
Message-ID: <CAOxpaSUBf8QoOZQ1p4KfUp0jq76OKfGY4Uxs-Gg8ngReD99xww@mail.gmail.com>
Reported-by: Alec Blayne <ab@tevsa.net>
Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
Fixes: 664f8e26b00c7673a8303b0d40853a0c24ca93e1
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 arch/x86/kvm/mmu.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index c4deb1f34faa..e577bacd4bd0 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -3781,7 +3781,8 @@ static int kvm_arch_setup_async_pf(struct kvm_vcpu *vcpu, gva_t gva, gfn_t gfn)
 bool kvm_can_do_async_pf(struct kvm_vcpu *vcpu)
 {
 	if (unlikely(!lapic_in_kernel(vcpu) ||
-		     kvm_event_needs_reinjection(vcpu)))
+		     kvm_event_needs_reinjection(vcpu) ||
+		     vcpu->arch.exception.pending))
 		return false;
 
 	if (!vcpu->arch.apf.delivery_as_pf_vmexit && is_guest_mode(vcpu))
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] KVM MMU: check pending exception before injecting APF
  2018-02-09 17:00 [PATCH] KVM MMU: check pending exception before injecting APF Paolo Bonzini
@ 2018-02-09 17:17 ` Greg KH
  2018-02-09 17:21   ` Paolo Bonzini
  0 siblings, 1 reply; 4+ messages in thread
From: Greg KH @ 2018-02-09 17:17 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: stable, nikola.ciprich, Haozhong Zhang

On Fri, Feb 09, 2018 at 06:00:42PM +0100, Paolo Bonzini wrote:
> From: Haozhong Zhang <haozhong.zhang@intel.com>
> 
> [ upstream commit 2a266f23550be997d783f27e704b9b40c4010292 Mon Sep 17 00:00:00 2001 ]

Odd date :)

> 
> For example, when two APF's for page ready happen after one exit and
> the first one becomes pending, the second one will result in #DF.
> Instead, just handle the second page fault synchronously.
> 
> Reported-by: Ross Zwisler <zwisler@gmail.com>
> Message-ID: <CAOxpaSUBf8QoOZQ1p4KfUp0jq76OKfGY4Uxs-Gg8ngReD99xww@mail.gmail.com>
> Reported-by: Alec Blayne <ab@tevsa.net>
> Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
> Fixes: 664f8e26b00c7673a8303b0d40853a0c24ca93e1

So this is only needed for 4.14.y?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] KVM MMU: check pending exception before injecting APF
  2018-02-09 17:17 ` Greg KH
@ 2018-02-09 17:21   ` Paolo Bonzini
  2018-02-09 17:44     ` Greg KH
  0 siblings, 1 reply; 4+ messages in thread
From: Paolo Bonzini @ 2018-02-09 17:21 UTC (permalink / raw)
  To: Greg KH; +Cc: stable, nikola.ciprich, Haozhong Zhang

On 09/02/2018 18:17, Greg KH wrote:
> On Fri, Feb 09, 2018 at 06:00:42PM +0100, Paolo Bonzini wrote:
>> From: Haozhong Zhang <haozhong.zhang@intel.com>
>>
>> [ upstream commit 2a266f23550be997d783f27e704b9b40c4010292 Mon Sep 17 00:00:00 2001 ]
> 
> Odd date :)

Oops... git's fake mbox "From" line.

>>
>> For example, when two APF's for page ready happen after one exit and
>> the first one becomes pending, the second one will result in #DF.
>> Instead, just handle the second page fault synchronously.
>>
>> Reported-by: Ross Zwisler <zwisler@gmail.com>
>> Message-ID: <CAOxpaSUBf8QoOZQ1p4KfUp0jq76OKfGY4Uxs-Gg8ngReD99xww@mail.gmail.com>
>> Reported-by: Alec Blayne <ab@tevsa.net>
>> Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
>> Fixes: 664f8e26b00c7673a8303b0d40853a0c24ca93e1
> 
> So this is only needed for 4.14.y?

Yes.  4.13 and 4.15 both work.

Paolo

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] KVM MMU: check pending exception before injecting APF
  2018-02-09 17:21   ` Paolo Bonzini
@ 2018-02-09 17:44     ` Greg KH
  0 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2018-02-09 17:44 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: stable, nikola.ciprich, Haozhong Zhang

On Fri, Feb 09, 2018 at 06:21:13PM +0100, Paolo Bonzini wrote:
> On 09/02/2018 18:17, Greg KH wrote:
> > On Fri, Feb 09, 2018 at 06:00:42PM +0100, Paolo Bonzini wrote:
> >> From: Haozhong Zhang <haozhong.zhang@intel.com>
> >>
> >> [ upstream commit 2a266f23550be997d783f27e704b9b40c4010292 Mon Sep 17 00:00:00 2001 ]
> > 
> > Odd date :)
> 
> Oops... git's fake mbox "From" line.

Yeah, I guessed, odd it showed up here...

> >> For example, when two APF's for page ready happen after one exit and
> >> the first one becomes pending, the second one will result in #DF.
> >> Instead, just handle the second page fault synchronously.
> >>
> >> Reported-by: Ross Zwisler <zwisler@gmail.com>
> >> Message-ID: <CAOxpaSUBf8QoOZQ1p4KfUp0jq76OKfGY4Uxs-Gg8ngReD99xww@mail.gmail.com>
> >> Reported-by: Alec Blayne <ab@tevsa.net>
> >> Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
> >> Fixes: 664f8e26b00c7673a8303b0d40853a0c24ca93e1
> > 
> > So this is only needed for 4.14.y?
> 
> Yes.  4.13 and 4.15 both work.

Wonderful, I'll queue this up after this round of kernels are released
in a few days.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-02-09 17:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-09 17:00 [PATCH] KVM MMU: check pending exception before injecting APF Paolo Bonzini
2018-02-09 17:17 ` Greg KH
2018-02-09 17:21   ` Paolo Bonzini
2018-02-09 17:44     ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox