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:
parent
fb81c9cfdd
commit
d7f895cb62
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user