[PATCH] KVM: PPC: Book3S: fix XIVE migration of pending interrupts

Greg Kurz groug at kaod.org
Fri Dec 22 22:58:47 AEDT 2017


On Fri, 22 Dec 2017 22:22:08 +1100
Michael Ellerman <mpe at ellerman.id.au> wrote:

> Paul Mackerras <paulus at ozlabs.org> writes:
> 
> > On Fri, Dec 22, 2017 at 03:34:20PM +1100, Michael Ellerman wrote:  
> >> Laurent Vivier <lvivier at redhat.com> writes:
> >>   
> >> > On 12/12/2017 13:02, Cédric Le Goater wrote:  
> >> >> When restoring a pending interrupt, we are setting the Q bit to force
> >> >> a retrigger in xive_finish_unmask(). But we also need to force an EOI
> >> >> in this case to reach the same initial state : P=1, Q=0.
> >> >> 
> >> >> This can be done by not setting 'old_p' for pending interrupts which
> >> >> will inform xive_finish_unmask() that an EOI needs to be sent.
> >> >> 
> >> >> Suggested-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> >> >> Signed-off-by: Cédric Le Goater <clg at kaod.org>
> >> >> ---
> >> >> 
> >> >>  Tested with a guest running iozone.
> >> >> 
> >> >>  arch/powerpc/kvm/book3s_xive.c | 4 ++--
> >> >>  1 file changed, 2 insertions(+), 2 deletions(-)  
> >> >
> >> > We really need this patch to fix VM migration on POWER9.
> >> > When will it be merged?  
> >> 
> >> Paul is away, so I'll merge it via the powerpc tree.
> >> 
> >> I'll mark it:
> >> 
> >>   Fixes: 5af50993850a ("KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller")
> >>   Cc: stable at vger.kernel.org # v4.12+  
> >
> > Thanks for doing that.
> >
> > If you felt like merging Alexey's patch "KVM: PPC: Book3S PR: Fix WIMG
> > handling under pHyp" with my acked-by, that would be fine too.  The
> > commit message needs a little work - the reason for using HPTE_R_M is
> > not just because it seems to work, but because current POWER
> > processors require M set on mappings for normal pages, and pHyp
> > enforces that.  
> 
> OK. I saw this too late, but I'll pick that one up next week. If someone
> sends me an updated change log I will merge all of their patches for
> ever.
> 

Really ? Opportunity makes the thief, so here's my take :P

8<---------------------------------------------------------------------->8
KVM: PPC: Book3S: fix XIVE migration of pending interrupts

96df226 "KVM: PPC: Book3S PR: Preserve storage control bits" added WIMG
bits preserving but it missed 2 special cases:
- a magic page in kvmppc_mmu_book3s_64_xlate() and
- guest real mode in kvmppc_handle_pagefault().

For these ptes WIMG were 0 and pHyp failed on these causing a guest to
stop in the very beginning at NIP=0x100 (due to bd9166ffe
"KVM: PPC: Book3S PR: Exit KVM on failed mapping").

According to LoPAPR v1.1 14.5.4.1.2 H_ENTER:

 The hypervisor checks that the WIMG bits within the PTE are appropriate
 for the physical page number else H_Parameter return. (For System Memory
 pages WIMG=0010, or, 1110 if the SAO option is enabled, and for IO pages
 WIMG=01**.)

This hence initializes WIMG to non-zero value HPTE_R_M (0x10), as expected
by pHyp.

Fixes: 96df226 "KVM: PPC: Book3S PR: Preserve storage control bits"
Signed-off-by: Alexey Kardashevskiy <aik at ozlabs.ru>
8<---------------------------------------------------------------------->8

Cheers,

--
Greg

> cheers
> --
> To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the Linuxppc-dev mailing list