aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/x86.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r--arch/x86/kvm/x86.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 106f9f1f78c0..ce677b20bf86 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -185,11 +185,11 @@ static void kvm_shared_msr_cpu_online(void)
185 locals->current_value[i] = shared_msrs_global.msrs[i].value; 185 locals->current_value[i] = shared_msrs_global.msrs[i].value;
186} 186}
187 187
188void kvm_set_shared_msr(unsigned slot, u64 value) 188void kvm_set_shared_msr(unsigned slot, u64 value, u64 mask)
189{ 189{
190 struct kvm_shared_msrs *smsr = &__get_cpu_var(shared_msrs); 190 struct kvm_shared_msrs *smsr = &__get_cpu_var(shared_msrs);
191 191
192 if (value == smsr->current_value[slot]) 192 if (((value ^ smsr->current_value[slot]) & mask) == 0)
193 return; 193 return;
194 smsr->current_value[slot] = value; 194 smsr->current_value[slot] = value;
195 wrmsrl(shared_msrs_global.msrs[slot].msr, value); 195 wrmsrl(shared_msrs_global.msrs[slot].msr, value);