Hi Sasha, On Thu, Aug 18, 2016 at 07:45:33AM -0400, Levin, Alexander wrote: > On 08/18/2016 05:05 AM, James Hogan wrote: > > commit 8985d50382359e5bf118fdbefc859d0dbf6cebc7 upstream. > > > > kvm_mips_handle_mapped_seg_tlb_fault() calculates the guest frame number > > based on the guest TLB EntryLo values, however it is not range checked > > to ensure it lies within the guest_pmap. If the physical memory the > > guest refers to is out of range then dump the guest TLB and emit an > > internal error. > > > > Fixes: 858dd5d45733 ("KVM/MIPS32: MMU/TLB operations for the Guest.") > > Signed-off-by: James Hogan <james.hogan@xxxxxxxxxx> > > Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> > > Cc: "Radim Krčmář" <rkrcmar@xxxxxxxxxx> > > Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> > > Cc: linux-mips@xxxxxxxxxxxxxx > > Cc: kvm@xxxxxxxxxxxxxxx > > Signed-off-by: Radim Krčmář <rkrcmar@xxxxxxxxxx> > > [james.hogan@xxxxxxxxxx: Backport to v3.17.y - v4.4.y] > > Signed-off-by: James Hogan <james.hogan@xxxxxxxxxx> > > Hey James, > > Thanks for the backport! > > Applying this one seems to fail with: > > $ git apply --reject [PATCH BACKPORT 3.17-4.4 1_4] MIPS: KVM: Fix mapped > fault broken commpage handling - James Hogan <james.hogan@xxxxxxxxxx> - > 2016-08-18 0505.eml > Checking patch arch/mips/kvm/tlb.c... > error: while searching for: > unsigned long entryhi = 0, entrylo0 = 0, entrylo1 = 0; > struct kvm *kvm = vcpu->kvm; > pfn_t pfn0, pfn1; > long tlb_lo[2]; > > tlb_lo[0] = tlb->tlb_lo0; > > error: patch failed: arch/mips/kvm/tlb.c:361 > error: while searching for: > VPN2_MASK & (PAGE_MASK << 1))) > tlb_lo[(KVM_GUEST_COMMPAGE_ADDR >> PAGE_SHIFT) & 1] = 0; > > if (kvm_mips_map_page(kvm, mips3_tlbpfn_to_paddr(tlb_lo[0]) > >> PAGE_SHIFT) < 0) > return -1; > > if (kvm_mips_map_page(kvm, mips3_tlbpfn_to_paddr(tlb_lo[1]) > >> PAGE_SHIFT) < 0) > return -1; > > pfn0 = kvm->arch.guest_pmap[mips3_tlbpfn_to_paddr(tlb_lo[0]) > >> PAGE_SHIFT]; > pfn1 = kvm->arch.guest_pmap[mips3_tlbpfn_to_paddr(tlb_lo[1]) > >> PAGE_SHIFT]; > > if (hpa0) > *hpa0 = pfn0 << PAGE_SHIFT; > > error: patch failed: arch/mips/kvm/tlb.c:374 > Applying patch arch/mips/kvm/tlb.c with 2 rejects... > Rejected hunk #1. > Rejected hunk #2. This works for me (on 558ba5fd7d8d Linux 4.1.30) as long as 1/4 is applied first. Are you applying them in the right order? Cheers James
Attachment:
signature.asc
Description: Digital signature