diff options
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r-- | arch/x86/kvm/x86.c | 4 |
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 | ||
188 | void kvm_set_shared_msr(unsigned slot, u64 value) | 188 | void 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); |