diff options
-rw-r--r-- | drivers/kvm/kvm.h | 1 | ||||
-rw-r--r-- | drivers/kvm/kvm_main.c | 3 | ||||
-rw-r--r-- | drivers/kvm/x86.c | 1 |
3 files changed, 5 insertions, 0 deletions
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h index b65f5dee4b1b..048849d97b35 100644 --- a/drivers/kvm/kvm.h +++ b/drivers/kvm/kvm.h | |||
@@ -300,6 +300,7 @@ struct kvm_vm_stat { | |||
300 | u32 mmu_pde_zapped; | 300 | u32 mmu_pde_zapped; |
301 | u32 mmu_flooded; | 301 | u32 mmu_flooded; |
302 | u32 mmu_recycled; | 302 | u32 mmu_recycled; |
303 | u32 remote_tlb_flush; | ||
303 | }; | 304 | }; |
304 | 305 | ||
305 | struct kvm { | 306 | struct kvm { |
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index 7939b5c9a4b4..aec6b67cfebb 100644 --- a/drivers/kvm/kvm_main.c +++ b/drivers/kvm/kvm_main.c | |||
@@ -115,6 +115,9 @@ void kvm_flush_remote_tlbs(struct kvm *kvm) | |||
115 | if (cpu != -1 && cpu != raw_smp_processor_id()) | 115 | if (cpu != -1 && cpu != raw_smp_processor_id()) |
116 | cpu_set(cpu, cpus); | 116 | cpu_set(cpu, cpus); |
117 | } | 117 | } |
118 | if (cpus_empty(cpus)) | ||
119 | return; | ||
120 | ++kvm->stat.remote_tlb_flush; | ||
118 | smp_call_function_mask(cpus, ack_flush, NULL, 1); | 121 | smp_call_function_mask(cpus, ack_flush, NULL, 1); |
119 | } | 122 | } |
120 | 123 | ||
diff --git a/drivers/kvm/x86.c b/drivers/kvm/x86.c index b482b6a8a828..ac09f381f47f 100644 --- a/drivers/kvm/x86.c +++ b/drivers/kvm/x86.c | |||
@@ -73,6 +73,7 @@ struct kvm_stats_debugfs_item debugfs_entries[] = { | |||
73 | { "mmu_pde_zapped", VM_STAT(mmu_pde_zapped) }, | 73 | { "mmu_pde_zapped", VM_STAT(mmu_pde_zapped) }, |
74 | { "mmu_flooded", VM_STAT(mmu_flooded) }, | 74 | { "mmu_flooded", VM_STAT(mmu_flooded) }, |
75 | { "mmu_recycled", VM_STAT(mmu_recycled) }, | 75 | { "mmu_recycled", VM_STAT(mmu_recycled) }, |
76 | { "remote_tlb_flush", VM_STAT(remote_tlb_flush) }, | ||
76 | { NULL } | 77 | { NULL } |
77 | }; | 78 | }; |
78 | 79 | ||