diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-24 15:01:20 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-24 15:01:20 -0400 |
commit | 5fecc9d8f59e765c2a48379dd7c6f5cf88c7d75a (patch) | |
tree | d1fc25d9650d3ac24591bba6f5e2e7a1afc54796 /include/linux/kvm_host.h | |
parent | 3c4cfadef6a1665d9cd02a543782d03d3e6740c6 (diff) | |
parent | 1a577b72475d161b6677c05abe57301362023bb2 (diff) |
Merge tag 'kvm-3.6-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull KVM updates from Avi Kivity:
"Highlights include
- full big real mode emulation on pre-Westmere Intel hosts (can be
disabled with emulate_invalid_guest_state=0)
- relatively small ppc and s390 updates
- PCID/INVPCID support in guests
- EOI avoidance; 3.6 guests should perform better on 3.6 hosts on
interrupt intensive workloads)
- Lockless write faults during live migration
- EPT accessed/dirty bits support for new Intel processors"
Fix up conflicts in:
- Documentation/virtual/kvm/api.txt:
Stupid subchapter numbering, added next to each other.
- arch/powerpc/kvm/booke_interrupts.S:
PPC asm changes clashing with the KVM fixes
- arch/s390/include/asm/sigp.h, arch/s390/kvm/sigp.c:
Duplicated commits through the kvm tree and the s390 tree, with
subsequent edits in the KVM tree.
* tag 'kvm-3.6-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (93 commits)
KVM: fix race with level interrupts
x86, hyper: fix build with !CONFIG_KVM_GUEST
Revert "apic: fix kvm build on UP without IOAPIC"
KVM guest: switch to apic_set_eoi_write, apic_write
apic: add apic_set_eoi_write for PV use
KVM: VMX: Implement PCID/INVPCID for guests with EPT
KVM: Add x86_hyper_kvm to complete detect_hypervisor_platform check
KVM: PPC: Critical interrupt emulation support
KVM: PPC: e500mc: Fix tlbilx emulation for 64-bit guests
KVM: PPC64: booke: Set interrupt computation mode for 64-bit host
KVM: PPC: bookehv: Add ESR flag to Data Storage Interrupt
KVM: PPC: bookehv64: Add support for std/ld emulation.
booke: Added crit/mc exception handler for e500v2
booke/bookehv: Add host crit-watchdog exception support
KVM: MMU: document mmu-lock and fast page fault
KVM: MMU: fix kvm_mmu_pagetable_walk tracepoint
KVM: MMU: trace fast page fault
KVM: MMU: fast path of handling guest page fault
KVM: MMU: introduce SPTE_MMU_WRITEABLE bit
KVM: MMU: fold tlb flush judgement into mmu_spte_update
...
Diffstat (limited to 'include/linux/kvm_host.h')
-rw-r--r-- | include/linux/kvm_host.h | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 96c158a37d3e..b70b48b01098 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
@@ -306,7 +306,7 @@ struct kvm { | |||
306 | struct hlist_head irq_ack_notifier_list; | 306 | struct hlist_head irq_ack_notifier_list; |
307 | #endif | 307 | #endif |
308 | 308 | ||
309 | #ifdef KVM_ARCH_WANT_MMU_NOTIFIER | 309 | #if defined(CONFIG_MMU_NOTIFIER) && defined(KVM_ARCH_WANT_MMU_NOTIFIER) |
310 | struct mmu_notifier mmu_notifier; | 310 | struct mmu_notifier mmu_notifier; |
311 | unsigned long mmu_notifier_seq; | 311 | unsigned long mmu_notifier_seq; |
312 | long mmu_notifier_count; | 312 | long mmu_notifier_count; |
@@ -314,13 +314,19 @@ struct kvm { | |||
314 | long tlbs_dirty; | 314 | long tlbs_dirty; |
315 | }; | 315 | }; |
316 | 316 | ||
317 | /* The guest did something we don't support. */ | 317 | #define kvm_err(fmt, ...) \ |
318 | #define pr_unimpl(vcpu, fmt, ...) \ | 318 | pr_err("kvm [%i]: " fmt, task_pid_nr(current), ## __VA_ARGS__) |
319 | pr_err_ratelimited("kvm: %i: cpu%i " fmt, \ | 319 | #define kvm_info(fmt, ...) \ |
320 | current->tgid, (vcpu)->vcpu_id , ## __VA_ARGS__) | 320 | pr_info("kvm [%i]: " fmt, task_pid_nr(current), ## __VA_ARGS__) |
321 | #define kvm_debug(fmt, ...) \ | ||
322 | pr_debug("kvm [%i]: " fmt, task_pid_nr(current), ## __VA_ARGS__) | ||
323 | #define kvm_pr_unimpl(fmt, ...) \ | ||
324 | pr_err_ratelimited("kvm [%i]: " fmt, \ | ||
325 | task_tgid_nr(current), ## __VA_ARGS__) | ||
321 | 326 | ||
322 | #define kvm_printf(kvm, fmt ...) printk(KERN_DEBUG fmt) | 327 | /* The guest did something we don't support. */ |
323 | #define vcpu_printf(vcpu, fmt...) kvm_printf(vcpu->kvm, fmt) | 328 | #define vcpu_unimpl(vcpu, fmt, ...) \ |
329 | kvm_pr_unimpl("vcpu%i " fmt, (vcpu)->vcpu_id, ## __VA_ARGS__) | ||
324 | 330 | ||
325 | static inline struct kvm_vcpu *kvm_get_vcpu(struct kvm *kvm, int i) | 331 | static inline struct kvm_vcpu *kvm_get_vcpu(struct kvm *kvm, int i) |
326 | { | 332 | { |
@@ -535,6 +541,9 @@ int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu); | |||
535 | 541 | ||
536 | void kvm_free_physmem(struct kvm *kvm); | 542 | void kvm_free_physmem(struct kvm *kvm); |
537 | 543 | ||
544 | void *kvm_kvzalloc(unsigned long size); | ||
545 | void kvm_kvfree(const void *addr); | ||
546 | |||
538 | #ifndef __KVM_HAVE_ARCH_VM_ALLOC | 547 | #ifndef __KVM_HAVE_ARCH_VM_ALLOC |
539 | static inline struct kvm *kvm_arch_alloc_vm(void) | 548 | static inline struct kvm *kvm_arch_alloc_vm(void) |
540 | { | 549 | { |
@@ -771,7 +780,7 @@ struct kvm_stats_debugfs_item { | |||
771 | extern struct kvm_stats_debugfs_item debugfs_entries[]; | 780 | extern struct kvm_stats_debugfs_item debugfs_entries[]; |
772 | extern struct dentry *kvm_debugfs_dir; | 781 | extern struct dentry *kvm_debugfs_dir; |
773 | 782 | ||
774 | #ifdef KVM_ARCH_WANT_MMU_NOTIFIER | 783 | #if defined(CONFIG_MMU_NOTIFIER) && defined(KVM_ARCH_WANT_MMU_NOTIFIER) |
775 | static inline int mmu_notifier_retry(struct kvm_vcpu *vcpu, unsigned long mmu_seq) | 784 | static inline int mmu_notifier_retry(struct kvm_vcpu *vcpu, unsigned long mmu_seq) |
776 | { | 785 | { |
777 | if (unlikely(vcpu->kvm->mmu_notifier_count)) | 786 | if (unlikely(vcpu->kvm->mmu_notifier_count)) |
@@ -793,7 +802,7 @@ static inline int mmu_notifier_retry(struct kvm_vcpu *vcpu, unsigned long mmu_se | |||
793 | } | 802 | } |
794 | #endif | 803 | #endif |
795 | 804 | ||
796 | #ifdef CONFIG_HAVE_KVM_IRQCHIP | 805 | #ifdef KVM_CAP_IRQ_ROUTING |
797 | 806 | ||
798 | #define KVM_MAX_IRQ_ROUTES 1024 | 807 | #define KVM_MAX_IRQ_ROUTES 1024 |
799 | 808 | ||