Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 395d31d4 authored by Martin Schwidefsky's avatar Martin Schwidefsky
Browse files

[S390] convert cpu related printks to pr_xxx macros.

parent 74eacdb9
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -17,8 +17,8 @@ CFLAGS_smp.o := -Wno-nonnull
#
CFLAGS_ptrace.o		+= -DUTS_MACHINE='"$(UTS_MACHINE)"'

obj-y	:=  bitmap.o traps.o time.o process.o base.o early.o \
            setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \
obj-y	:=  bitmap.o traps.o time.o process.o base.o early.o setup.o \
	    processor.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \
	    s390_ext.o debug.o irq.o ipl.o dis.o diag.o mem_detect.o \
	    vdso.o vtime.o

+98 −0
Original line number Diff line number Diff line
/*
 *  arch/s390/kernel/processor.c
 *
 *  Copyright IBM Corp. 2008
 *  Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
 */

#define KMSG_COMPONENT "cpu"
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/smp.h>
#include <linux/seq_file.h>
#include <linux/delay.h>

#include <asm/elf.h>
#include <asm/lowcore.h>
#include <asm/param.h>

void __cpuinit print_cpu_info(struct cpuinfo_S390 *cpuinfo)
{
	pr_info("Processor %d started, address %d, identification %06X\n",
		cpuinfo->cpu_nr, cpuinfo->cpu_addr, cpuinfo->cpu_id.ident);
}

/*
 * 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[8] = {
		"esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp",
		"edat"
	};
       struct cpuinfo_S390 *cpuinfo;
       unsigned long n = (unsigned long) v - 1;
       int i;

       s390_adjust_jiffies();
       preempt_disable();
       if (!n) {
	       seq_printf(m, "vendor_id       : IBM/S390\n"
			  "# processors    : %i\n"
			  "bogomips per cpu: %lu.%02lu\n",
			  num_online_cpus(), loops_per_jiffy/(500000/HZ),
			  (loops_per_jiffy/(5000/HZ))%100);
	       seq_puts(m, "features\t: ");
	       for (i = 0; i < 8; i++)
		       if (hwcap_str[i] && (elf_hwcap & (1UL << i)))
			       seq_printf(m, "%s ", hwcap_str[i]);
	       seq_puts(m, "\n");
       }

       if (cpu_online(n)) {
#ifdef CONFIG_SMP
	       if (smp_processor_id() == n)
		       cpuinfo = &S390_lowcore.cpu_data;
	       else
		       cpuinfo = &lowcore_ptr[n]->cpu_data;
#else
	       cpuinfo = &S390_lowcore.cpu_data;
#endif
	       seq_printf(m, "processor %li: "
			  "version = %02X,  "
			  "identification = %06X,  "
			  "machine = %04X\n",
			  n, cpuinfo->cpu_id.version,
			  cpuinfo->cpu_id.ident,
			  cpuinfo->cpu_id.machine);
       }
       preempt_enable();
       return 0;
}

static void *c_start(struct seq_file *m, loff_t *pos)
{
	return *pos < NR_CPUS ? (void *)((unsigned long) *pos + 1) : NULL;
}

static void *c_next(struct seq_file *m, void *v, loff_t *pos)
{
	++*pos;
	return c_start(m, pos);
}

static void c_stop(struct seq_file *m, void *v)
{
}

const struct seq_operations cpuinfo_op = {
	.start	= c_start,
	.next	= c_next,
	.stop	= c_stop,
	.show	= show_cpuinfo,
};
+0 −88
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@
#include <linux/bootmem.h>
#include <linux/root_dev.h>
#include <linux/console.h>
#include <linux/seq_file.h>
#include <linux/kernel_stat.h>
#include <linux/device.h>
#include <linux/notifier.h>
@@ -829,90 +828,3 @@ setup_arch(char **cmdline_p)
	/* Setup zfcpdump support */
	setup_zfcpdump(console_devno);
}

void __cpuinit print_cpu_info(struct cpuinfo_S390 *cpuinfo)
{
   printk(KERN_INFO "cpu %d "
#ifdef CONFIG_SMP
           "phys_idx=%d "
#endif
           "vers=%02X ident=%06X machine=%04X unused=%04X\n",
           cpuinfo->cpu_nr,
#ifdef CONFIG_SMP
           cpuinfo->cpu_addr,
#endif
           cpuinfo->cpu_id.version,
           cpuinfo->cpu_id.ident,
           cpuinfo->cpu_id.machine,
           cpuinfo->cpu_id.unused);
}

/*
 * 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[8] = {
		"esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp",
		"edat"
	};
        struct cpuinfo_S390 *cpuinfo;
	unsigned long n = (unsigned long) v - 1;
	int i;

	s390_adjust_jiffies();
	preempt_disable();
	if (!n) {
		seq_printf(m, "vendor_id       : IBM/S390\n"
			       "# processors    : %i\n"
			       "bogomips per cpu: %lu.%02lu\n",
			       num_online_cpus(), loops_per_jiffy/(500000/HZ),
			       (loops_per_jiffy/(5000/HZ))%100);
		seq_puts(m, "features\t: ");
		for (i = 0; i < 8; i++)
			if (hwcap_str[i] && (elf_hwcap & (1UL << i)))
				seq_printf(m, "%s ", hwcap_str[i]);
		seq_puts(m, "\n");
	}

	if (cpu_online(n)) {
#ifdef CONFIG_SMP
		if (smp_processor_id() == n)
			cpuinfo = &S390_lowcore.cpu_data;
		else
			cpuinfo = &lowcore_ptr[n]->cpu_data;
#else
		cpuinfo = &S390_lowcore.cpu_data;
#endif
		seq_printf(m, "processor %li: "
			       "version = %02X,  "
			       "identification = %06X,  "
			       "machine = %04X\n",
			       n, cpuinfo->cpu_id.version,
			       cpuinfo->cpu_id.ident,
			       cpuinfo->cpu_id.machine);
	}
	preempt_enable();
        return 0;
}

static void *c_start(struct seq_file *m, loff_t *pos)
{
	return *pos < NR_CPUS ? (void *)((unsigned long) *pos + 1) : NULL;
}
static void *c_next(struct seq_file *m, void *v, loff_t *pos)
{
	++*pos;
	return c_start(m, pos);
}
static void c_stop(struct seq_file *m, void *v)
{
}
const struct seq_operations cpuinfo_op = {
	.start	= c_start,
	.next	= c_next,
	.stop	= c_stop,
	.show	= show_cpuinfo,
};
+8 −9
Original line number Diff line number Diff line
@@ -20,6 +20,9 @@
 * cpu_number_map in other architectures.
 */

#define KMSG_COMPONENT "cpu"
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt

#include <linux/module.h>
#include <linux/init.h>
#include <linux/mm.h>
@@ -251,8 +254,8 @@ static void __init smp_get_save_area(unsigned int cpu, unsigned int phy_cpu)
	if (ipl_info.type != IPL_TYPE_FCP_DUMP)
		return;
	if (cpu >= NR_CPUS) {
		printk(KERN_WARNING "Registers for cpu %i not saved since dump "
		       "kernel was compiled with NR_CPUS=%i\n", cpu, NR_CPUS);
		pr_warning("CPU %i exceeds the maximum %i and is excluded from "
			   "the dump\n", cpu, NR_CPUS - 1);
		return;
	}
	zfcpdump_save_areas[cpu] = kmalloc(sizeof(union save_area), GFP_KERNEL);
@@ -425,7 +428,7 @@ static void __init smp_detect_cpus(void)
	}
out:
	kfree(info);
	printk(KERN_INFO "CPUs: %d configured, %d standby\n", c_cpus, s_cpus);
	pr_info("%d configured CPUs, %d standby CPUs\n", c_cpus, s_cpus);
	get_online_cpus();
	__smp_rescan_cpus();
	put_online_cpus();
@@ -548,12 +551,8 @@ int __cpuinit __cpu_up(unsigned int cpu)

	ccode = signal_processor_p((__u32)(unsigned long)(lowcore_ptr[cpu]),
				   cpu, sigp_set_prefix);
	if (ccode) {
		printk("sigp_set_prefix failed for cpu %d "
		       "with condition code %d\n",
		       (int) cpu, (int) ccode);
	if (ccode)
		return -EIO;
	}

	idle = current_set[cpu];
	cpu_lowcore = lowcore_ptr[cpu];
@@ -636,7 +635,7 @@ void __cpu_die(unsigned int cpu)
	while (!smp_cpu_not_running(cpu))
		cpu_relax();
	smp_free_lowcore(cpu);
	printk(KERN_INFO "Processor %d spun down\n", cpu);
	pr_info("Processor %d stopped\n", cpu);
}

void cpu_die(void)
+4 −1
Original line number Diff line number Diff line
@@ -3,6 +3,9 @@
 *    Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
 */

#define KMSG_COMPONENT "cpu"
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt

#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/init.h>
@@ -306,7 +309,7 @@ void __init s390_init_cpu_topology(void)
	for (i = 0; i < info->mnest - 2; i++)
		nr_cores *= info->mag[NR_MAG - 3 - i];

	printk(KERN_INFO "CPU topology:");
	pr_info("The CPU configuration topology of the machine is:");
	for (i = 0; i < NR_MAG; i++)
		printk(" %d", info->mag[i]);
	printk(" / %d\n", info->mnest);