[RFC PATCH] KVM: PPC: Book3S HV: Handle host system reset in guest mode

Paul Mackerras paulus at ozlabs.org
Fri Nov 3 16:11:23 AEDT 2017


On Fri, Nov 03, 2017 at 03:38:03PM +1100, Nicholas Piggin wrote:
> If the host takes a system reset interrupt while a guest is running,
> the CPU must exit the guest before processing the host exception
> handler.
> 
> After this patch, taking a sysrq+x with a CPU running in a guest
> gives a trace like this:
> 
>    cpu 0x27: Vector: 100 (System Reset) at [c000000fdf5776f0]
>        pc: c008000010158b80: kvmppc_run_core+0x16b8/0x1ad0 [kvm_hv]
>        lr: c008000010158b80: kvmppc_run_core+0x16b8/0x1ad0 [kvm_hv]
>        sp: c000000fdf577850
>       msr: 9000000002803033
>      current = 0xc000000fdf4b1e00
>      paca    = 0xc00000000fd4d680	 softe: 3	 irq_happened: 0x01
>        pid   = 6608, comm = qemu-system-ppc
>    Linux version 4.14.0-rc7-01489-g47e1893a404a-dirty #26 SMP
>    [c000000fdf577a00] c008000010159dd4 kvmppc_vcpu_run_hv+0x3dc/0x12d0 [kvm_hv]
>    [c000000fdf577b30] c0080000100a537c kvmppc_vcpu_run+0x44/0x60 [kvm]
>    [c000000fdf577b60] c0080000100a1ae0 kvm_arch_vcpu_ioctl_run+0x118/0x310 [kvm]
>    [c000000fdf577c00] c008000010093e98 kvm_vcpu_ioctl+0x530/0x7c0 [kvm]
>    [c000000fdf577d50] c000000000357bf8 do_vfs_ioctl+0xd8/0x8c0
>    [c000000fdf577df0] c000000000358448 SyS_ioctl+0x68/0x100
>    [c000000fdf577e30] c00000000000b220 system_call+0x58/0x6c
>    --- Exception: c01 (System Call) at 00007fff76868df0
>    SP (7fff7069baf0) is in userspace
> 
> Fixes: e36d0a2ed5 ("powerpc/powernv: Implement NMI IPI with OPAL_SIGNAL_SYSTEM_RESET")
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>

Looks good, except that you don't need the last hunk (the change to
book3s_hv_rmhandlers.S) as far as I can see:

> diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
> index 68bf0f14a962..74958ad5efb9 100644
> --- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
> +++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
> @@ -1427,6 +1427,10 @@ guest_exit_cont:		/* r9 = vcpu, r12 = trap, r13 = paca */
>  	/* don't overwrite fault_dar/fault_dsisr if HDSI */
>  	cmpwi	r12,BOOK3S_INTERRUPT_H_DATA_STORAGE
>  	beq	mc_cont
> +
> +	cmpwi	r12, BOOK3S_INTERRUPT_SYSTEM_RESET
> +	beq	mc_cont
> +
>  	std	r6, VCPU_FAULT_DAR(r9)
>  	stw	r7, VCPU_FAULT_DSISR(r9)
>  
> -- 
> 2.15.0

Paul.


More information about the Linuxppc-dev mailing list