ACK: [[SCRIPT=remove_re|Re: [SRU][Bionic]]PATCH] KVM: PPC: Book3S HV: Don't truncate HPTE index in xlate function]]

Stefan Bader stefan.bader at canonical.com
Thu Mar 28 14:08:54 UTC 2019


On 19.03.19 08:43, Juerg Haefliger wrote:
> From: Paul Mackerras <paulus at ozlabs.org>
> 
> BugLink: https://bugs.launchpad.net/bugs/1818645
> 
> This fixes a bug which causes guest virtual addresses to get translated
> to guest real addresses incorrectly when the guest is using the HPT MMU
> and has more than 256GB of RAM, or more specifically has a HPT larger
> than 2GB.  This has showed up in testing as a failure of the host to
> emulate doorbell instructions correctly on POWER9 for HPT guests with
> more than 256GB of RAM.
> 
> The bug is that the HPTE index in kvmppc_mmu_book3s_64_hv_xlate()
> is stored as an int, and in forming the HPTE address, the index gets
> shifted left 4 bits as an int before being signed-extended to 64 bits.
> The simple fix is to make the variable a long int, matching the
> return type of kvmppc_hv_find_lock_hpte(), which is what calculates
> the index.
> 
> Fixes: 697d3899dcb4 ("KVM: PPC: Implement MMIO emulation support for Book3S HV guests")
> Signed-off-by: Paul Mackerras <paulus at ozlabs.org>
> (cherry picked from commit 46dec40fb741f00f1864580130779aeeaf24fb3d)
> Signed-off-by: Juerg Haefliger <juergh at canonical.com>
Acked-by: Stefan Bader <stefan.bader at canonical.com>
> ---
>  arch/powerpc/kvm/book3s_64_mmu_hv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
> index ef243fed2f2b..00ae5384cf36 100644
> --- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
> +++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
> @@ -356,7 +356,7 @@ static int kvmppc_mmu_book3s_64_hv_xlate(struct kvm_vcpu *vcpu, gva_t eaddr,
>  	unsigned long pp, key;
>  	unsigned long v, orig_v, gr;
>  	__be64 *hptep;
> -	int index;
> +	long int index;
>  	int virtmode = vcpu->arch.shregs.msr & (data ? MSR_DR : MSR_IR);
>  
>  	if (kvm_is_radix(vcpu->kvm))
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20190328/3765f4b8/attachment.sig>


More information about the kernel-team mailing list