diff options
Diffstat (limited to 'arch/sh/kernel/setup.c')
| -rw-r--r-- | arch/sh/kernel/setup.c | 162 | 
1 files changed, 11 insertions, 151 deletions
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index d6b018c7ebd..de19cfa768f 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c @@ -12,7 +12,6 @@  #include <linux/initrd.h>  #include <linux/bootmem.h>  #include <linux/console.h> -#include <linux/seq_file.h>  #include <linux/root_dev.h>  #include <linux/utsname.h>  #include <linux/nodemask.h> @@ -151,7 +150,7 @@ void __init check_for_initrd(void)  	}  	/* -	 * If we got this far inspite of the boot loader's best efforts +	 * If we got this far in spite of the boot loader's best efforts  	 * to the contrary, assume we actually have a valid initrd and  	 * fix up the root dev.  	 */ @@ -173,7 +172,7 @@ disable:  #endif  } -void __cpuinit calibrate_delay(void) +void calibrate_delay(void)  {  	struct clk *clk = clk_get(NULL, "cpu_clk"); @@ -212,13 +211,16 @@ void __init __add_active_range(unsigned int nid, unsigned long start_pfn,  	}  	/* -	 *  We don't know which RAM region contains kernel data, -	 *  so we try it repeatedly and let the resource manager -	 *  test it. +	 * We don't know which RAM region contains kernel data or +	 * the reserved crashkernel region, so try it repeatedly +	 * and let the resource manager test it.  	 */  	request_resource(res, &code_resource);  	request_resource(res, &data_resource);  	request_resource(res, &bss_resource); +#ifdef CONFIG_KEXEC +	request_resource(res, &crashk_res); +#endif  	/*  	 * Also make sure that there is a PMB mapping that covers this @@ -228,7 +230,8 @@ void __init __add_active_range(unsigned int nid, unsigned long start_pfn,  	pmb_bolt_mapping((unsigned long)__va(start), start, end - start,  			 PAGE_KERNEL); -	add_active_range(nid, start_pfn, end_pfn); +	memblock_set_node(PFN_PHYS(start_pfn), PFN_PHYS(end_pfn - start_pfn), +			  &memblock.memory, nid);  }  void __init __weak plat_early_device_setup(void) @@ -270,7 +273,7 @@ void __init setup_arch(char **cmdline_p)  	data_resource.start = virt_to_phys(_etext);  	data_resource.end = virt_to_phys(_edata)-1;  	bss_resource.start = virt_to_phys(__bss_start); -	bss_resource.end = virt_to_phys(_ebss)-1; +	bss_resource.end = virt_to_phys(__bss_stop)-1;  #ifdef CONFIG_CMDLINE_OVERWRITE  	strlcpy(command_line, CONFIG_CMDLINE, sizeof(command_line)); @@ -319,146 +322,3 @@ int test_mode_pin(int pin)  {  	return sh_mv.mv_mode_pins() & pin;  } - -static const char *cpu_name[] = { -	[CPU_SH7201]	= "SH7201", -	[CPU_SH7203]	= "SH7203",	[CPU_SH7263]	= "SH7263", -	[CPU_SH7206]	= "SH7206",	[CPU_SH7619]	= "SH7619", -	[CPU_SH7705]	= "SH7705",	[CPU_SH7706]	= "SH7706", -	[CPU_SH7707]	= "SH7707",	[CPU_SH7708]	= "SH7708", -	[CPU_SH7709]	= "SH7709",	[CPU_SH7710]	= "SH7710", -	[CPU_SH7712]	= "SH7712",	[CPU_SH7720]	= "SH7720", -	[CPU_SH7721]	= "SH7721",	[CPU_SH7729]	= "SH7729", -	[CPU_SH7750]	= "SH7750",	[CPU_SH7750S]	= "SH7750S", -	[CPU_SH7750R]	= "SH7750R",	[CPU_SH7751]	= "SH7751", -	[CPU_SH7751R]	= "SH7751R",	[CPU_SH7760]	= "SH7760", -	[CPU_SH4_202]	= "SH4-202",	[CPU_SH4_501]	= "SH4-501", -	[CPU_SH7763]	= "SH7763",	[CPU_SH7770]	= "SH7770", -	[CPU_SH7780]	= "SH7780",	[CPU_SH7781]	= "SH7781", -	[CPU_SH7343]	= "SH7343",	[CPU_SH7785]	= "SH7785", -	[CPU_SH7786]	= "SH7786",	[CPU_SH7757]	= "SH7757", -	[CPU_SH7722]	= "SH7722",	[CPU_SHX3]	= "SH-X3", -	[CPU_SH5_101]	= "SH5-101",	[CPU_SH5_103]	= "SH5-103", -	[CPU_MXG]	= "MX-G",	[CPU_SH7723]	= "SH7723", -	[CPU_SH7366]	= "SH7366",	[CPU_SH7724]	= "SH7724", -	[CPU_SH_NONE]	= "Unknown" -}; - -const char *get_cpu_subtype(struct sh_cpuinfo *c) -{ -	return cpu_name[c->type]; -} -EXPORT_SYMBOL(get_cpu_subtype); - -#ifdef CONFIG_PROC_FS -/* Symbolic CPU flags, keep in sync with asm/cpu-features.h */ -static const char *cpu_flags[] = { -	"none", "fpu", "p2flush", "mmuassoc", "dsp", "perfctr", -	"ptea", "llsc", "l2", "op32", "pteaex", NULL -}; - -static void show_cpuflags(struct seq_file *m, struct sh_cpuinfo *c) -{ -	unsigned long i; - -	seq_printf(m, "cpu flags\t:"); - -	if (!c->flags) { -		seq_printf(m, " %s\n", cpu_flags[0]); -		return; -	} - -	for (i = 0; cpu_flags[i]; i++) -		if ((c->flags & (1 << i))) -			seq_printf(m, " %s", cpu_flags[i+1]); - -	seq_printf(m, "\n"); -} - -static void show_cacheinfo(struct seq_file *m, const char *type, -			   struct cache_info info) -{ -	unsigned int cache_size; - -	cache_size = info.ways * info.sets * info.linesz; - -	seq_printf(m, "%s size\t: %2dKiB (%d-way)\n", -		   type, cache_size >> 10, info.ways); -} - -/* - *	Get CPU information for use by the procfs. - */ -static int show_cpuinfo(struct seq_file *m, void *v) -{ -	struct sh_cpuinfo *c = v; -	unsigned int cpu = c - cpu_data; - -	if (!cpu_online(cpu)) -		return 0; - -	if (cpu == 0) -		seq_printf(m, "machine\t\t: %s\n", get_system_type()); -	else -		seq_printf(m, "\n"); - -	seq_printf(m, "processor\t: %d\n", cpu); -	seq_printf(m, "cpu family\t: %s\n", init_utsname()->machine); -	seq_printf(m, "cpu type\t: %s\n", get_cpu_subtype(c)); -	if (c->cut_major == -1) -		seq_printf(m, "cut\t\t: unknown\n"); -	else if (c->cut_minor == -1) -		seq_printf(m, "cut\t\t: %d.x\n", c->cut_major); -	else -		seq_printf(m, "cut\t\t: %d.%d\n", c->cut_major, c->cut_minor); - -	show_cpuflags(m, c); - -	seq_printf(m, "cache type\t: "); - -	/* -	 * Check for what type of cache we have, we support both the -	 * unified cache on the SH-2 and SH-3, as well as the harvard -	 * style cache on the SH-4. -	 */ -	if (c->icache.flags & SH_CACHE_COMBINED) { -		seq_printf(m, "unified\n"); -		show_cacheinfo(m, "cache", c->icache); -	} else { -		seq_printf(m, "split (harvard)\n"); -		show_cacheinfo(m, "icache", c->icache); -		show_cacheinfo(m, "dcache", c->dcache); -	} - -	/* Optional secondary cache */ -	if (c->flags & CPU_HAS_L2_CACHE) -		show_cacheinfo(m, "scache", c->scache); - -	seq_printf(m, "address sizes\t: %u bits physical\n", c->phys_bits); - -	seq_printf(m, "bogomips\t: %lu.%02lu\n", -		     c->loops_per_jiffy/(500000/HZ), -		     (c->loops_per_jiffy/(5000/HZ)) % 100); - -	return 0; -} - -static void *c_start(struct seq_file *m, loff_t *pos) -{ -	return *pos < NR_CPUS ? cpu_data + *pos : 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, -}; -#endif /* CONFIG_PROC_FS */  | 
