Revision c5999bfc
b/target-i386/kvm.c | ||
---|---|---|
63 | 63 |
|
64 | 64 |
static bool has_msr_star; |
65 | 65 |
static bool has_msr_hsave_pa; |
66 |
#if defined(CONFIG_KVM_PARA) && defined(KVM_CAP_ASYNC_PF) |
|
67 |
static bool has_msr_async_pf_en; |
|
68 |
#endif |
|
66 | 69 |
static int lm_capable_kernel; |
67 | 70 |
|
68 | 71 |
static struct kvm_cpuid2 *try_get_cpuid(KVMState *s, int max) |
... | ... | |
164 | 167 |
features |= (1 << para_features[i].feature); |
165 | 168 |
} |
166 | 169 |
} |
170 |
has_msr_async_pf_en = features & (1 << KVM_FEATURE_ASYNC_PF); |
|
167 | 171 |
return features; |
168 | 172 |
} |
169 | 173 |
#endif |
... | ... | |
828 | 832 |
env->system_time_msr); |
829 | 833 |
kvm_msr_entry_set(&msrs[n++], MSR_KVM_WALL_CLOCK, env->wall_clock_msr); |
830 | 834 |
#if defined(CONFIG_KVM_PARA) && defined(KVM_CAP_ASYNC_PF) |
831 |
kvm_msr_entry_set(&msrs[n++], MSR_KVM_ASYNC_PF_EN, env->async_pf_en_msr); |
|
835 |
if (has_msr_async_pf_en) { |
|
836 |
kvm_msr_entry_set(&msrs[n++], MSR_KVM_ASYNC_PF_EN, |
|
837 |
env->async_pf_en_msr); |
|
838 |
} |
|
832 | 839 |
#endif |
833 | 840 |
} |
834 | 841 |
#ifdef KVM_CAP_MCE |
... | ... | |
1064 | 1071 |
msrs[n++].index = MSR_KVM_SYSTEM_TIME; |
1065 | 1072 |
msrs[n++].index = MSR_KVM_WALL_CLOCK; |
1066 | 1073 |
#if defined(CONFIG_KVM_PARA) && defined(KVM_CAP_ASYNC_PF) |
1067 |
msrs[n++].index = MSR_KVM_ASYNC_PF_EN; |
|
1074 |
if (has_msr_async_pf_en) { |
|
1075 |
msrs[n++].index = MSR_KVM_ASYNC_PF_EN; |
|
1076 |
} |
|
1068 | 1077 |
#endif |
1069 | 1078 |
|
1070 | 1079 |
#ifdef KVM_CAP_MCE |
Also available in: Unified diff