@@ -108,8 +108,8 @@ typedef struct {
108
108
} KVMMSRHandlers ;
109
109
110
110
static void kvm_init_msrs (X86CPU * cpu );
111
- static bool kvm_filter_msr (KVMState * s , uint32_t msr , QEMURDMSRHandler * rdmsr ,
112
- QEMUWRMSRHandler * wrmsr );
111
+ static int kvm_filter_msr (KVMState * s , uint32_t msr , QEMURDMSRHandler * rdmsr ,
112
+ QEMUWRMSRHandler * wrmsr );
113
113
114
114
const KVMCapabilityInfo kvm_arch_required_capabilities [] = {
115
115
KVM_CAP_INFO (SET_TSS_ADDR ),
@@ -3150,17 +3150,21 @@ static int kvm_vm_enable_notify_vmexit(KVMState *s)
3150
3150
3151
3151
static int kvm_vm_enable_userspace_msr (KVMState * s )
3152
3152
{
3153
- int ret = kvm_vm_enable_cap (s , KVM_CAP_X86_USER_SPACE_MSR , 0 ,
3154
- KVM_MSR_EXIT_REASON_FILTER );
3153
+ int ret ;
3154
+
3155
+ ret = kvm_vm_enable_cap (s , KVM_CAP_X86_USER_SPACE_MSR , 0 ,
3156
+ KVM_MSR_EXIT_REASON_FILTER );
3155
3157
if (ret < 0 ) {
3156
3158
error_report ("Could not enable user space MSRs: %s" ,
3157
3159
strerror (- ret ));
3158
3160
exit (1 );
3159
3161
}
3160
3162
3161
- if (!kvm_filter_msr (s , MSR_CORE_THREAD_COUNT ,
3162
- kvm_rdmsr_core_thread_count , NULL )) {
3163
- error_report ("Could not install MSR_CORE_THREAD_COUNT handler!" );
3163
+ ret = kvm_filter_msr (s , MSR_CORE_THREAD_COUNT ,
3164
+ kvm_rdmsr_core_thread_count , NULL );
3165
+ if (ret < 0 ) {
3166
+ error_report ("Could not install MSR_CORE_THREAD_COUNT handler: %s" ,
3167
+ strerror (- ret ));
3164
3168
exit (1 );
3165
3169
}
3166
3170
@@ -3169,36 +3173,37 @@ static int kvm_vm_enable_userspace_msr(KVMState *s)
3169
3173
3170
3174
static void kvm_vm_enable_energy_msrs (KVMState * s )
3171
3175
{
3172
- bool r ;
3176
+ int ret ;
3177
+
3173
3178
if (s -> msr_energy .enable == true) {
3174
- r = kvm_filter_msr (s , MSR_RAPL_POWER_UNIT ,
3175
- kvm_rdmsr_rapl_power_unit , NULL );
3176
- if (! r ) {
3177
- error_report ("Could not install MSR_RAPL_POWER_UNIT \
3178
- handler" );
3179
+ ret = kvm_filter_msr (s , MSR_RAPL_POWER_UNIT ,
3180
+ kvm_rdmsr_rapl_power_unit , NULL );
3181
+ if (ret < 0 ) {
3182
+ error_report ("Could not install MSR_RAPL_POWER_UNIT handler: %s" ,
3183
+ strerror ( - ret ) );
3179
3184
exit (1 );
3180
3185
}
3181
3186
3182
- r = kvm_filter_msr (s , MSR_PKG_POWER_LIMIT ,
3183
- kvm_rdmsr_pkg_power_limit , NULL );
3184
- if (! r ) {
3185
- error_report ("Could not install MSR_PKG_POWER_LIMIT \
3186
- handler" );
3187
+ ret = kvm_filter_msr (s , MSR_PKG_POWER_LIMIT ,
3188
+ kvm_rdmsr_pkg_power_limit , NULL );
3189
+ if (ret < 0 ) {
3190
+ error_report ("Could not install MSR_PKG_POWER_LIMIT handler: %s" ,
3191
+ strerror ( - ret ) );
3187
3192
exit (1 );
3188
3193
}
3189
3194
3190
- r = kvm_filter_msr (s , MSR_PKG_POWER_INFO ,
3191
- kvm_rdmsr_pkg_power_info , NULL );
3192
- if (! r ) {
3193
- error_report ("Could not install MSR_PKG_POWER_INFO \
3194
- handler" );
3195
+ ret = kvm_filter_msr (s , MSR_PKG_POWER_INFO ,
3196
+ kvm_rdmsr_pkg_power_info , NULL );
3197
+ if (ret < 0 ) {
3198
+ error_report ("Could not install MSR_PKG_POWER_INFO handler: %s" ,
3199
+ strerror ( - ret ) );
3195
3200
exit (1 );
3196
3201
}
3197
- r = kvm_filter_msr (s , MSR_PKG_ENERGY_STATUS ,
3198
- kvm_rdmsr_pkg_energy_status , NULL );
3199
- if (! r ) {
3200
- error_report ("Could not install MSR_PKG_ENERGY_STATUS \
3201
- handler" );
3202
+ ret = kvm_filter_msr (s , MSR_PKG_ENERGY_STATUS ,
3203
+ kvm_rdmsr_pkg_energy_status , NULL );
3204
+ if (ret < 0 ) {
3205
+ error_report ("Could not install MSR_PKG_ENERGY_STATUS handler: %s" ,
3206
+ strerror ( - ret ) );
3202
3207
exit (1 );
3203
3208
}
3204
3209
}
@@ -5841,13 +5846,13 @@ void kvm_arch_update_guest_debug(CPUState *cpu, struct kvm_guest_debug *dbg)
5841
5846
}
5842
5847
}
5843
5848
5844
- static bool kvm_install_msr_filters (KVMState * s )
5849
+ static int kvm_install_msr_filters (KVMState * s )
5845
5850
{
5846
5851
uint64_t zero = 0 ;
5847
5852
struct kvm_msr_filter filter = {
5848
5853
.flags = KVM_MSR_FILTER_DEFAULT_ALLOW ,
5849
5854
};
5850
- int r , i , j = 0 ;
5855
+ int i , j = 0 ;
5851
5856
5852
5857
for (i = 0 ; i < KVM_MSR_FILTER_MAX_RANGES ; i ++ ) {
5853
5858
KVMMSRHandlers * handler = & msr_handlers [i ];
@@ -5871,18 +5876,13 @@ static bool kvm_install_msr_filters(KVMState *s)
5871
5876
}
5872
5877
}
5873
5878
5874
- r = kvm_vm_ioctl (s , KVM_X86_SET_MSR_FILTER , & filter );
5875
- if (r ) {
5876
- return false;
5877
- }
5878
-
5879
- return true;
5879
+ return kvm_vm_ioctl (s , KVM_X86_SET_MSR_FILTER , & filter );
5880
5880
}
5881
5881
5882
- static bool kvm_filter_msr (KVMState * s , uint32_t msr , QEMURDMSRHandler * rdmsr ,
5883
- QEMUWRMSRHandler * wrmsr )
5882
+ static int kvm_filter_msr (KVMState * s , uint32_t msr , QEMURDMSRHandler * rdmsr ,
5883
+ QEMUWRMSRHandler * wrmsr )
5884
5884
{
5885
- int i ;
5885
+ int i , ret ;
5886
5886
5887
5887
for (i = 0 ; i < ARRAY_SIZE (msr_handlers ); i ++ ) {
5888
5888
if (!msr_handlers [i ].msr ) {
@@ -5892,16 +5892,17 @@ static bool kvm_filter_msr(KVMState *s, uint32_t msr, QEMURDMSRHandler *rdmsr,
5892
5892
.wrmsr = wrmsr ,
5893
5893
};
5894
5894
5895
- if (!kvm_install_msr_filters (s )) {
5895
+ ret = kvm_install_msr_filters (s );
5896
+ if (ret ) {
5896
5897
msr_handlers [i ] = (KVMMSRHandlers ) { };
5897
- return false ;
5898
+ return ret ;
5898
5899
}
5899
5900
5900
- return true ;
5901
+ return 0 ;
5901
5902
}
5902
5903
}
5903
5904
5904
- return false ;
5905
+ return - EINVAL ;
5905
5906
}
5906
5907
5907
5908
static int kvm_handle_rdmsr (X86CPU * cpu , struct kvm_run * run )
0 commit comments