[GIT PULL] KVM changes for 4.8 merge window

From: Paolo Bonzini
Date: Tue Aug 02 2016 - 10:55:36 EST


The following changes since commit 6df82a7b88dc9b0b519765562b005ef9196d812a:

MIPS: KVM: Fix CACHE triggered exception emulation (2016-06-14 10:59:45 +0200)

are available in the git repository at:

git://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus

for you to fetch changes up to 23528bb21ee2c9b27f3feddd77a2a3351a8df148:

KVM: PPC: Introduce KVM_CAP_PPC_HTM (2016-08-01 19:42:06 +0200)

- ARM: GICv3 ITS emulation and various fixes. Removal of the old
VGIC implementation.

- s390: support for trapping software breakpoints, nested virtualization
(vSIE), the STHYI opcode, initial extensions for CPU model support.

- MIPS: support for MIPS64 hosts (32-bit guests only) and lots of cleanups,
preliminary to this and the upcoming support for hardware virtualization

- x86: support for execute-only mappings in nested EPT; reduced vmexit
latency for TSC deadline timer (by about 30%) on Intel hosts; support for
more than 255 vCPUs.

- PPC: bugfixes.

The ugly bit is the conflicts. A couple of them are simple conflicts due
to 4.7 fixes, but most of them are with other trees. There was definitely
too much reliance on Acked-by here. Some conflicts are for KVM patches
where _I_ gave my Acked-by, but the worst are for this pull request's
patches that touch files outside arch/*/kvm. KVM submaintainers should
probably learn to synchronize better with arch maintainers, with the
latter providing topic branches whenever possible instead of Acked-by.
This is what we do with arch/x86. And I should learn to refuse pull
requests when linux-next sends scary signals, even if that means that
submaintainers have to rebase their branches.

Anyhow, here's the list:

- arch/x86/kvm/vmx.c: handle_pcommit and EXIT_REASON_PCOMMIT was removed
by the nvdimm tree. This tree adds handle_preemption_timer and
EXIT_REASON_PREEMPTION_TIMER at the same place. In general all mentions
of pcommit have to go.

There is also a conflict between a stable fix and this patch, where the
stable fix removed the vmx_create_pml_buffer function and its call.

- virt/kvm/kvm_main.c: kvm_cpu_notifier was removed by the hotplug tree.
This tree adds kvm_io_bus_get_dev at the same place.

- virt/kvm/arm/vgic.c: a few final bugfixes went into 4.7 before the
file was completely removed for 4.8.

- include/linux/irqchip/arm-gic-v3.h: this one is entirely our fault;
this is a change that should have gone in through the irqchip tree and
pulled by kvm-arm. I think I would have rejected this kvm-arm pull
request. The KVM version is the right one, except that it lacks

- arch/powerpc: what a mess. For the idle_book3s.S conflict, the KVM
tree is the right one; everything else is trivial. In this case I am
not quite sure what went wrong. The commit that is causing the mess
(fd7bacbca47a, "KVM: PPC: Book3S HV: Fix TB corruption in guest exit
path on HMI interrupt", 2016-05-15) touches both arch/powerpc/kernel/
and arch/powerpc/kvm/. It's large, but at 396 insertions/5 deletions
I guessed that it wasn't really possible to split it and that the 5
deletions wouldn't conflict. That wasn't the case.

- arch/s390: also messy. First is hypfs_diag.c where the KVM tree
moved some code and the s390 tree patched it. You have to reapply the
relevant part of commits 6c22c9863760, plus all of e030c1125eab, to
arch/s390/kernel/diag.c. Or pick the linux-next conflict
resolution from http://marc.info/?l=kvm&m=146717549531603&w=2.
Second, there is a conflict in gmap.c between a stable fix and 4.8.
The KVM version here is the correct one.

I have pushed my resolution at refs/heads/merge-20160802 (commit
3d1f53419842) at git://git.kernel.org/pub/scm/virt/kvm/kvm.git.

Alexander Yarygin (1):
KVM: s390: Add mnemonic print to kvm_s390_intercept_prog

Andre Przywara (17):
KVM: arm/arm64: vgic: Move redistributor kvm_io_devices
KVM: arm/arm64: vgic: Check return value for kvm_register_vgic_device
KVM: Extend struct kvm_msi to hold a 32-bit device ID
KVM: arm/arm64: Extend arch CAP checks to allow per-VM capabilities
KVM: kvm_io_bus: Add kvm_io_bus_get_dev() call
KVM: arm/arm64: vgic: Add refcounting for IRQs
irqchip/gic-v3: Refactor and add GICv3 definitions
KVM: arm64: vgic: Handle ITS related GICv3 redistributor registers
KVM: arm64: vgic-its: Introduce ITS emulation file with MMIO framework
KVM: arm64: vgic-its: Introduce new KVM ITS device
KVM: arm64: vgic-its: Implement basic ITS register handlers
KVM: arm64: vgic-its: Connect LPIs to the VGIC emulation
KVM: arm64: vgic-its: Read initial LPI pending table
KVM: arm64: vgic-its: Allow updates of LPI configuration table
KVM: arm64: vgic-its: Implement ITS command queue command handlers
KVM: arm64: vgic-its: Implement MSI injection in ITS emulation
KVM: arm64: vgic-its: Enable ITS emulation as a virtual MSI controller

Andrea Gelmini (4):
KVM: ARM: Fix typos
KVM: ARM64: Fix typos
KVM: S390: Fix typo
KVM: x86: Fix typos

Arnd Bergmann (1):
kvm: x86: use getboottime64

Ashok Raj (1):
KVM: VMX: enable guest access to LMCE related MSRs

Bandan Das (5):
kvm: mmu: extend the is_present check to 32 bits
kvm: mmu: remove is_present_gpte()
kvm: mmu: don't set the present bit unconditionally
kvm: mmu: track read permission explicitly for shadow EPT page tables
kvm: vmx: advertise support for ept execute only

Borislav Petkov (1):
x86/kvm/svm: Simplify cpu_has_svm()

Christian Borntraeger (2):
KVM: s390: provide logging for diagnose 0x500
KVM: s390: fixup I/O interrupt traces

Dan Carpenter (1):
arm64: KVM: Clean up a condition

David Hildenbrand (89):
KVM: s390: interface to query and configure cpu features
KVM: s390: forward ESOP if available
KVM: s390: gaccess: store guest address on ALC prot exceptions
KVM: s390: gaccess: function for preparing translation exceptions
KVM: s390: gaccess: convert kvm_s390_check_low_addr_prot_real()
KVM: s390: gaccess: convert guest_translate_address()
KVM: s390: gaccess: convert guest_page_range()
KVM: s390: gaccess: convert get_vcpu_asce()
s390/crypto: allow to query all known cpacf functions
KVM: s390: interface to query and configure cpu subfunctions
s390/sclp: detect 64-bit-SCAO facility
KVM: s390: handle missing 64-bit-SCAO facility
s390/sclp: detect guest-PER enhancement
KVM: s390: guestdbg: signal missing hardware support
s390/sclp: detect cmma
KVM: s390: enable CMMA if the interpration is available
KVM: s390: provide CMMA attributes only if available
s390/sclp: detect guest-storage-limit-suppression
KVM: s390: handle missing guest-storage-limit-suppression
s390/sclp: detect intervention bypass facility
KVM: s390: enable ib only if available
s390/sclp: detect conditional-external-interception facility
KVM: s390: enable cei only if available
s390/sclp: detect PFMF interpretation facility
KVM: s390: enable PFMFI only if available
s390/sclp: detect interlock-and-broadcast-suppression facility
KVM: s390: enable ibs only if available
KVM: s390: enable host-protection-interruption only with ESOP
KVM: s390: turn on tx even without ctx
s390/mm: don't drop errors in get_guest_storage_key
s390/mm: simplify get_guest_storage_key
s390/mm: return key via pointer in get_guest_storage_key
KVM: s390: storage keys fit into a char
KVM: s390: pfmf: fix end address calculation
KVM: s390: pfmf: MR and MC are ignored without CSSKE
KVM: s390: pfmf: take care of amode when setting reg2
KVM: s390: pfmf: support conditional-sske facility
KVM: s390: pfmf: handle address overflows
s390/sclp: detect storage-key facility
KVM: s390: trace and count all skey intercepts
KVM: s390: handle missing storage-key facility
s390/mm: flush tlb of shadows in all situations
s390/mm: shadow pages with real guest requested protection
s390/mm: avoid races on region/segment/page table shadowing
s390/mm: fix races on gmap_shadow creation
s390/mm: take the mmap_sem in kvm_s390_shadow_fault()
s390/mm: protection exceptions are corrrectly shadowed
s390/mm: take ipte_lock during shadow faults
s390/mm: push ste protection down to shadow pte
s390/mm: prepare for EDAT1/EDAT2 support in gmap shadow
s390/mm: support EDAT1 for gmap shadows
s390/mm: support EDAT2 for gmap shadows
s390/mm: push rte protection down to shadow pte
s390/mm: support real-space for gmap shadows
s390/mm: limit number of real-space gmap shadows
s390/mm: remember the int code for the last gmap fault
s390/mm: allow to check if a gmap shadow is valid
s390/mm: don't fault everything in read-write in gmap_pte_op_fixup()
KVM: s390: fast path for shadow gmaps in gmap notifier
KVM: s390: backup the currently enabled gmap when scheduled out
s390: introduce page_to_virt() and pfn_to_virt()
mm/page_ref: introduce page_ref_inc_return
KVM: s390: vsie: initial support for nested virtualization
KVM: s390: vsie: optimize gmap prefix mapping
KVM: s390: vsie: support setting the ibc
KVM: s390: vsie: support edat1 / edat2
KVM: s390: vsie: support host-protection-interruption
KVM: s390: vsie: support STFLE interpretation
KVM: s390: vsie: support aes dea wrapping keys
KVM: s390: vsie: support transactional execution
KVM: s390: vsie: support vectory facility (SIMD)
KVM: s390: vsie: support run-time-instrumentation
KVM: s390: vsie: support 64-bit-SCAO
KVM: s390: vsie: support shared IPTE-interlock facility
KVM: s390: vsie: support guest-PER-enhancement
KVM: s390: vsie: support guest-storage-limit-suppression
KVM: s390: vsie: support intervention-bypass
KVM: s390: vsie: support conditional-external-interception
KVM: s390: vsie: support IBS interpretation
KVM: s390: vsie: try to refault after a reported fault to g2
KVM: s390: vsie: speed up VCPU irq delivery when handling vsie
KVM: s390: don't use CPUSTAT_WAIT to detect if a VCPU is idle
KVM: s390: vsie: speed up VCPU external calls
KVM: s390: vsie: correctly set and handle guest TOD
KVM: s390: vsie: add indication for future features
KVM: s390: vsie: add module parameter "nested"
KVM: s390: inject PER i-fetch events on applicable icpts
KVM: s390: allow user space to handle instr 0x0000
KVM: s390: let ptff intercepts result in cc=3

David Matlack (1):
kvm: x86: nVMX: maintain internal copy of current VMCS

Eric Auger (1):

Haozhong Zhang (2):
KVM: VMX: move msr_ia32_feature_control to vcpu_vmx
KVM: VMX: validate individual bits of guest MSR_IA32_FEATURE_CONTROL

James Hogan (77):
MIPS: KVM: Drop unused guest_inst from kvm_vcpu_arch
MIPS: KVM: Drop unused host_cp0_entryhi
MIPS: KVM: Drop unused kvm_mips_sync_icache()
MIPS: KVM: Convert headers to kernel sized types
MIPS: KVM: Convert code to kernel sized types
MIPS: KVM: Make various Cause variables 32-bit
MIPS: KVM: Move non-TLB handling code out of tlb.c
MIPS: KVM: Don't indirect KVM functions
MIPS: KVM: Simplify even/odd TLB handling
MIPS: KVM: Drop unused hpa0/hpa1 args from function
MIPS: KVM: Restore host EBase from ebase variable
MIPS: KVM: Clean up TLB management hazards
MIPS: KVM: Use dump_tlb_all() for kvm_mips_dump_host_tlbs()
MIPS: KVM: Arrayify struct kvm_mips_tlb::tlb_lo*
MIPS: KVM: Simplify TLB_* macros
MIPS: KVM: Use MIPS_ENTRYLO_* defs from mipsregs.h
MIPS: KVM: Combine handle_tlb_ld/st_miss
MIPS: KVM: Use va in kvm_get_inst()
MIPS: KVM: Generalise fpu_inuse for other state
MIPS: KVM: Add kvm_aux trace event
MIPS: KVM: Clean up kvm_exit trace event
MIPS: KVM: Add kvm_asid_change trace event
MIPS: KVM: Add guest mode switch trace events
MIPS: KVM: Trace guest register access emulation
MIPS: KVM: Dump guest tlbs if kvm_get_inst() fails
MIPS: KVM: Print unknown load/store encodings
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: 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
MIPS: KVM: Combine entry trace events into class
MIPS: uasm: Add CFC1/CTC1 instructions
MIPS: uasm: Add CFCMSA/CTCMSA instructions
MIPS: uasm: Add DI instruction
MIPS: uasm: Add MTHI/MTLO instructions
MIPS: uasm: Add r6 MUL encoding
MIPS; KVM: Convert exception entry to uasm
MIPS: KVM: Add dumping of generated entry code
MIPS: KVM: Drop now unused asm offsets
MIPS: KVM: Omit FPU handling entry code if possible
MIPS: KVM: Check MSA presence at uasm time
MIPS: KVM: Drop redundant restore of DDATA_LO
MIPS: KVM: Dynamically choose scratch registers
MIPS: KVM: Relative branch to common exit handler
MIPS: KVM: Save k0 straight into VCPU structure
MIPS: KVM: Fix fpu.S misassembly with r6
MIPS: KVM: Fix pre-r6 ll/sc instructions on r6
MIPS: KVM: Don't save/restore lo/hi for r6
MIPS: KVM: Support r6 compact branch emulation
MIPS: KVM: Recognise r6 CACHE encoding
MIPS: KVM: Decode RDHWR more strictly
MIPS: KVM: Emulate generic QEMU machine on r6 T&E
MIPS: Fix definition of KSEGX() for 64-bit
MIPS: KVM: Use virt_to_phys() to get commpage PFN
MIPS: KVM: Use kmap instead of CKSEG0ADDR()
MIPS: KVM: Make entry code MIPS64 friendly
MIPS: KVM: Set CP0_Status.KX on MIPS64
MIPS: KVM: Use 64-bit CP0_EBase when appropriate
MIPS: KVM: Fail if ebase doesn't fit in CP0_EBase
MIPS: KVM: Fix 64-bit big endian dynamic translation
MIPS: KVM: Sign extend MFC0/RDHWR results
MIPS: KVM: Fix ptr->int cast via KVM_GUEST_KSEGX()
MIPS: KVM: Reset CP0_PageMask during host TLB flush
MIPS: Select HAVE_KVM for MIPS64_R{2,6}

Janosch Frank (7):
s390: hypfs: Move diag implementation and data definitions
s390: Make cpc_name accessible
s390: Make diag224 public
KVM: s390: Add operation exception interception handler
KVM: s390: Extend diag 204 fields
KVM: s390: Add sthyi emulation
KVM: s390: Limit sthyi execution

Jim Mattson (1):
KVM: VMX: Add VMCS to CPU's loaded VMCSs before VMPTRLD

Kai Huang (1):
kvm/x86: remove unnecessary header file inclusion

Mahesh Salgaonkar (2):
powerpc/powernv: Remove the usage of PACAR1 from opal wrappers
KVM: PPC: Book3S HV: Fix TB corruption in guest exit path on HMI interrupt

Marc Zyngier (36):
arm/arm64: KVM: Add a protection parameter to create_hyp_mappings
arm64: Add PTE_HYP_XN page table flag
arm/arm64: KVM: Enforce HYP read-only mapping of the kernel's rodata section
arm/arm64: KVM: Map the HYP text as read-only
arm/arm64: KVM: Make default HYP mappings non-excutable
KVM: arm/arm64: The GIC is dead, long live the GIC
arm64: KVM: Merged page tables documentation
arm64: KVM: Always reference __hyp_panic_string via its kernel VA
arm/arm64: KVM: Remove hyp_kern_va helper
arm64: Add ARM64_HYP_OFFSET_LOW capability
arm64: KVM: Define HYP offset masks
arm64: KVM: Refactor kern_hyp_va to deal with multiple offsets
arm/arm64: KVM: Export __hyp_text_start/end symbols
arm64: KVM: Runtime detection of lower HYP offset
arm/arm64: KVM: Always have merged page tables
arm64: KVM: Simplify HYP init/teardown
arm/arm64: KVM: Drop boot_pgd
arm/arm64: KVM: Kill free_boot_hyp_pgd
arm: KVM: Simplify HYP init
arm: KVM: Allow hyp teardown
arm/arm64: KVM: Prune unused #defines
arm/arm64: KVM: Check that IDMAP doesn't intersect with VA range
arm/arm64: Get rid of KERN_TO_HYP
irqchip/gicv3-its: Restore all cacheability attributes
KVM: arm64: vgic-its: Generalize use of vgic_get_irq_kref
KVM: arm64: vgic-its: Fix handling of indirect tables
KVM: arm64: vgic-its: Fix vgic_its_check_device_id BE handling
KVM: arm64: vgic-its: Fix misleading nr_entries in vgic_its_check_device_id
KVM: arm64: vgic-its: Validate the device table L1 entry
KVM: arm64: vgic-its: Fix L2 entry validation for indirect tables
KVM: arm64: vgic-its: Add collection allocator/destructor
KVM: arm64: vgic-its: Add pointer to corresponding kvm_device
KVM: arm64: vgic-its: Turn device_id validation into generic ID validation
KVM: arm64: vgic-its: Make vgic_its_cmd_handle_mapi similar to other handlers
KVM: arm64: vgic-its: Simplify MAPI error handling

Martin Schwidefsky (7):
s390/mm: set and get guest storage key mmap locking
s390/kvm: page table invalidation notifier
s390/mm: use RCU for gmap notifier list and the per-mm gmap list
s390/mm: extended gmap pte notifier
s390/mm: add reference counter to gmap structure
s390/mm: add shadow gmap support
s390/mm: add kvm shadow fault function

Paolo Bonzini (21):
KVM: x86: avoid simultaneous queueing of both IRQ and SMI
KVM: x86: rename process_smi to enter_smm, process_smi_request to process_smi
KVM: x86: protect KVM_CREATE_PIT/KVM_CREATE_PIT2 with kvm->lock
Merge branch 'kvm-mips-fixes' into HEAD
Merge tag 'kvm-s390-next-4.8-1' of git://git.kernel.org/.../kvms390/linux into HEAD
KVM: introduce kvm->created_vcpus
KVM: remove kvm_vcpu_compatible
KVM: s390: use kvm->created_vcpus
Merge tag 'kvm-s390-next-4.8-2' of git://git.kernel.org/.../kvms390/linux into HEAD
context_tracking: move rcu_virt_note_context_switch out of kvm_host.h
KVM: remove kvm_guest_enter/exit wrappers
KVM: x86: always use "acknowledge interrupt on exit"
KVM: x86: use guest_exit_irqoff
KVM: vmx: fix underflow in TSC deadline calculation
KVM: MMU: prepare to support mapping of VM_IO and VM_PFNMAP frames
KVM: MMU: try to fix up page faults before giving up
Merge tag 'kvm-s390-next-4.8-3' of git://git.kernel.org/.../kvms390/linux into HEAD
KVM: VMX: reflect broken preemption timer in vmcs_config
KVM: nVMX: keep preemption timer enabled during L2 execution
KVM: VMX: introduce vm_{entry,exit}_control_reset_shadow
Merge branch 'kvm-ppc-next' of git://git.kernel.org/.../paulus/powerpc into HEAD

Paul Burton (2):
MIPS: inst.h: Rename b{eq,ne}zcji[al]c_op to pop{6,7}6_op
MIPS: inst.h: Rename cbcond{0,1}_op to pop{1,3}0_op

Paul Mackerras (2):
KVM: PPC: Book3S HV: Pull out TM state save/restore into separate procedures
KVM: PPC: Book3S HV: Save/restore TM state in H_CEDE

Radim KrÄmÃÅ (17):
KVM: x86: bump KVM_SOFT_MAX_VCPUS to 240
KVM: x86: add kvm_apic_map_get_dest_lapic
KVM: x86: use physical LAPIC array for logical x2APIC
KVM: x86: dynamic kvm_apic_map
KVM: x86: use generic function for MSI parsing
KVM: x86: use hardware-compatible format for APIC ID register
KVM: x86: reset APIC ID when enabling LAPIC
KVM: VMX: optimize APIC ID read with APICv
KVM: x86: reset lapic base in kvm_lapic_reset
KVM: pass struct kvm to kvm_set_routing_entry
KVM: x86: add a flag to disable KVM x2apic broadcast quirk
KVM: x86: bump MAX_VCPUS to 288
KVM: x86: bump KVM_MAX_VCPU_ID to 1023
Merge tag 'kvm-s390-next-4.8-4' of git://git.kernel.org/.../kvms390/linux into next
Merge tag 'kvm-arm-for-4.8' of git://git.kernel.org/.../kvmarm/kvmarm into next
Merge branch 'kvm-ppc-next' of git://git.kernel.org/.../paulus/powerpc into next

Sam Bobroff (1):

Thomas Huth (2):
KVM: PPC: Book3S PR: Fix illegal opcode emulation
KVM: PPC: Book3S PR: Fix contents of SRR1 when injecting a program exception

Wanpeng Li (3):
KVM: x86: introduce cancel_hv_tscdeadline
KVM: vmx: fix missed cancellation of TSC deadline timer
KVM: nVMX: avoid incorrect preemption timer vmexit in nested guest

Wei Yongjun (1):
KVM: x86: Use ARRAY_SIZE instead of dividing sizeof array with sizeof an element

Yunhong Jiang (4):
kvm: lapic: separate start_sw_tscdeadline from start_apic_timer
KVM: x86: support using the vmx preemption timer for tsc deadline timer
kvm: vmx: rename vmx_pre/post_block to pi_pre/post_block
kvm: vmx: hook preemption timer support

Documentation/virtual/kvm/api.txt | 82 +-
Documentation/virtual/kvm/devices/arm-vgic.txt | 25 +-
Documentation/virtual/kvm/devices/vm.txt | 87 +-
Documentation/virtual/kvm/locking.txt | 4 +-
arch/arm/include/asm/kvm_asm.h | 2 +
arch/arm/include/asm/kvm_host.h | 27 +-
arch/arm/include/asm/kvm_hyp.h | 3 -
arch/arm/include/asm/kvm_mmu.h | 15 +-
arch/arm/include/asm/pgtable.h | 4 +-
arch/arm/include/asm/virt.h | 4 +
arch/arm/kvm/Kconfig | 7 -
arch/arm/kvm/Makefile | 6 -
arch/arm/kvm/arm.c | 46 +-
arch/arm/kvm/emulate.c | 2 +-
arch/arm/kvm/guest.c | 2 +-
arch/arm/kvm/init.S | 56 +-
arch/arm/kvm/mmu.c | 142 +-
arch/arm/kvm/reset.c | 2 +-
arch/arm64/include/asm/cpufeature.h | 3 +-
arch/arm64/include/asm/kvm_arm.h | 2 +-
arch/arm64/include/asm/kvm_host.h | 19 +-
arch/arm64/include/asm/kvm_hyp.h | 23 -
arch/arm64/include/asm/kvm_mmu.h | 96 +-
arch/arm64/include/asm/pgtable-hwdef.h | 1 +
arch/arm64/include/asm/pgtable-prot.h | 4 +-
arch/arm64/include/asm/virt.h | 4 +
arch/arm64/include/uapi/asm/kvm.h | 2 +
arch/arm64/kernel/cpufeature.c | 19 +
arch/arm64/kvm/Kconfig | 8 +-
arch/arm64/kvm/Makefile | 9 +-
arch/arm64/kvm/guest.c | 2 +-
arch/arm64/kvm/hyp-init.S | 61 +-
arch/arm64/kvm/hyp/entry.S | 19 -
arch/arm64/kvm/hyp/hyp-entry.S | 15 +
arch/arm64/kvm/hyp/switch.c | 11 +-
arch/arm64/kvm/reset.c | 38 +-
arch/arm64/kvm/sys_regs.c | 4 +-
arch/mips/Kconfig | 2 +
arch/mips/include/asm/addrspace.h | 2 +-
arch/mips/include/asm/kvm_host.h | 315 +--
.../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/asm/uasm.h | 7 +
arch/mips/include/uapi/asm/inst.h | 114 +-
arch/mips/kernel/asm-offsets.c | 70 -
arch/mips/kernel/branch.c | 8 +-
arch/mips/kernel/traps.c | 23 +-
arch/mips/kvm/Kconfig | 1 +
arch/mips/kvm/Makefile | 3 +-
arch/mips/kvm/commpage.c | 2 +-
arch/mips/kvm/dyntrans.c | 182 +-
arch/mips/kvm/emulate.c | 485 ++--
arch/mips/kvm/entry.c | 701 ++++++
arch/mips/kvm/fpu.S | 7 +-
arch/mips/kvm/interrupt.c | 12 +-
arch/mips/kvm/interrupt.h | 14 +-
arch/mips/kvm/locore.S | 605 -----
arch/mips/kvm/mips.c | 367 ++-
arch/mips/kvm/mmu.c | 375 +++
arch/mips/kvm/stats.c | 21 -
arch/mips/kvm/tlb.c | 498 +---
arch/mips/kvm/trace.h | 236 +-
arch/mips/kvm/trap_emul.c | 178 +-
arch/mips/math-emu/cp1emu.c | 8 +-
arch/mips/mm/c-r4k.c | 2 +-
arch/mips/mm/uasm-micromips.c | 13 +-
arch/mips/mm/uasm-mips.c | 11 +
arch/mips/mm/uasm.c | 24 +-
arch/powerpc/include/asm/hmi.h | 45 +
arch/powerpc/include/asm/paca.h | 6 +
arch/powerpc/kernel/Makefile | 2 +-
arch/powerpc/kernel/exceptions-64s.S | 4 +-
arch/powerpc/kernel/hmi.c | 56 +
arch/powerpc/kernel/idle_power7.S | 5 +-
arch/powerpc/kernel/traps.c | 5 +
arch/powerpc/kvm/book3s_hv.c | 41 +-
arch/powerpc/kvm/book3s_hv_ras.c | 176 ++
arch/powerpc/kvm/book3s_hv_rmhandlers.S | 527 +++--
arch/powerpc/kvm/book3s_pr.c | 16 +-
arch/powerpc/kvm/booke.c | 4 +-
arch/powerpc/kvm/emulate.c | 1 -
arch/powerpc/kvm/mpic.c | 3 +-
arch/powerpc/kvm/powerpc.c | 6 +-
arch/powerpc/platforms/powernv/opal-wrappers.S | 2 -
arch/s390/hypfs/hypfs_diag.c | 375 +--
arch/s390/include/asm/cpacf.h | 10 +
arch/s390/include/asm/diag.h | 149 ++
arch/s390/include/asm/gmap.h | 82 +-
arch/s390/include/asm/kvm_host.h | 33 +-
arch/s390/include/asm/mmu.h | 11 +-
arch/s390/include/asm/mmu_context.h | 3 +-
arch/s390/include/asm/page.h | 9 +-
arch/s390/include/asm/pgalloc.h | 2 +
arch/s390/include/asm/pgtable.h | 17 +-
arch/s390/include/asm/processor.h | 2 +
arch/s390/include/asm/sclp.h | 23 +-
arch/s390/include/uapi/asm/kvm.h | 41 +
arch/s390/include/uapi/asm/sie.h | 1 +
arch/s390/kernel/diag.c | 37 +
arch/s390/kvm/Makefile | 2 +-
arch/s390/kvm/diag.c | 5 +
arch/s390/kvm/gaccess.c | 387 +++-
arch/s390/kvm/gaccess.h | 3 +
arch/s390/kvm/guestdbg.c | 19 +-
arch/s390/kvm/intercept.c | 33 +-
arch/s390/kvm/interrupt.c | 34 +-
arch/s390/kvm/kvm-s390.c | 402 +++-
arch/s390/kvm/kvm-s390.h | 22 +-
arch/s390/kvm/priv.c | 226 +-
arch/s390/kvm/sigp.c | 10 +-
arch/s390/kvm/sthyi.c | 471 ++++
arch/s390/kvm/trace.h | 49 +-
arch/s390/kvm/vsie.c | 1091 +++++++++
arch/s390/mm/fault.c | 2 +
arch/s390/mm/gmap.c | 1602 ++++++++++++-
arch/s390/mm/pgalloc.c | 39 +-
arch/s390/mm/pgtable.c | 209 +-
arch/x86/include/asm/kvm_host.h | 31 +-
arch/x86/include/asm/svm.h | 1 -
arch/x86/include/asm/virtext.h | 8 +-
arch/x86/kvm/Kconfig | 1 -
arch/x86/kvm/i8254.c | 4 +-
arch/x86/kvm/iommu.c | 2 -
arch/x86/kvm/irq_comm.c | 49 +-
arch/x86/kvm/lapic.c | 539 +++--
arch/x86/kvm/lapic.h | 19 +-
arch/x86/kvm/mmu.c | 29 +-
arch/x86/kvm/mmu.h | 5 -
arch/x86/kvm/paging_tmpl.h | 10 +-
arch/x86/kvm/pmu_intel.c | 2 +-
arch/x86/kvm/svm.c | 8 +-
arch/x86/kvm/trace.h | 15 +
arch/x86/kvm/vmx.c | 386 +++-
arch/x86/kvm/x86.c | 175 +-
drivers/s390/char/sclp_early.c | 12 +-
drivers/s390/char/sclp_ocf.c | 23 +-
include/kvm/arm_vgic.h | 438 ++--
include/kvm/vgic/vgic.h | 246 --
include/linux/context_tracking.h | 38 +-
include/linux/irqchip/arm-gic-v3.h | 212 +-
include/linux/kvm_host.h | 58 +-
include/linux/page_ref.h | 9 +
include/trace/events/kvm.h | 5 +-
include/uapi/linux/kvm.h | 13 +-
mm/gup.c | 1 +
virt/kvm/Kconfig | 3 -
virt/kvm/arm/hyp/vgic-v2-sr.c | 15 +-
virt/kvm/arm/vgic-v2-emul.c | 856 -------
virt/kvm/arm/vgic-v2.c | 274 ---
virt/kvm/arm/vgic-v3-emul.c | 1074 ---------
virt/kvm/arm/vgic-v3.c | 279 ---
virt/kvm/arm/vgic.c | 2440 --------------------
virt/kvm/arm/vgic.h | 140 --
virt/kvm/arm/vgic/vgic-init.c | 9 +-
virt/kvm/arm/vgic/vgic-its.c | 1500 ++++++++++++
virt/kvm/arm/vgic/vgic-kvm-device.c | 22 +-
virt/kvm/arm/vgic/vgic-mmio-v2.c | 10 +
virt/kvm/arm/vgic/vgic-mmio-v3.c | 247 +-
virt/kvm/arm/vgic/vgic-mmio.c | 64 +-
virt/kvm/arm/vgic/vgic-mmio.h | 31 +-
virt/kvm/arm/vgic/vgic-v2.c | 12 +-
virt/kvm/arm/vgic/vgic-v3.c | 29 +-
virt/kvm/arm/vgic/vgic.c | 119 +-
virt/kvm/arm/vgic/vgic.h | 38 +-
virt/kvm/irqchip.c | 7 +-
virt/kvm/kvm_main.c | 110 +-
167 files changed, 11776 insertions(+), 9308 deletions(-)
create mode 100644 arch/mips/kvm/entry.c
delete mode 100644 arch/mips/kvm/locore.S
create mode 100644 arch/mips/kvm/mmu.c
create mode 100644 arch/powerpc/include/asm/hmi.h
create mode 100644 arch/powerpc/kernel/hmi.c
create mode 100644 arch/s390/kvm/sthyi.c
create mode 100644 arch/s390/kvm/vsie.c
delete mode 100644 include/kvm/vgic/vgic.h
delete mode 100644 virt/kvm/arm/vgic-v2-emul.c
delete mode 100644 virt/kvm/arm/vgic-v2.c
delete mode 100644 virt/kvm/arm/vgic-v3-emul.c
delete mode 100644 virt/kvm/arm/vgic-v3.c
delete mode 100644 virt/kvm/arm/vgic.c
delete mode 100644 virt/kvm/arm/vgic.h
create mode 100644 virt/kvm/arm/vgic/vgic-its.c