|
24 | 24 |
|
25 | 25 | static int kvmclock __initdata = 1;
|
26 | 26 | static int kvmclock_vsyscall __initdata = 1;
|
27 |
| -static int msr_kvm_system_time __ro_after_init = MSR_KVM_SYSTEM_TIME; |
28 |
| -static int msr_kvm_wall_clock __ro_after_init = MSR_KVM_WALL_CLOCK; |
| 27 | +static int msr_kvm_system_time __ro_after_init; |
| 28 | +static int msr_kvm_wall_clock __ro_after_init; |
29 | 29 | static u64 kvm_sched_clock_offset __ro_after_init;
|
30 | 30 |
|
31 | 31 | static int __init parse_no_kvmclock(char *arg)
|
@@ -195,7 +195,8 @@ static void kvm_setup_secondary_clock(void)
|
195 | 195 |
|
196 | 196 | void kvmclock_disable(void)
|
197 | 197 | {
|
198 |
| - native_write_msr(msr_kvm_system_time, 0, 0); |
| 198 | + if (msr_kvm_system_time) |
| 199 | + native_write_msr(msr_kvm_system_time, 0, 0); |
199 | 200 | }
|
200 | 201 |
|
201 | 202 | static void __init kvmclock_init_mem(void)
|
@@ -294,7 +295,10 @@ void __init kvmclock_init(void)
|
294 | 295 | if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE2)) {
|
295 | 296 | msr_kvm_system_time = MSR_KVM_SYSTEM_TIME_NEW;
|
296 | 297 | msr_kvm_wall_clock = MSR_KVM_WALL_CLOCK_NEW;
|
297 |
| - } else if (!kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE)) { |
| 298 | + } else if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE)) { |
| 299 | + msr_kvm_system_time = MSR_KVM_SYSTEM_TIME; |
| 300 | + msr_kvm_wall_clock = MSR_KVM_WALL_CLOCK; |
| 301 | + } else { |
298 | 302 | return;
|
299 | 303 | }
|
300 | 304 |
|
|
0 commit comments