OSDN Git Service

KVM: PPC: Book3S HV: Don't truncate HPTE index in xlate function
authorPaul Mackerras <paulus@ozlabs.org>
Mon, 20 Aug 2018 06:05:45 +0000 (16:05 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Oct 2018 06:52:10 +0000 (08:52 +0200)
commitc7bb863d8ec048e9ee63d2fc028544507ab857e9
treea60fa533e265c8c95fcbd0052dcf83cc677895c2
parentbbbc4dabca5d51c608b0fd608eb3cd8659266653
KVM: PPC: Book3S HV: Don't truncate HPTE index in xlate function

[ Upstream commit 46dec40fb741f00f1864580130779aeeaf24fb3d ]

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@ozlabs.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/powerpc/kvm/book3s_64_mmu_hv.c