This patchset gathers together some miscellaneous MIPS KVM (trap & emulate) improvements. Patches 8 and 15 in particular change non-KVM MIPS code, so Acks appreciated. They are used by other patches in the series, so it makes sense I think to keep them together. The patchset is based on my recent MIPS KVM patchsets: [PATCH 0/4] MIPS: KVM: Module + non dynamic translating fixes [PATCH 00/18] MIPS: KVM: Miscellaneous clean-ups [PATCH 0/8] MIPS: KVM: Debug & trace event improvements Changes include: - Patches 1-3: Dynamic translation & emulation fix/cleanups. - Patches 4-7: Dynamic KVM_GET_REG_LIST so it can actually properly list all available registers, which allows for improved robustness of userland, especially for VZ support where the core may implement optional registers that KVM can't opt out of exposing. - Patches 8-11: HWREna / RDHWR handling improvements. - Patch 12: Add guest KScratch registers. - Patches 13-17: Other miscellaneous improvements. James Hogan (17): MIPS: KVM: Fix translation of MFC0 ErrCtl MIPS: KVM: Factor writing of translated guest instructions MIPS: KVM: Convert emulation to use asm/inst.h MIPS: KVM: Pass all unknown registers to callbacks MIPS: KVM: Make KVM_GET_REG_LIST dynamic MIPS: KVM: Use raw_cpu_has_fpu in kvm_mips_guest_can_have_fpu() MIPS: KVM: List FPU/MSA registers MIPS: Clean up RDHWR handling MIPS: KVM: Don't hardcode restored HWREna MIPS: KVM: Allow ULRI to restrict UserLocal register MIPS: KVM: Emulate RDHWR CPUNum register MIPS: KVM: Add KScratch registers MIPS: KVM: Move commpage so 0x0 is unmapped MIPS: KVM: Use host CCA for TLB mappings MIPS: Add define for Config.VI (virtual icache) bit MIPS: KVM: Report more accurate CP0_Config fields to guest MIPS: KVM: Use mipsregs.h defs for config registers Documentation/virtual/kvm/api.txt | 6 + arch/mips/include/asm/kvm_host.h | 122 +++++--------- .../asm/mach-cavium-octeon/cpu-feature-overrides.h | 2 +- arch/mips/include/asm/mipsregs.h | 21 ++- arch/mips/include/asm/setup.h | 1 + arch/mips/include/uapi/asm/inst.h | 35 +++- arch/mips/kernel/traps.c | 22 ++- arch/mips/kvm/commpage.c | 2 +- arch/mips/kvm/dyntrans.c | 156 ++++++++---------- arch/mips/kvm/emulate.c | 142 ++++++++-------- arch/mips/kvm/locore.S | 4 +- arch/mips/kvm/mips.c | 180 +++++++++++++++++---- arch/mips/kvm/mmu.c | 18 ++- arch/mips/kvm/tlb.c | 19 +-- arch/mips/kvm/trace.h | 6 + arch/mips/kvm/trap_emul.c | 39 ++++- arch/mips/mm/c-r4k.c | 2 +- 17 files changed, 465 insertions(+), 312 deletions(-) Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> Cc: Radim Krčmář <rkrcmar@xxxxxxxxxx> Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Cc: David Daney <david.daney@xxxxxxxxxx> Cc: linux-mips@xxxxxxxxxxxxxx Cc: kvm@xxxxxxxxxxxxxxx -- 2.4.10