[prev in list] [next in list] [prev in thread] [next in thread] 

List:       qemu-ppc
Subject:    Re: [Qemu-ppc] [PATCH] spapr: don't call KVM_PPC_CONFIGURE_V3_MMU if HPT is in userspace
From:       Laurent Vivier <lvivier () redhat ! com>
Date:       2018-05-29 8:25:11
Message-ID: b62f90f5-a602-2c2b-8b1c-cc195c51c64d () redhat ! com
[Download RAW message or body]

On 25/05/2018 14:54, Greg Kurz wrote:
> Since the kernel commit "dbfcf3cb9c68 powerpc/64: Call H_REGISTER_PROC_TBL
> when running as a HPT guest on POWER9", a nested guest running with PR KVM
> hangs at boot:
> 
> Preparing to boot Linux version 4.16.0-kvm-pr-hang-gku+ (greg@qemu2222.boston16) \
> (gcc version 8.1.1 20180502 (Red Hat 8.1.1-1) (GCC)) #19 SMP Fri May 25 08:41:55 \
> CEST 2018 Detected machine type: 0000000000000101
> command line: root=UUID=22128c5c-30b1-4e0a-ac16-95853df31131 ro rhgb console=hvc0 \
> early_printk disable-radix=on Max number of cores passed to firmware: 1024 (NR_CPUS \
> = 1024) Calling ibm,client-architecture-support... done
> memory layout at init:
> memory_limit : 0000000000000000 (16 MB aligned)
> alloc_bottom : 0000000001b80000
> alloc_top    : 0000000030000000
> alloc_top_hi : 0000000100000000
> rmo_top      : 0000000030000000
> ram_top      : 0000000100000000
> instantiating rtas at 0x000000002fff0000... done
> prom_hold_cpus: skipped
> copying OF device tree...
> Building dt strings...
> Building dt structure...
> Device tree strings 0x0000000003d90000 -> 0x0000000003d90abb
> Device tree struct  0x0000000003da0000 -> 0x0000000003db0000
> Quiescing Open Firmware ...
> Booting Linux via __start() @ 0x0000000000400000 ...
> 
> This happens because the H_REGISTER_PROC_TBL implementation in QEMU
> always call KVM_PPC_CONFIGURE_V3_MMU when KVM is present. This fails
> in the case of PR KVM, which doesn't implement it, and QEMU returns
> H_PARAMETER to the guest, which is a BUG() condition in linux.
> 
> In the case of PR, the HPT is allocated in userspace by QEMU, so it
> doesn't make sense to call KVM_PPC_CONFIGURE_V3_MMU in the first
> place. So, skip it in this case and let the guest boot.
> 
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> 
> Note that PR KVM requires this patch from Paul to work on POWER9:
> 
> https://patchwork.ozlabs.org/patch/916766/
> 
> The original request was coming from people who want to run openQA in
> fedora28 under PowerVM on a POWER9 system. This requires PR KVM, which
> will be running in HPT-mode since pHyp doesn't do radix.
> 
> Cc'ing stable because fedora28 ships QEMU 2.11.x.
> ---
> hw/ppc/spapr_hcall.c |    2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
> index 022f6d810182..12cbb317e5e8 100644
> --- a/hw/ppc/spapr_hcall.c
> +++ b/hw/ppc/spapr_hcall.c
> @@ -1420,7 +1420,7 @@ static target_ulong h_register_process_table(PowerPCCPU *cpu,
> ((flags & FLAG_GTSE) ? LPCR_GTSE : 0),
> LPCR_UPRT | LPCR_GTSE);
> 
> -    if (kvm_enabled()) {
> +    if (kvm_enabled() && !spapr->htab) {
> return kvmppc_configure_v3_mmu(cpu, flags & FLAG_RADIX,
> flags & FLAG_GTSE, cproc);
> }
> 

Reviewed-by: Laurent Vivier <lvivier@redhat.com>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic