diff mbox

[v8,API-NEXT,10/12] linux-generic: sysinfo: apply per-CPU implementation to MIPS

Message ID 1453884974-24724-11-git-send-email-hongbo.zhang@linaro.org
State Superseded
Headers show

Commit Message

Hongbo Zhang Jan. 27, 2016, 8:56 a.m. UTC
From: Hongbo Zhang <hongbo.zhang@linaro.org>

When per-CPU framework was introduced, it was only implemented on x86,
for other platforms, only the model_str[0] and cpu_hz[0] are set to pass
compile, this patch set all values for model_str[] and cpu_hz[] on the
MIPS platform.

Signed-off-by: Hongbo Zhang <hongbo.zhang@linaro.org>
---
 .../linux-generic/arch/mips64/odp_sysinfo_parse.c  | 28 +++++++++++++++-------
 1 file changed, 19 insertions(+), 9 deletions(-)
diff mbox

Patch

diff --git a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
index dcecbb9..64d65d2 100644
--- a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
@@ -12,17 +12,23 @@  int odp_cpuinfo_parser(FILE *file, odp_system_info_t *sysinfo)
 	char str[1024];
 	char *pos;
 	double mhz = 0.0;
+	uint64_t hz;
 	int model = 0;
 	int count = 2;
+	int id = 0;
 
 	strcpy(sysinfo->cpu_arch_str, "mips64");
-	while (fgets(str, sizeof(str), file) != NULL && count > 0) {
+	while (fgets(str, sizeof(str), file) != NULL && id < MAX_CPU_NUMBER) {
 		if (!mhz) {
 			pos = strstr(str, "BogoMIPS");
 
 			if (pos)
-				if (sscanf(pos, "BogoMIPS : %lf", &mhz) == 1)
+				if (sscanf(pos, "BogoMIPS : %lf", &mhz) == 1) {
+					/* bogomips seems to be 2x freq */
+					hz = (uint64_t)(mhz * 1000000.0 / 2.0);
+					sysinfo->cpu_hz[id] = hz;
 					count--;
+				}
 		}
 
 		if (!model) {
@@ -32,18 +38,22 @@  int odp_cpuinfo_parser(FILE *file, odp_system_info_t *sysinfo)
 				int len;
 
 				pos = strchr(str, ':');
-				strncpy(sysinfo->model_str[0], pos + 2,
-					sizeof(sysinfo->model_str[0]));
-				len = strlen(sysinfo->model_str[0]);
-				sysinfo->model_str[0][len - 1] = 0;
+				strncpy(sysinfo->model_str[id], pos + 2,
+					sizeof(sysinfo->model_str[id]));
+				len = strlen(sysinfo->model_str[id]);
+				sysinfo->model_str[id][len - 1] = 0;
 				model = 1;
 				count--;
 			}
 		}
-	}
 
-	/* bogomips seems to be 2x freq */
-	sysinfo->cpu_hz[0] = (uint64_t)(mhz * 1000000.0 / 2.0);
+		if (count == 0) {
+			mhz = 0.0;
+			model = 0;
+			count = 2;
+			id++;
+		}
+	}
 
 	return 0;
 }