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 | |
| 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')
| -rw-r--r-- | include/linux/kvm.h | 3 | ||||
| -rw-r--r-- | include/linux/kvm_host.h | 27 |
2 files changed, 21 insertions, 9 deletions
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index 09f2b3aa2da7..2ce09aa7d3b3 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
| @@ -617,6 +617,7 @@ struct kvm_ppc_smmu_info { | |||
| 617 | #define KVM_CAP_SIGNAL_MSI 77 | 617 | #define KVM_CAP_SIGNAL_MSI 77 |
| 618 | #define KVM_CAP_PPC_GET_SMMU_INFO 78 | 618 | #define KVM_CAP_PPC_GET_SMMU_INFO 78 |
| 619 | #define KVM_CAP_S390_COW 79 | 619 | #define KVM_CAP_S390_COW 79 |
| 620 | #define KVM_CAP_PPC_ALLOC_HTAB 80 | ||
| 620 | 621 | ||
| 621 | #ifdef KVM_CAP_IRQ_ROUTING | 622 | #ifdef KVM_CAP_IRQ_ROUTING |
| 622 | 623 | ||
| @@ -828,6 +829,8 @@ struct kvm_s390_ucas_mapping { | |||
| 828 | #define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi) | 829 | #define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi) |
| 829 | /* Available with KVM_CAP_PPC_GET_SMMU_INFO */ | 830 | /* Available with KVM_CAP_PPC_GET_SMMU_INFO */ |
| 830 | #define KVM_PPC_GET_SMMU_INFO _IOR(KVMIO, 0xa6, struct kvm_ppc_smmu_info) | 831 | #define KVM_PPC_GET_SMMU_INFO _IOR(KVMIO, 0xa6, struct kvm_ppc_smmu_info) |
| 832 | /* Available with KVM_CAP_PPC_ALLOC_HTAB */ | ||
| 833 | #define KVM_PPC_ALLOCATE_HTAB _IOWR(KVMIO, 0xa7, __u32) | ||
| 831 | 834 | ||
| 832 | /* | 835 | /* |
| 833 | * ioctls for vcpu fds | 836 | * ioctls for vcpu fds |
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 | ||
