@@ -2921,7 +2921,6 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
{
MachineClass *mc = MACHINE_GET_CLASS(ms);
struct KVMMsrEnergy *r = &s->msr_energy;
- int ret = 0;
/*
* Sanity check
@@ -2931,13 +2930,11 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
if (!is_host_cpu_intel()) {
error_report("The RAPL feature can only be enabled on hosts "
"with Intel CPU models");
- ret = 1;
- goto out;
+ return -1;
}
if (!is_rapl_enabled()) {
- ret = 1;
- goto out;
+ return -1;
}
/* Retrieve the virtual topology */
@@ -2959,16 +2956,14 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
r->host_topo.maxcpus = vmsr_get_maxcpus();
if (r->host_topo.maxcpus == 0) {
error_report("host max cpus = 0");
- ret = 1;
- goto out;
+ return -1;
}
/* Max number of packages on the host */
r->host_topo.maxpkgs = vmsr_get_max_physical_package(r->host_topo.maxcpus);
if (r->host_topo.maxpkgs == 0) {
error_report("host max pkgs = 0");
- ret = 1;
- goto out;
+ return -1;
}
/* Allocate memory for each package on the host */
@@ -2980,8 +2975,7 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
for (int i = 0; i < r->host_topo.maxpkgs; i++) {
if (r->host_topo.pkg_cpu_count[i] == 0) {
error_report("cpu per packages = 0 on package_%d", i);
- ret = 1;
- goto out;
+ return -1;
}
}
@@ -2998,8 +2992,7 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
if (s->msr_energy.sioc == NULL) {
error_report("vmsr socket opening failed");
- ret = 1;
- goto out;
+ return -1;
}
/* Those MSR values should not change */
@@ -3011,15 +3004,13 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
s->msr_energy.sioc);
if (r->msr_unit == 0 || r->msr_limit == 0 || r->msr_info == 0) {
error_report("can't read any virtual msr");
- ret = 1;
- goto out;
+ return -1;
}
qemu_thread_create(&r->msr_thr, "kvm-msr",
kvm_msr_energy_thread,
s, QEMU_THREAD_JOINABLE);
-out:
- return ret;
+ return 0;
}
int kvm_arch_get_default_type(MachineState *ms)
@@ -3327,7 +3318,9 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
if (s->msr_energy.enable == true) {
kvm_vm_enable_energy_msrs(s);
- if (kvm_msr_energy_thread_init(s, ms)) {
+
+ ret = kvm_msr_energy_thread_init(s, ms);
+ if (ret < 0) {
error_report("kvm : error RAPL feature requirement not met");
exit(1);
}
It is common practice to return a negative value (like -1) to indicate an error, and other functions in kvm_arch_init() follow this style. To avoid confusion (sometimes returned -1 indicates failure, and sometimes -1, in a same function), return -1 when kvm_msr_energy_thread_init() fails. Signed-off-by: Zhao Liu <zhao1.liu@intel.com> --- v5: new commit. --- target/i386/kvm/kvm.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-)