Hi Paolo, Radim, Here are the main KVM MIPS changes for 4.12, mainly to add VZ support. Please consider pulling. Thanks James The following changes since commit 97da3854c526d3a6ee05c849c96e48d21527606c: Linux 4.11-rc3 (2017-03-19 19:09:39 -0700) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/kvm-mips.git tags/kvm_mips_4.12_1 for you to fetch changes up to dc44abd6aad22411f7f9890e39fd4753dabf0d03: KVM: MIPS/Emulate: Properly implement TLBR for T&E (2017-03-28 16:31:37 +0100) ---------------------------------------------------------------- KVM: MIPS: VZ support, Octeon III, and TLBR Add basic support for the MIPS Virtualization Module (generally known as MIPS VZ) in KVM. We primarily support the ImgTec P5600, P6600, I6400, and Cavium Octeon III cores so far. Support is included for the following VZ / guest hardware features: - MIPS32 and MIPS64, r5 (VZ requires r5 or later) and r6 - TLBs with GuestID (IMG cores) or Root ASID Dealias (Octeon III) - Shared physical root/guest TLB (IMG cores) - FPU / MSA - Cop0 timer (up to 1GHz for now due to soft timer limit) - Segmentation control (EVA) - Hardware page table walker (HTW) both for root and guest TLB Also included is a proper implementation of the TLBR instruction for the trap & emulate MIPS KVM implementation. Preliminary MIPS architecture changes are applied directly with Ralf's ack. ---------------------------------------------------------------- James Hogan (42): MIPS: Add defs & probing of UFR MIPS: Separate MAAR V bit into VL and VH for XPA MIPS: Probe guest CP0_UserLocal MIPS: Probe guest MVH MIPS: Add some missing guest CP0 accessors & defs MIPS: asm/tlb.h: Add UNIQUE_GUEST_ENTRYHI() macro KVM: MIPS: Implement HYPCALL emulation KVM: MIPS/Emulate: De-duplicate MMIO emulation KVM: MIPS/Emulate: Implement 64-bit MMIO emulation KVM: MIPS: Update kvm_lose_fpu() for VZ KVM: MIPS: Extend counters & events for VZ GExcCodes KVM: MIPS: Add VZ & TE capabilities KVM: MIPS: Add 64BIT capability KVM: MIPS: Init timer frequency from callback KVM: MIPS: Add callback to check extension KVM: MIPS: Add hardware_{enable,disable} callback KVM: MIPS: Add guest exit exception callback KVM: MIPS: Abstract guest CP0 register access for VZ KVM: MIPS/Entry: Update entry code to support VZ KVM: MIPS/TLB: Add VZ TLB management KVM: MIPS/Emulate: Update CP0_Compare emulation for VZ KVM: MIPS/Emulate: Drop CACHE emulation for VZ KVM: MIPS: Update exit handler for VZ KVM: MIPS: Implement VZ support KVM: MIPS: Add VZ support to build system KVM: MIPS/VZ: Support guest CP0_BadInstr[P] KVM: MIPS/VZ: Support guest CP0_[X]ContextConfig KVM: MIPS/VZ: Support guest segmentation control KVM: MIPS/VZ: Support guest hardware page table walker KVM: MIPS/VZ: Support guest load-linked bit KVM: MIPS/VZ: Emulate MAARs when necessary KVM: MIPS/VZ: Support hardware guest timer KVM: MIPS/VZ: Trace guest mode changes MIPS: Add Octeon III register accessors & definitions KVM: MIPS/Emulate: Adapt T&E CACHE emulation for Octeon KVM: MIPS/TLB: Handle virtually tagged icaches KVM: MIPS/T&E: Report correct dcache line size KVM: MIPS/VZ: VZ hardware setup for Octeon III KVM: MIPS/VZ: Emulate hit CACHE ops for Octeon III KVM: MIPS/VZ: Handle Octeon III guest.PRid register MIPS: Allow KVM to be enabled on Octeon CPUs KVM: MIPS/Emulate: Properly implement TLBR for T&E Documentation/virtual/kvm/api.txt | 90 +- Documentation/virtual/kvm/hypercalls.txt | 5 + arch/mips/Kconfig | 1 + arch/mips/include/asm/cpu-features.h | 10 + arch/mips/include/asm/cpu-info.h | 2 + arch/mips/include/asm/cpu.h | 1 + arch/mips/include/asm/kvm_host.h | 467 ++++- arch/mips/include/asm/maar.h | 10 +- arch/mips/include/asm/mipsregs.h | 62 +- arch/mips/include/asm/tlb.h | 6 +- arch/mips/include/uapi/asm/inst.h | 2 +- arch/mips/include/uapi/asm/kvm.h | 20 +- arch/mips/kernel/cpu-probe.c | 13 +- arch/mips/kernel/time.c | 1 + arch/mips/kvm/Kconfig | 27 +- arch/mips/kvm/Makefile | 9 +- arch/mips/kvm/emulate.c | 500 +++-- arch/mips/kvm/entry.c | 132 +- arch/mips/kvm/hypcall.c | 53 + arch/mips/kvm/interrupt.h | 5 + arch/mips/kvm/mips.c | 120 +- arch/mips/kvm/mmu.c | 20 + arch/mips/kvm/tlb.c | 441 ++++ arch/mips/kvm/trace.h | 74 +- arch/mips/kvm/trap_emul.c | 73 +- arch/mips/kvm/vz.c | 3223 ++++++++++++++++++++++++++++++ arch/mips/mm/cache.c | 1 + arch/mips/mm/init.c | 2 +- include/uapi/linux/kvm.h | 7 + 29 files changed, 5010 insertions(+), 367 deletions(-) create mode 100644 arch/mips/kvm/hypcall.c create mode 100644 arch/mips/kvm/vz.c
Attachment:
signature.asc
Description: Digital signature