Hi Paolo, Radim, The following changes since commit 0b4c208d443ba2af82b4c70f99ca8df31e9a0020: Revert "KVM: nested VMX: disable perf cpuid reporting" (2017-01-20 22:18:55 +0100) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/kvm-mips.git tags/kvm_mips_4.11_1 for you to fetch changes up to 12ed1faece3f141c2604b5b3a8377ba71d23ec9d: KVM: MIPS: Allow multiple VCPUs to be created (2017-02-03 15:21:34 +0000) It is already included in linux-next (though I did tweak one of the commit messages just now to remove a patch changelog I had accidentally left in, with no changes to the code). It includes a merge of my mips branch in the same repo, which is based on v4.10-rc2 and contains the general MIPS changes in the GVA/GPA page tables series, for Ralf to also merge if he likes. Cheers James ---------------------------------------------------------------- KVM: MIPS: GVA/GPA page tables, dirty logging, SYNC_MMU etc Numerous MIPS KVM fixes, improvements, and features for 4.11, many of which continue to pave the way for VZ support, the most interesting of which are: - Add GVA->HPA page tables for T&E, to cache GVA mappings. - Generate fast-path TLB refill exception handler which loads host TLB entries from GVA page table, avoiding repeated guest memory translation and guest TLB lookups. - Use uaccess macros when T&E needs to access guest memory, which with GVA page tables and the Linux TLB refill handler improves robustness against TLB faults and fixes EVA hosts. - Use BadInstr/BadInstrP registers when available to obtain instruction encodings after a synchronous trap. - Add GPA->HPA page tables to replace the inflexible linear array, allowing for multiple sparsely arranged memory regions. - Properly implement dirty page logging. - Add KVM_CAP_SYNC_MMU support so that changes in GPA mappings become effective in guests even if they are already running, allowing for copy-on-write, KSM, idle page tracking, swapping, and guest memory ballooning. - Add KVM_CAP_READONLY_MEM support, so writes to specified memory regions are treated as MMIO. - Implement proper CP0_EBase support in T&E. - Expose a few more missing CP0 registers to userland. - Add KVM_CAP_NR_VCPUS and KVM_CAP_MAX_VCPUS support, and allow up to 8 VCPUs to be created in a VM. - Various cleanups and dropping of dead and duplicated code. ---------------------------------------------------------------- James Hogan (63): MIPS: Move pgd_alloc() out of header MIPS: Export pgd/pmd symbols for KVM MIPS: uasm: Add include guards in asm/uasm.h MIPS: Export some tlbex internals for KVM to use MIPS: Add return errors to protected cache ops Merge MIPS prerequisites KVM: MIPS: Drop partial KVM_NMI implementation KVM: MIPS/MMU: Simplify ASID restoration KVM: MIPS: Convert get/set_regs -> vcpu_load/put KVM: MIPS/MMU: Move preempt/ASID handling to implementation KVM: MIPS: Remove duplicated ASIDs from vcpu KVM: MIPS: Add vcpu_run() & vcpu_reenter() callbacks KVM: MIPS/T&E: Restore host asid on return to host KVM: MIPS/T&E: active_mm = init_mm in guest context KVM: MIPS: Wire up vcpu uninit KVM: MIPS/T&E: Allocate GVA -> HPA page tables KVM: MIPS/T&E: Activate GVA page tables in guest context KVM: MIPS: Support NetLogic KScratch registers KVM: MIPS: Add fast path TLB refill handler KVM: MIPS/TLB: Fix off-by-one in TLB invalidate KVM: MIPS/TLB: Generalise host TLB invalidate to kernel ASID KVM: MIPS/MMU: Invalidate GVA PTs on ASID changes KVM: MIPS/MMU: Invalidate stale GVA PTEs on TLBW KVM: MIPS/MMU: Convert KSeg0 faults to page tables KVM: MIPS/MMU: Convert TLB mapped faults to page tables KVM: MIPS/MMU: Convert commpage fault handling to page tables KVM: MIPS: Drop vm_init() callback KVM: MIPS: Use uaccess to read/modify guest instructions KVM: MIPS/Emulate: Fix CACHE emulation for EVA hosts KVM: MIPS/TLB: Drop kvm_local_flush_tlb_all() KVM: MIPS/Emulate: Drop redundant TLB flushes on exceptions KVM: MIPS/MMU: Drop kvm_get_new_mmu_context() KVM: MIPS/T&E: Don't treat code fetch faults as MMIO KVM: MIPS: Improve kvm_get_inst() error return KVM: MIPS: Use CP0_BadInstr[P] for emulation KVM: MIPS/MMU: Convert guest physical map to page table KVM: MIPS: Update vcpu->mode and vcpu->cpu KVM: MIPS/T&E: Handle TLB invalidation requests KVM: MIPS/T&E: Reduce stale ASID checks KVM: MIPS/T&E: Add lockless GVA access helpers KVM: MIPS/T&E: Use lockless GVA helpers for dyntrans KVM: MIPS/MMU: Use lockless GVA helpers for get_inst() KVM: MIPS/Emulate: Use lockless GVA helpers for cache emulation KVM: MIPS: Implement kvm_arch_flush_shadow_all/memslot KVM: MIPS/T&E: Ignore user writes to CP0_Config7 KVM: MIPS: Pass type of fault down to kvm_mips_map_page() KVM: MIPS/T&E: Abstract bad access handling KVM: MIPS/T&E: Treat unhandled guest KSeg0 as MMIO KVM: MIPS/T&E: Handle read only GPA in TLB mod KVM: MIPS/MMU: Add GPA PT mkclean helper KVM: MIPS/MMU: Use generic dirty log & protect helper KVM: MIPS: Clean & flush on dirty page logging enable KVM: MIPS/MMU: Handle dirty logging on GPA faults KVM: MIPS/MMU: Pass GPA PTE bits to KSeg0 GVA PTEs KVM: MIPS/MMU: Pass GPA PTE bits to mapped GVA PTEs KVM: MIPS/MMU: Implement KVM_CAP_SYNC_MMU KVM: MIPS: Claim KVM_CAP_READONLY_MEM support KVM: MIPS/T&E: Move CP0 register access into T&E KVM: MIPS/T&E: Implement CP0_EBase register KVM: MIPS/T&E: Default to reset vector KVM: MIPS/T&E: Expose CP0_EntryLo0/1 registers KVM: MIPS/T&E: Expose read-only CP0_IntCtl register KVM: MIPS: Allow multiple VCPUs to be created Markus Elfring (1): MIPS: KVM: Return directly after a failed copy_from_user() in kvm_arch_vcpu_ioctl() Documentation/virtual/kvm/api.txt | 10 + arch/mips/include/asm/kvm_host.h | 183 +++-- arch/mips/include/asm/mmu_context.h | 9 +- arch/mips/include/asm/pgalloc.h | 16 +- arch/mips/include/asm/r4kcache.h | 55 +- arch/mips/include/asm/tlbex.h | 26 + arch/mips/include/asm/uasm.h | 5 + arch/mips/include/uapi/asm/kvm.h | 2 + arch/mips/kvm/Kconfig | 2 + arch/mips/kvm/dyntrans.c | 50 +- arch/mips/kvm/emulate.c | 432 ++++++------ arch/mips/kvm/entry.c | 155 +++- arch/mips/kvm/interrupt.c | 5 +- arch/mips/kvm/mips.c | 496 ++++--------- arch/mips/kvm/mmu.c | 1335 ++++++++++++++++++++++++++++------- arch/mips/kvm/tlb.c | 299 ++------ arch/mips/kvm/trap_emul.c | 740 ++++++++++++++++--- arch/mips/mm/Makefile | 2 +- arch/mips/mm/init.c | 1 + arch/mips/mm/pgtable-64.c | 2 + arch/mips/mm/pgtable.c | 25 + arch/mips/mm/tlbex.c | 38 +- 22 files changed, 2611 insertions(+), 1277 deletions(-) create mode 100644 arch/mips/include/asm/tlbex.h create mode 100644 arch/mips/mm/pgtable.c
Attachment:
signature.asc
Description: Digital signature