diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-02-10 16:16:35 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-02-10 16:16:35 -0500 |
commit | 15303ba5d1cd9b28d03a980456c0978c0ea3b208 (patch) | |
tree | b9200d5b7474661cf36468038529a5269ee83238 /include/kvm | |
parent | 9a61df9e5f7471fe5be3e02bd0bed726b2761a54 (diff) | |
parent | 1ab03c072feb579c9fd116de25be2b211e6bff6a (diff) |
Merge tag 'kvm-4.16-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull KVM updates from Radim Krčmář:
"ARM:
- icache invalidation optimizations, improving VM startup time
- support for forwarded level-triggered interrupts, improving
performance for timers and passthrough platform devices
- a small fix for power-management notifiers, and some cosmetic
changes
PPC:
- add MMIO emulation for vector loads and stores
- allow HPT guests to run on a radix host on POWER9 v2.2 CPUs without
requiring the complex thread synchronization of older CPU versions
- improve the handling of escalation interrupts with the XIVE
interrupt controller
- support decrement register migration
- various cleanups and bugfixes.
s390:
- Cornelia Huck passed maintainership to Janosch Frank
- exitless interrupts for emulated devices
- cleanup of cpuflag handling
- kvm_stat counter improvements
- VSIE improvements
- mm cleanup
x86:
- hypervisor part of SEV
- UMIP, RDPID, and MSR_SMI_COUNT emulation
- paravirtualized TLB shootdown using the new KVM_VCPU_PREEMPTED bit
- allow guests to see TOPOEXT, GFNI, VAES, VPCLMULQDQ, and more
AVX512 features
- show vcpu id in its anonymous inode name
- many fixes and cleanups
- per-VCPU MSR bitmaps (already merged through x86/pti branch)
- stable KVM clock when nesting on Hyper-V (merged through
x86/hyperv)"
* tag 'kvm-4.16-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (197 commits)
KVM: PPC: Book3S: Add MMIO emulation for VMX instructions
KVM: PPC: Book3S HV: Branch inside feature section
KVM: PPC: Book3S HV: Make HPT resizing work on POWER9
KVM: PPC: Book3S HV: Fix handling of secondary HPTEG in HPT resizing code
KVM: PPC: Book3S PR: Fix broken select due to misspelling
KVM: x86: don't forget vcpu_put() in kvm_arch_vcpu_ioctl_set_sregs()
KVM: PPC: Book3S PR: Fix svcpu copying with preemption enabled
KVM: PPC: Book3S HV: Drop locks before reading guest memory
kvm: x86: remove efer_reload entry in kvm_vcpu_stat
KVM: x86: AMD Processor Topology Information
x86/kvm/vmx: do not use vm-exit instruction length for fast MMIO when running nested
kvm: embed vcpu id to dentry of vcpu anon inode
kvm: Map PFN-type memory regions as writable (if possible)
x86/kvm: Make it compile on 32bit and with HYPYERVISOR_GUEST=n
KVM: arm/arm64: Fixup userspace irqchip static key optimization
KVM: arm/arm64: Fix userspace_irqchip_in_use counting
KVM: arm/arm64: Fix incorrect timer_is_pending logic
MAINTAINERS: update KVM/s390 maintainers
MAINTAINERS: add Halil as additional vfio-ccw maintainer
MAINTAINERS: add David as a reviewer for KVM/s390
...
Diffstat (limited to 'include/kvm')
-rw-r--r-- | include/kvm/arm_arch_timer.h | 2 | ||||
-rw-r--r-- | include/kvm/arm_vgic.h | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/include/kvm/arm_arch_timer.h b/include/kvm/arm_arch_timer.h index 9da6ce22803f..6502feb9524b 100644 --- a/include/kvm/arm_arch_timer.h +++ b/include/kvm/arm_arch_timer.h | |||
@@ -90,6 +90,8 @@ void kvm_timer_vcpu_put(struct kvm_vcpu *vcpu); | |||
90 | 90 | ||
91 | void kvm_timer_init_vhe(void); | 91 | void kvm_timer_init_vhe(void); |
92 | 92 | ||
93 | bool kvm_arch_timer_get_input_level(int vintid); | ||
94 | |||
93 | #define vcpu_vtimer(v) (&(v)->arch.timer_cpu.vtimer) | 95 | #define vcpu_vtimer(v) (&(v)->arch.timer_cpu.vtimer) |
94 | #define vcpu_ptimer(v) (&(v)->arch.timer_cpu.ptimer) | 96 | #define vcpu_ptimer(v) (&(v)->arch.timer_cpu.ptimer) |
95 | 97 | ||
diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h index 8c896540a72c..cdbd142ca7f2 100644 --- a/include/kvm/arm_vgic.h +++ b/include/kvm/arm_vgic.h | |||
@@ -130,6 +130,17 @@ struct vgic_irq { | |||
130 | u8 priority; | 130 | u8 priority; |
131 | enum vgic_irq_config config; /* Level or edge */ | 131 | enum vgic_irq_config config; /* Level or edge */ |
132 | 132 | ||
133 | /* | ||
134 | * Callback function pointer to in-kernel devices that can tell us the | ||
135 | * state of the input level of mapped level-triggered IRQ faster than | ||
136 | * peaking into the physical GIC. | ||
137 | * | ||
138 | * Always called in non-preemptible section and the functions can use | ||
139 | * kvm_arm_get_running_vcpu() to get the vcpu pointer for private | ||
140 | * IRQs. | ||
141 | */ | ||
142 | bool (*get_input_level)(int vintid); | ||
143 | |||
133 | void *owner; /* Opaque pointer to reserve an interrupt | 144 | void *owner; /* Opaque pointer to reserve an interrupt |
134 | for in-kernel devices. */ | 145 | for in-kernel devices. */ |
135 | }; | 146 | }; |
@@ -331,7 +342,7 @@ void kvm_vgic_init_cpu_hardware(void); | |||
331 | int kvm_vgic_inject_irq(struct kvm *kvm, int cpuid, unsigned int intid, | 342 | int kvm_vgic_inject_irq(struct kvm *kvm, int cpuid, unsigned int intid, |
332 | bool level, void *owner); | 343 | bool level, void *owner); |
333 | int kvm_vgic_map_phys_irq(struct kvm_vcpu *vcpu, unsigned int host_irq, | 344 | int kvm_vgic_map_phys_irq(struct kvm_vcpu *vcpu, unsigned int host_irq, |
334 | u32 vintid); | 345 | u32 vintid, bool (*get_input_level)(int vindid)); |
335 | int kvm_vgic_unmap_phys_irq(struct kvm_vcpu *vcpu, unsigned int vintid); | 346 | int kvm_vgic_unmap_phys_irq(struct kvm_vcpu *vcpu, unsigned int vintid); |
336 | bool kvm_vgic_map_is_active(struct kvm_vcpu *vcpu, unsigned int vintid); | 347 | bool kvm_vgic_map_is_active(struct kvm_vcpu *vcpu, unsigned int vintid); |
337 | 348 | ||