From 4dd24b2fc1aa7bb8dfebd74ebbf4136d56d150bb Mon Sep 17 00:00:00 2001 From: Vitezslav Crhonek Date: Thu, 6 Jun 2013 16:08:05 +0200 Subject: [PATCH] Fix incorrect max cpu frequency --- sblim-cmpi-base-1.6.2-max-cpu-frequency.patch | 64 +++++++++++++++++++ sblim-cmpi-base.spec | 8 ++- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 sblim-cmpi-base-1.6.2-max-cpu-frequency.patch diff --git a/sblim-cmpi-base-1.6.2-max-cpu-frequency.patch b/sblim-cmpi-base-1.6.2-max-cpu-frequency.patch new file mode 100644 index 0000000..9935d11 --- /dev/null +++ b/sblim-cmpi-base-1.6.2-max-cpu-frequency.patch @@ -0,0 +1,64 @@ +diff --git a/OSBase_Processor.c b/OSBase_Processor.c +index 9556a77..bae0e32 100644 +--- a/OSBase_Processor.c ++++ b/OSBase_Processor.c +@@ -36,8 +36,9 @@ static int _processor_data( int, struct cim_processor ** ); + static unsigned short _processor_family( int ); + static unsigned short _processor_load_perc( int ); + + char * CPUINFO = "/proc/cpuinfo"; ++char * CPUMAXFREQ = "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"; + + //char * CPUINFO = "/home/heidineu/local/sblim/cmpi-base-cpuinfo/x86_ibm_xSeries_2x"; + //char * CPUINFO = "/home/heidineu/local/sblim/cmpi-base-cpuinfo/x86_ibm_xSeries_4x"; + //char * CPUINFO = "/home/heidineu/local/sblim/cmpi-base-cpuinfo/x86_64_AMD"; +@@ -246,8 +247,11 @@ static int _processor_data( int id, struct cim_processor ** sptr ) { + char * ptr = NULL; + int count = 0; + int lines = 0; + int rc = 0; ++ char * maxcpufreq = NULL; ++ unsigned long maxMHz = 0; ++ FILE *fp; + + _OSBASE_TRACE(4,("--- _processor_data() called")); + + count = id; +@@ -345,8 +349,20 @@ static int _processor_data( int id, struct cim_processor ** sptr ) { + cmd = (char *)malloc((strlen(CPUINFO)+64)); + strcpy(cmd, "cat "); + strcat(cmd, CPUINFO); + #if defined (INTEL) || defined (X86_64) || defined (IA64) ++ /* if /sys/devices/system/cpu/cpu(id]/cpufreq/cpuinfo_max_freq exists */ ++ /* then calculate MaxClockSpeed from there, otherwise the cpufreq module */ ++ /* is not loaded, and /proc/cpuinfo always shows maximum speed */ ++ maxcpufreq = malloc((strlen(CPUMAXFREQ)+5)); ++ sprintf(maxcpufreq, "/sys/devices/system/cpu/cpu%d/cpufreq/cpuinfo_max_freq", id); ++ if ((fp = fopen(maxcpufreq, "r")) > 0) { ++ if (1 == fscanf(fp, "%lu", &maxMHz)) { ++ maxMHz = maxMHz / 1000; ++ _OSBASE_TRACE(3,("--- _processor_data() maxMHz = %lu", maxMHz)); ++ } ++ fclose(fp); ++ } + strcat(cmd, " | grep 'cpu MHz'"); + rc = runcommand( cmd, NULL, &hdout, NULL ); + #elif defined (S390) || defined (MIPS) + rc = 0; /* clock speed cannot be determined on zSeries or mips */ +@@ -379,11 +395,15 @@ static int _processor_data( int id, struct cim_processor ** sptr ) { + ptr = strchr( hdout[id], ':'); + #endif + ptr = ptr+1; + (*sptr)->curClockSpeed = atol(ptr); +- (*sptr)->maxClockSpeed = atol(ptr); ++ if (maxMHz > 0) ++ (*sptr)->maxClockSpeed = maxMHz; ++ else ++ (*sptr)->maxClockSpeed = atol(ptr); + } + freeresultbuf(hdout); ++ if (maxcpufreq) free(maxcpufreq); + if(cmd) free(cmd); + + _OSBASE_TRACE(4,("--- _processor_data() exited")); + return 0; diff --git a/sblim-cmpi-base.spec b/sblim-cmpi-base.spec index caa7be5..0beddbf 100644 --- a/sblim-cmpi-base.spec +++ b/sblim-cmpi-base.spec @@ -1,6 +1,6 @@ Name: sblim-cmpi-base Version: 1.6.2 -Release: 2%{?dist} +Release: 3%{?dist} Summary: SBLIM CMPI Base Providers Group: Applications/System @@ -11,6 +11,8 @@ Patch0: sblim-cmpi-base-1.6.0-missing-fclose.patch Patch1: sblim-cmpi-base-1.6.0-methods-enable.patch Patch2: sblim-cmpi-base-1.6.0-provider-register-sfcb-init.patch Patch3: sblim-cmpi-base-1.6.1-double-fclose.patch +# Patch4: already upstream, http://sourceforge.net/p/sblim/bugs/2634/ +Patch4: sblim-cmpi-base-1.6.2-max-cpu-frequency.patch Requires: cim-server sblim-indication_helper BuildRequires: sblim-cmpi-devel sblim-indication_helper-devel @@ -47,6 +49,7 @@ Testcase Files for the SBLIM Testsuite. %patch1 -p0 -b .methods-enable %patch2 -p1 -b .provider-register-sfcb-init %patch3 -p1 -b .double-fclose +%patch4 -p1 -b .cpu-freq %build %configure TESTSUITEDIR=%{_datadir}/sblim-testsuite --disable-static @@ -176,6 +179,9 @@ fi %postun -p /sbin/ldconfig %changelog +* Thu Jun 06 2013 Vitezslav Crhonek - 1.6.2-3 +- Fix incorrect max cpu frequency + * Thu Feb 14 2013 Fedora Release Engineering - 1.6.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild