[MIPS] Cleanup memory managment initialization.
Historically plat_mem_setup did the entire platform initialization. This was rather impractical because it meant plat_mem_setup had to get away without any kind of memory allocator. To keep old code from breaking plat_setup was just renamed to plat_setup and a second platform initialization hook for anything else was introduced. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
@ -442,6 +442,48 @@ static inline void bootmem_init(void)
|
||||
#endif /* CONFIG_BLK_DEV_INITRD */
|
||||
}
|
||||
|
||||
/*
|
||||
* arch_mem_init - initialize memory managment subsystem
|
||||
*
|
||||
* o plat_mem_setup() detects the memory configuration and will record detected
|
||||
* memory areas using add_memory_region.
|
||||
* o parse_cmdline_early() parses the command line for mem= options which,
|
||||
* iff detected, will override the results of the automatic detection.
|
||||
*
|
||||
* At this stage the memory configuration of the system is known to the
|
||||
* kernel but generic memory managment system is still entirely uninitialized.
|
||||
*
|
||||
* o bootmem_init()
|
||||
* o sparse_init()
|
||||
* o paging_init()
|
||||
*
|
||||
* At this stage the bootmem allocator is ready to use.
|
||||
*
|
||||
* NOTE: historically plat_mem_setup did the entire platform initialization.
|
||||
* This was rather impractical because it meant plat_mem_setup had to
|
||||
* get away without any kind of memory allocator. To keep old code from
|
||||
* breaking plat_setup was just renamed to plat_setup and a second platform
|
||||
* initialization hook for anything else was introduced.
|
||||
*/
|
||||
|
||||
extern void plat_mem_setup(void);
|
||||
|
||||
static void __init arch_mem_init(char **cmdline_p)
|
||||
{
|
||||
/* call board setup routine */
|
||||
plat_mem_setup();
|
||||
|
||||
strlcpy(command_line, arcs_cmdline, sizeof(command_line));
|
||||
strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
|
||||
|
||||
*cmdline_p = command_line;
|
||||
|
||||
parse_cmdline_early();
|
||||
bootmem_init();
|
||||
sparse_init();
|
||||
paging_init();
|
||||
}
|
||||
|
||||
static inline void resource_init(void)
|
||||
{
|
||||
int i;
|
||||
@ -495,8 +537,6 @@ static inline void resource_init(void)
|
||||
#undef MAXMEM
|
||||
#undef MAXMEM_PFN
|
||||
|
||||
extern void plat_setup(void);
|
||||
|
||||
void __init setup_arch(char **cmdline_p)
|
||||
{
|
||||
cpu_probe();
|
||||
@ -511,18 +551,8 @@ void __init setup_arch(char **cmdline_p)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* call board setup routine */
|
||||
plat_setup();
|
||||
arch_mem_init(cmdline_p);
|
||||
|
||||
strlcpy(command_line, arcs_cmdline, sizeof(command_line));
|
||||
strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
|
||||
|
||||
*cmdline_p = command_line;
|
||||
|
||||
parse_cmdline_early();
|
||||
bootmem_init();
|
||||
sparse_init();
|
||||
paging_init();
|
||||
resource_init();
|
||||
#ifdef CONFIG_SMP
|
||||
plat_smp_setup();
|
||||
|
Reference in New Issue
Block a user