x86: make get_mode_name of 64bit the same as 32bit
authorYinghai Lu <yhlu.kernel@gmail.com>
Thu, 4 Sep 2008 19:09:46 +0000 (21:09 +0200)
committerIngo Molnar <mingo@elte.hu>
Thu, 4 Sep 2008 19:09:46 +0000 (21:09 +0200)
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/common_64.c

index b82479c108359d3326a608df8dc7e3f7c4a38daa..f1fb94e766bbdf8ec4b2d977505bf450da06f638 100644 (file)
@@ -83,6 +83,7 @@ static struct cpu_dev *this_cpu __cpuinitdata;
 int __cpuinit get_model_name(struct cpuinfo_x86 *c)
 {
        unsigned int *v;
+       char *p, *q;
 
        if (c->extended_cpuid_level < 0x80000004)
                return 0;
@@ -92,6 +93,19 @@ int __cpuinit get_model_name(struct cpuinfo_x86 *c)
        cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]);
        cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]);
        c->x86_model_id[48] = 0;
+
+       /* Intel chips right-justify this string for some dumb reason;
+          undo that brain damage */
+       p = q = &c->x86_model_id[0];
+       while (*p == ' ')
+            p++;
+       if (p != q) {
+            while (*p)
+                 *q++ = *p++;
+            while (q <= &c->x86_model_id[48])
+                 *q++ = '\0';  /* Zero-pad the rest */
+       }
+
        return 1;
 }