diff options
Diffstat (limited to 'arch/x86/kvm/svm.c')
-rw-r--r-- | arch/x86/kvm/svm.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index e334389e1c75..f75af406b268 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "x86.h" | 22 | #include "x86.h" |
23 | 23 | ||
24 | #include <linux/module.h> | 24 | #include <linux/module.h> |
25 | #include <linux/mod_devicetable.h> | ||
25 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
26 | #include <linux/vmalloc.h> | 27 | #include <linux/vmalloc.h> |
27 | #include <linux/highmem.h> | 28 | #include <linux/highmem.h> |
@@ -42,6 +43,12 @@ | |||
42 | MODULE_AUTHOR("Qumranet"); | 43 | MODULE_AUTHOR("Qumranet"); |
43 | MODULE_LICENSE("GPL"); | 44 | MODULE_LICENSE("GPL"); |
44 | 45 | ||
46 | static const struct x86_cpu_id svm_cpu_id[] = { | ||
47 | X86_FEATURE_MATCH(X86_FEATURE_SVM), | ||
48 | {} | ||
49 | }; | ||
50 | MODULE_DEVICE_TABLE(x86cpu, svm_cpu_id); | ||
51 | |||
45 | #define IOPM_ALLOC_ORDER 2 | 52 | #define IOPM_ALLOC_ORDER 2 |
46 | #define MSRPM_ALLOC_ORDER 1 | 53 | #define MSRPM_ALLOC_ORDER 1 |
47 | 54 | ||
@@ -3240,6 +3247,7 @@ static int interrupt_window_interception(struct vcpu_svm *svm) | |||
3240 | svm_clear_vintr(svm); | 3247 | svm_clear_vintr(svm); |
3241 | svm->vmcb->control.int_ctl &= ~V_IRQ_MASK; | 3248 | svm->vmcb->control.int_ctl &= ~V_IRQ_MASK; |
3242 | mark_dirty(svm->vmcb, VMCB_INTR); | 3249 | mark_dirty(svm->vmcb, VMCB_INTR); |
3250 | ++svm->vcpu.stat.irq_window_exits; | ||
3243 | /* | 3251 | /* |
3244 | * If the user space waits to inject interrupts, exit as soon as | 3252 | * If the user space waits to inject interrupts, exit as soon as |
3245 | * possible | 3253 | * possible |
@@ -3247,7 +3255,6 @@ static int interrupt_window_interception(struct vcpu_svm *svm) | |||
3247 | if (!irqchip_in_kernel(svm->vcpu.kvm) && | 3255 | if (!irqchip_in_kernel(svm->vcpu.kvm) && |
3248 | kvm_run->request_interrupt_window && | 3256 | kvm_run->request_interrupt_window && |
3249 | !kvm_cpu_has_interrupt(&svm->vcpu)) { | 3257 | !kvm_cpu_has_interrupt(&svm->vcpu)) { |
3250 | ++svm->vcpu.stat.irq_window_exits; | ||
3251 | kvm_run->exit_reason = KVM_EXIT_IRQ_WINDOW_OPEN; | 3258 | kvm_run->exit_reason = KVM_EXIT_IRQ_WINDOW_OPEN; |
3252 | return 0; | 3259 | return 0; |
3253 | } | 3260 | } |