summaryrefslogtreecommitdiffstats
path: root/src/hardware/LMI_ProcessorCapabilitiesProvider.c
diff options
context:
space:
mode:
authorPeter Schiffer <pschiffe@redhat.com>2014-01-28 18:21:44 +0100
committerPeter Schiffer <pschiffe@redhat.com>2014-01-28 18:21:44 +0100
commitd2e3f8517d5dc4e4ba8a06afe38425be149b7844 (patch)
tree348ad7eaedfb1ad07e63120b2a38ff3f20a8d331 /src/hardware/LMI_ProcessorCapabilitiesProvider.c
parent8cc62ef0aec1770f0d01f09ffca50fedd6d21cab (diff)
downloadopenlmi-providers-d2e3f8517d5dc4e4ba8a06afe38425be149b7844.tar.gz
openlmi-providers-d2e3f8517d5dc4e4ba8a06afe38425be149b7844.tar.xz
openlmi-providers-d2e3f8517d5dc4e4ba8a06afe38425be149b7844.zip
Hardware: add cpu cores and threads fallback
If dmidecode doesn't report correct cpu cores or cpu threads, use the values from lscpu.
Diffstat (limited to 'src/hardware/LMI_ProcessorCapabilitiesProvider.c')
-rw-r--r--src/hardware/LMI_ProcessorCapabilitiesProvider.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/hardware/LMI_ProcessorCapabilitiesProvider.c b/src/hardware/LMI_ProcessorCapabilitiesProvider.c
index ba7b1b9..906b7c2 100644
--- a/src/hardware/LMI_ProcessorCapabilitiesProvider.c
+++ b/src/hardware/LMI_ProcessorCapabilitiesProvider.c
@@ -70,11 +70,10 @@ static CMPIStatus LMI_ProcessorCapabilitiesEnumInstances(
if (dmi_get_processors(&dmi_cpus, &dmi_cpus_nb) != 0 || dmi_cpus_nb < 1) {
dmi_free_processors(&dmi_cpus, &dmi_cpus_nb);
-
- if (lscpu_get_processor(&lscpu) != 0) {
- error_msg = "Unable to get processor information.";
- goto done;
- }
+ }
+ if (lscpu_get_processor(&lscpu) != 0) {
+ error_msg = "Unable to get processor information.";
+ goto done;
}
if (dmi_cpus_nb > 0) {
@@ -103,7 +102,11 @@ static CMPIStatus LMI_ProcessorCapabilitiesEnumInstances(
ORGID ":" ORGID "_" CPU_CAP_CLASS_NAME ":%u", i);
snprintf(element_name, ELEMENT_NAME_LEN, "%s%u",
element_name_string, i);
+ }
+ if (cores < lscpu.cores) {
cores = lscpu.cores;
+ }
+ if (threads < lscpu.threads_per_core * lscpu.cores) {
threads = lscpu.threads_per_core * lscpu.cores;
}
@@ -124,11 +127,8 @@ static CMPIStatus LMI_ProcessorCapabilitiesEnumInstances(
}
done:
- /* free lscpu only if it was used */
- if (dmi_cpus_nb < 1) {
- lscpu_free_processor(&lscpu);
- }
dmi_free_processors(&dmi_cpus, &dmi_cpus_nb);
+ lscpu_free_processor(&lscpu);
if (error_msg) {
KReturn2(_cb, ERR_FAILED, "%s", error_msg);