target/i386/kvm: Return -1 when kvm_msr_energy_thread_init() fails

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>
Link: https://lore.kernel.org/r/20241106030728.553238-10-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Zhao Liu 2024-11-06 11:07:26 +08:00 committed by Paolo Bonzini
parent fb81c9cfdd
commit d7f895cb62

View File

@ -2936,7 +2936,6 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
{ {
MachineClass *mc = MACHINE_GET_CLASS(ms); MachineClass *mc = MACHINE_GET_CLASS(ms);
struct KVMMsrEnergy *r = &s->msr_energy; struct KVMMsrEnergy *r = &s->msr_energy;
int ret = 0;
/* /*
* Sanity check * Sanity check
@ -2946,13 +2945,11 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
if (!is_host_cpu_intel()) { if (!is_host_cpu_intel()) {
error_report("The RAPL feature can only be enabled on hosts " error_report("The RAPL feature can only be enabled on hosts "
"with Intel CPU models"); "with Intel CPU models");
ret = 1; return -1;
goto out;
} }
if (!is_rapl_enabled()) { if (!is_rapl_enabled()) {
ret = 1; return -1;
goto out;
} }
/* Retrieve the virtual topology */ /* Retrieve the virtual topology */
@ -2974,16 +2971,14 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
r->host_topo.maxcpus = vmsr_get_maxcpus(); r->host_topo.maxcpus = vmsr_get_maxcpus();
if (r->host_topo.maxcpus == 0) { if (r->host_topo.maxcpus == 0) {
error_report("host max cpus = 0"); error_report("host max cpus = 0");
ret = 1; return -1;
goto out;
} }
/* Max number of packages on the host */ /* Max number of packages on the host */
r->host_topo.maxpkgs = vmsr_get_max_physical_package(r->host_topo.maxcpus); r->host_topo.maxpkgs = vmsr_get_max_physical_package(r->host_topo.maxcpus);
if (r->host_topo.maxpkgs == 0) { if (r->host_topo.maxpkgs == 0) {
error_report("host max pkgs = 0"); error_report("host max pkgs = 0");
ret = 1; return -1;
goto out;
} }
/* Allocate memory for each package on the host */ /* Allocate memory for each package on the host */
@ -2995,8 +2990,7 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
for (int i = 0; i < r->host_topo.maxpkgs; i++) { for (int i = 0; i < r->host_topo.maxpkgs; i++) {
if (r->host_topo.pkg_cpu_count[i] == 0) { if (r->host_topo.pkg_cpu_count[i] == 0) {
error_report("cpu per packages = 0 on package_%d", i); error_report("cpu per packages = 0 on package_%d", i);
ret = 1; return -1;
goto out;
} }
} }
@ -3013,8 +3007,7 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
if (s->msr_energy.sioc == NULL) { if (s->msr_energy.sioc == NULL) {
error_report("vmsr socket opening failed"); error_report("vmsr socket opening failed");
ret = 1; return -1;
goto out;
} }
/* Those MSR values should not change */ /* Those MSR values should not change */
@ -3026,15 +3019,13 @@ static int kvm_msr_energy_thread_init(KVMState *s, MachineState *ms)
s->msr_energy.sioc); s->msr_energy.sioc);
if (r->msr_unit == 0 || r->msr_limit == 0 || r->msr_info == 0) { if (r->msr_unit == 0 || r->msr_limit == 0 || r->msr_info == 0) {
error_report("can't read any virtual msr"); error_report("can't read any virtual msr");
ret = 1; return -1;
goto out;
} }
qemu_thread_create(&r->msr_thr, "kvm-msr", qemu_thread_create(&r->msr_thr, "kvm-msr",
kvm_msr_energy_thread, kvm_msr_energy_thread,
s, QEMU_THREAD_JOINABLE); s, QEMU_THREAD_JOINABLE);
out: return 0;
return ret;
} }
int kvm_arch_get_default_type(MachineState *ms) int kvm_arch_get_default_type(MachineState *ms)
@ -3342,7 +3333,9 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
if (s->msr_energy.enable == true) { if (s->msr_energy.enable == true) {
kvm_vm_enable_energy_msrs(s); 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"); error_report("kvm : error RAPL feature requirement not met");
exit(1); exit(1);
} }