Re: [PATCH] KVM: PPC: Book3S HV: Don't truncate HPTE index in xlate function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Aug 20, 2018 at 04:06:59PM +1000, Paul Mackerras wrote:
> 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@xxxxxxxxxx>

Reviewed-by: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx>

Unfortunately I haven't been able to get a hold of POWER9 time to test
it yet, still working on it.

> ---
>  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 7f3a8cf..4c08f42 100644
> --- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
> +++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
> @@ -359,7 +359,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))

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux