KVM: MIPS/MMU: Pass GPA PTE bits to KSeg0 GVA PTEs
authorJames Hogan <james.hogan@imgtec.com>
Tue, 6 Dec 2016 14:59:28 +0000 (14:59 +0000)
committerJames Hogan <james.hogan@imgtec.com>
Fri, 3 Feb 2017 15:21:26 +0000 (15:21 +0000)
commitb584f460e6d6f1bf968acfcd23aceb663ba996fa
treea7f25a4eb5abe195965b6a438c99df43ab44e0ac
parentb5f1dd1ba4042bda191cd2e72726c920e6c2867f
KVM: MIPS/MMU: Pass GPA PTE bits to KSeg0 GVA PTEs

Propagate the GPA PTE protection bits on to the GVA PTEs on a KSeg0
fault (except _PAGE_WRITE), rather than always overriding the
protection. This allows dirty page tracking to work in KSeg0 as a clear
dirty bit in the GPA PTE will propagate to the GVA PTEs.

This makes it simpler to use a single kvm_mips_map_page() to obtain both
the main GPA PTE and its buddy (which may be invalid), which also allows
memory regions to be fully accessible when they don't start and end on a
2*PAGE_SIZE boundary.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: kvm@vger.kernel.org
arch/mips/kvm/mmu.c