Re: [PATCH 2/2] KVM: PPC: Book3E: Get vcpu's last instruction for emulation
From: Scott Wood <hidden>
Date: 2013-07-10 00:12:43
Also in:
kvm
From: Scott Wood <hidden>
Date: 2013-07-10 00:12:43
Also in:
kvm
On 07/09/2013 04:45:10 PM, Alexander Graf wrote:
=20 On 28.06.2013, at 11:20, Mihai Caraman wrote: =20quoted
+ /* Get page size */ + if (MAS0_GET_TLBSEL(mfspr(SPRN_MAS0)) =3D=3D 0) + psize_shift =3D PAGE_SHIFT; + else + psize_shift =3D MAS1_GET_TSIZE(mas1) + 10; + + mas7_mas3 =3D (((u64) mfspr(SPRN_MAS7)) << 32) | + mfspr(SPRN_MAS3); + addr =3D (mas7_mas3 & (~0ULL << psize_shift)) | + (geaddr & ((1ULL << psize_shift) - 1ULL)); + + /* Map a page and get guest's instruction */ + page =3D pfn_to_page(addr >> PAGE_SHIFT);=20 While looking at this I just realized that you're missing a check =20 here. What if our IP is in some PCI BAR? Or can't we execute from =20 those?
We at least need to check pfn_valid() first. That'll just keep us from =20 accessing a bad pointer in the host kernel, though -- it won't make the =20 emulation actually work. If we need that, we'll probably need to =20 create a temporary TLB entry manually. -Scott=