Commit 219a21b3 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky

s390/cpuinfo: print cache info and all single cpu lines on first iteration

Change the code to print all the current output during the first
iteration. This is a preparation patch for the upcoming per cpu block
extension to /proc/cpuinfo.
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent ac314184
...@@ -53,10 +53,7 @@ int cpu_have_feature(unsigned int num) ...@@ -53,10 +53,7 @@ int cpu_have_feature(unsigned int num)
} }
EXPORT_SYMBOL(cpu_have_feature); EXPORT_SYMBOL(cpu_have_feature);
/* static void show_cpu_summary(struct seq_file *m, void *v)
* show_cpuinfo - Get information on one CPU for use by procfs.
*/
static int show_cpuinfo(struct seq_file *m, void *v)
{ {
static const char *hwcap_str[] = { static const char *hwcap_str[] = {
"esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp",
...@@ -65,34 +62,43 @@ static int show_cpuinfo(struct seq_file *m, void *v) ...@@ -65,34 +62,43 @@ static int show_cpuinfo(struct seq_file *m, void *v)
static const char * const int_hwcap_str[] = { static const char * const int_hwcap_str[] = {
"sie" "sie"
}; };
unsigned long n = (unsigned long) v - 1; int i, cpu;
int i;
s390_adjust_jiffies();
if (!n) { seq_printf(m, "vendor_id : IBM/S390\n"
s390_adjust_jiffies(); "# processors : %i\n"
seq_printf(m, "vendor_id : IBM/S390\n" "bogomips per cpu: %lu.%02lu\n",
"# processors : %i\n" num_online_cpus(), loops_per_jiffy/(500000/HZ),
"bogomips per cpu: %lu.%02lu\n", (loops_per_jiffy/(5000/HZ))%100);
num_online_cpus(), loops_per_jiffy/(500000/HZ), seq_puts(m, "features\t: ");
(loops_per_jiffy/(5000/HZ))%100); for (i = 0; i < ARRAY_SIZE(hwcap_str); i++)
seq_puts(m, "features\t: "); if (hwcap_str[i] && (elf_hwcap & (1UL << i)))
for (i = 0; i < ARRAY_SIZE(hwcap_str); i++) seq_printf(m, "%s ", hwcap_str[i]);
if (hwcap_str[i] && (elf_hwcap & (1UL << i))) for (i = 0; i < ARRAY_SIZE(int_hwcap_str); i++)
seq_printf(m, "%s ", hwcap_str[i]); if (int_hwcap_str[i] && (int_hwcap & (1UL << i)))
for (i = 0; i < ARRAY_SIZE(int_hwcap_str); i++) seq_printf(m, "%s ", int_hwcap_str[i]);
if (int_hwcap_str[i] && (int_hwcap & (1UL << i))) seq_puts(m, "\n");
seq_printf(m, "%s ", int_hwcap_str[i]); show_cacheinfo(m);
seq_puts(m, "\n"); for_each_online_cpu(cpu) {
show_cacheinfo(m); struct cpuid *id = &per_cpu(cpu_id, cpu);
}
if (cpu_online(n)) { seq_printf(m, "processor %d: "
struct cpuid *id = &per_cpu(cpu_id, n);
seq_printf(m, "processor %li: "
"version = %02X, " "version = %02X, "
"identification = %06X, " "identification = %06X, "
"machine = %04X\n", "machine = %04X\n",
n, id->version, id->ident, id->machine); cpu, id->version, id->ident, id->machine);
} }
}
/*
* show_cpuinfo - Get information on one CPU for use by procfs.
*/
static int show_cpuinfo(struct seq_file *m, void *v)
{
unsigned long n = (unsigned long) v - 1;
if (!n)
show_cpu_summary(m, v);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment