Commit 98c672cf authored by Russell King's avatar Russell King

ARM: Move platform memory reservations out of generic code

Move the platform specific bootmem memory reservations out of
arch/arm/mm/mmu.c into their respective platform files.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent b65b4781
...@@ -37,6 +37,7 @@ struct machine_desc { ...@@ -37,6 +37,7 @@ struct machine_desc {
void (*fixup)(struct machine_desc *, void (*fixup)(struct machine_desc *,
struct tag *, char **, struct tag *, char **,
struct meminfo *); struct meminfo *);
void (*reserve)(void);/* reserve mem blocks */
void (*map_io)(void);/* IO mapping function */ void (*map_io)(void);/* IO mapping function */
void (*init_irq)(void); void (*init_irq)(void);
struct sys_timer *timer; /* system tick timer */ struct sys_timer *timer; /* system tick timer */
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#include <linux/init.h> #include <linux/init.h>
#include <linux/bootmem.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/string.h> #include <linux/string.h>
...@@ -29,6 +30,12 @@ ...@@ -29,6 +30,12 @@
extern void edb7211_map_io(void); extern void edb7211_map_io(void);
/* Reserve screen memory region at the start of main system memory. */
static void __init edb7211_reserve(void)
{
reserve_bootmem(PHYS_OFFSET, 0x00020000, BOOTMEM_DEFAULT);
}
static void __init static void __init
fixup_edb7211(struct machine_desc *desc, struct tag *tags, fixup_edb7211(struct machine_desc *desc, struct tag *tags,
char **cmdline, struct meminfo *mi) char **cmdline, struct meminfo *mi)
...@@ -55,6 +62,7 @@ MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)") ...@@ -55,6 +62,7 @@ MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")
.boot_params = 0xc0020100, /* 0xc0000000 - 0xc001ffff can be video RAM */ .boot_params = 0xc0020100, /* 0xc0000000 - 0xc001ffff can be video RAM */
.fixup = fixup_edb7211, .fixup = fixup_edb7211,
.map_io = edb7211_map_io, .map_io = edb7211_map_io,
.reserve = edb7211_reserve,
.init_irq = clps711x_init_irq, .init_irq = clps711x_init_irq,
.timer = &clps711x_timer, .timer = &clps711x_timer,
MACHINE_END MACHINE_END
void integrator_reserve(void);
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/bootmem.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/termios.h> #include <linux/termios.h>
...@@ -30,6 +31,7 @@ ...@@ -30,6 +31,7 @@
#include <asm/system.h> #include <asm/system.h>
#include <asm/leds.h> #include <asm/leds.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include <asm/pgtable.h>
static struct amba_pl010_data integrator_uart_data; static struct amba_pl010_data integrator_uart_data;
...@@ -215,3 +217,13 @@ void cm_control(u32 mask, u32 set) ...@@ -215,3 +217,13 @@ void cm_control(u32 mask, u32 set)
} }
EXPORT_SYMBOL(cm_control); EXPORT_SYMBOL(cm_control);
/*
* We need to stop things allocating the low memory; ideally we need a
* better implementation of GFP_DMA which does not assume that DMA-able
* memory starts at zero.
*/
void __init integrator_reserve(void)
{
reserve_bootmem(PHYS_OFFSET, __pa(swapper_pg_dir) - PHYS_OFFSET, BOOTMEM_DEFAULT);
}
...@@ -48,6 +48,8 @@ ...@@ -48,6 +48,8 @@
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include "common.h"
/* /*
* All IO addresses are mapped onto VA 0xFFFx.xxxx, where x.xxxx * All IO addresses are mapped onto VA 0xFFFx.xxxx, where x.xxxx
* is the (PA >> 12). * is the (PA >> 12).
...@@ -502,6 +504,7 @@ MACHINE_START(INTEGRATOR, "ARM-Integrator") ...@@ -502,6 +504,7 @@ MACHINE_START(INTEGRATOR, "ARM-Integrator")
.io_pg_offst = ((0xf1600000) >> 18) & 0xfffc, .io_pg_offst = ((0xf1600000) >> 18) & 0xfffc,
.boot_params = 0x00000100, .boot_params = 0x00000100,
.map_io = ap_map_io, .map_io = ap_map_io,
.reserve = integrator_reserve,
.init_irq = ap_init_irq, .init_irq = ap_init_irq,
.timer = &ap_timer, .timer = &ap_timer,
.init_machine = ap_init, .init_machine = ap_init,
......
...@@ -43,6 +43,8 @@ ...@@ -43,6 +43,8 @@
#include <plat/timer-sp.h> #include <plat/timer-sp.h>
#include "common.h"
#define INTCP_PA_FLASH_BASE 0x24000000 #define INTCP_PA_FLASH_BASE 0x24000000
#define INTCP_FLASH_SIZE SZ_32M #define INTCP_FLASH_SIZE SZ_32M
...@@ -601,6 +603,7 @@ MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP") ...@@ -601,6 +603,7 @@ MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP")
.io_pg_offst = ((0xf1600000) >> 18) & 0xfffc, .io_pg_offst = ((0xf1600000) >> 18) & 0xfffc,
.boot_params = 0x00000100, .boot_params = 0x00000100,
.map_io = intcp_map_io, .map_io = intcp_map_io,
.reserve = integrator_reserve,
.init_irq = intcp_init_irq, .init_irq = intcp_init_irq,
.timer = &cp_timer, .timer = &cp_timer,
.init_machine = intcp_init, .init_machine = intcp_init,
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/gpio_keys.h> #include <linux/gpio_keys.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/bootmem.h>
#include <linux/pda_power.h> #include <linux/pda_power.h>
#include <linux/pwm_backlight.h> #include <linux/pwm_backlight.h>
#include <linux/gpio.h> #include <linux/gpio.h>
...@@ -396,6 +397,11 @@ static void __init palmt5_udc_init(void) ...@@ -396,6 +397,11 @@ static void __init palmt5_udc_init(void)
} }
} }
static void __init palmt5_reserve(void)
{
reserve_bootmem(0xa0200000, 0x1000, BOOTMEM_EXCLUSIVE);
}
static void __init palmt5_init(void) static void __init palmt5_init(void)
{ {
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config)); pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config));
...@@ -421,6 +427,7 @@ MACHINE_START(PALMT5, "Palm Tungsten|T5") ...@@ -421,6 +427,7 @@ MACHINE_START(PALMT5, "Palm Tungsten|T5")
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
.boot_params = 0xa0000100, .boot_params = 0xa0000100,
.map_io = pxa_map_io, .map_io = pxa_map_io,
.reserve = palmt5_reserve,
.init_irq = pxa27x_init_irq, .init_irq = pxa27x_init_irq,
.timer = &pxa_timer, .timer = &pxa_timer,
.init_machine = palmt5_init .init_machine = palmt5_init
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/gpio_keys.h> #include <linux/gpio_keys.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/bootmem.h>
#include <linux/pda_power.h> #include <linux/pda_power.h>
#include <linux/pwm_backlight.h> #include <linux/pwm_backlight.h>
#include <linux/gpio.h> #include <linux/gpio.h>
...@@ -633,6 +634,12 @@ static void __init treo_lcd_power_init(void) ...@@ -633,6 +634,12 @@ static void __init treo_lcd_power_init(void)
treo_lcd_screen.pxafb_lcd_power = treo_lcd_power; treo_lcd_screen.pxafb_lcd_power = treo_lcd_power;
} }
static void __init treo_reserve(void)
{
reserve_bootmem(0xa0000000, 0x1000, BOOTMEM_EXCLUSIVE);
reserve_bootmem(0xa2000000, 0x1000, BOOTMEM_EXCLUSIVE);
}
static void __init treo_init(void) static void __init treo_init(void)
{ {
pxa_set_ffuart_info(NULL); pxa_set_ffuart_info(NULL);
...@@ -668,6 +675,7 @@ MACHINE_START(TREO680, "Palm Treo 680") ...@@ -668,6 +675,7 @@ MACHINE_START(TREO680, "Palm Treo 680")
.io_pg_offst = io_p2v(0x40000000), .io_pg_offst = io_p2v(0x40000000),
.boot_params = 0xa0000100, .boot_params = 0xa0000100,
.map_io = pxa_map_io, .map_io = pxa_map_io,
.reserve = treo_reserve,
.init_irq = pxa27x_init_irq, .init_irq = pxa27x_init_irq,
.timer = &pxa_timer, .timer = &pxa_timer,
.init_machine = treo680_init, .init_machine = treo680_init,
...@@ -691,6 +699,7 @@ MACHINE_START(CENTRO, "Palm Centro 685") ...@@ -691,6 +699,7 @@ MACHINE_START(CENTRO, "Palm Centro 685")
.io_pg_offst = io_p2v(0x40000000), .io_pg_offst = io_p2v(0x40000000),
.boot_params = 0xa0000100, .boot_params = 0xa0000100,
.map_io = pxa_map_io, .map_io = pxa_map_io,
.reserve = treo_reserve,
.init_irq = pxa27x_init_irq, .init_irq = pxa27x_init_irq,
.timer = &pxa_timer, .timer = &pxa_timer,
.init_machine = centro_init, .init_machine = centro_init,
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/bootmem.h>
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/sysdev.h> #include <linux/sysdev.h>
...@@ -304,6 +305,13 @@ static void __init h1940_map_io(void) ...@@ -304,6 +305,13 @@ static void __init h1940_map_io(void)
s3c_pm_init(); s3c_pm_init();
} }
/* H1940 and RX3715 need to reserve this for suspend */
static void __init h1940_reserve(void)
{
reserve_bootmem(0x30003000, 0x1000, BOOTMEM_DEFAULT);
reserve_bootmem(0x30081000, 0x1000, BOOTMEM_DEFAULT);
}
static void __init h1940_init_irq(void) static void __init h1940_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
...@@ -346,6 +354,7 @@ MACHINE_START(H1940, "IPAQ-H1940") ...@@ -346,6 +354,7 @@ MACHINE_START(H1940, "IPAQ-H1940")
.io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
.boot_params = S3C2410_SDRAM_PA + 0x100, .boot_params = S3C2410_SDRAM_PA + 0x100,
.map_io = h1940_map_io, .map_io = h1940_map_io,
.reserve = h1940_reserve,
.init_irq = h1940_init_irq, .init_irq = h1940_init_irq,
.init_machine = h1940_init, .init_machine = h1940_init,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/bootmem.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/init.h> #include <linux/init.h>
...@@ -570,12 +571,20 @@ static void __init rx1950_init_machine(void) ...@@ -570,12 +571,20 @@ static void __init rx1950_init_machine(void)
platform_add_devices(rx1950_devices, ARRAY_SIZE(rx1950_devices)); platform_add_devices(rx1950_devices, ARRAY_SIZE(rx1950_devices));
} }
/* H1940 and RX3715 need to reserve this for suspend */
static void __init rx1950_reserve(void)
{
reserve_bootmem(0x30003000, 0x1000, BOOTMEM_DEFAULT);
reserve_bootmem(0x30081000, 0x1000, BOOTMEM_DEFAULT);
}
MACHINE_START(RX1950, "HP iPAQ RX1950") MACHINE_START(RX1950, "HP iPAQ RX1950")
/* Maintainers: Vasily Khoruzhick */ /* Maintainers: Vasily Khoruzhick */
.phys_io = S3C2410_PA_UART, .phys_io = S3C2410_PA_UART,
.io_pg_offst = (((u32) S3C24XX_VA_UART) >> 18) & 0xfffc, .io_pg_offst = (((u32) S3C24XX_VA_UART) >> 18) & 0xfffc,
.boot_params = S3C2410_SDRAM_PA + 0x100, .boot_params = S3C2410_SDRAM_PA + 0x100,
.map_io = rx1950_map_io, .map_io = rx1950_map_io,
.reserve = rx1950_reserve,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = rx1950_init_machine, .init_machine = rx1950_init_machine,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/bootmem.h>
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/tty.h> #include <linux/tty.h>
...@@ -191,6 +192,13 @@ static void __init rx3715_map_io(void) ...@@ -191,6 +192,13 @@ static void __init rx3715_map_io(void)
s3c24xx_init_uarts(rx3715_uartcfgs, ARRAY_SIZE(rx3715_uartcfgs)); s3c24xx_init_uarts(rx3715_uartcfgs, ARRAY_SIZE(rx3715_uartcfgs));
} }
/* H1940 and RX3715 need to reserve this for suspend */
static void __init rx3715_reserve(void)
{
reserve_bootmem(0x30003000, 0x1000, BOOTMEM_DEFAULT);
reserve_bootmem(0x30081000, 0x1000, BOOTMEM_DEFAULT);
}
static void __init rx3715_init_irq(void) static void __init rx3715_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
...@@ -214,6 +222,7 @@ MACHINE_START(RX3715, "IPAQ-RX3715") ...@@ -214,6 +222,7 @@ MACHINE_START(RX3715, "IPAQ-RX3715")
.io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
.boot_params = S3C2410_SDRAM_PA + 0x100, .boot_params = S3C2410_SDRAM_PA + 0x100,
.map_io = rx3715_map_io, .map_io = rx3715_map_io,
.reserve = rx3715_reserve,
.init_irq = rx3715_init_irq, .init_irq = rx3715_init_irq,
.init_machine = rx3715_init_machine, .init_machine = rx3715_init_machine,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/bootmem.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/io.h> #include <linux/io.h>
#include <mach/hardware.h> #include <mach/hardware.h>
...@@ -22,6 +23,21 @@ ...@@ -22,6 +23,21 @@
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
static void __init u300_reserve(void)
{
/*
* U300 - This platform family can share physical memory
* between two ARM cpus, one running Linux and the other
* running another OS.
*/
#ifdef CONFIG_MACH_U300_SINGLE_RAM
#if ((CONFIG_MACH_U300_ACCESS_MEM_SIZE & 1) == 1) && \
CONFIG_MACH_U300_2MB_ALIGNMENT_FIX
reserve_bootmem(PHYS_OFFSET, 0x00100000, BOOTMEM_DEFAULT);
#endif
#endif
}
static void __init u300_init_machine(void) static void __init u300_init_machine(void)
{ {
u300_init_devices(); u300_init_devices();
...@@ -49,6 +65,7 @@ MACHINE_START(U300, MACH_U300_STRING) ...@@ -49,6 +65,7 @@ MACHINE_START(U300, MACH_U300_STRING)
.io_pg_offst = ((U300_AHB_PER_VIRT_BASE) >> 18) & 0xfffc, .io_pg_offst = ((U300_AHB_PER_VIRT_BASE) >> 18) & 0xfffc,
.boot_params = BOOT_PARAMS_OFFSET, .boot_params = BOOT_PARAMS_OFFSET,
.map_io = u300_map_io, .map_io = u300_map_io,
.reserve = u300_reserve,
.init_irq = u300_init_irq, .init_irq = u300_init_irq,
.timer = &u300_timer, .timer = &u300_timer,
.init_machine = u300_init_machine, .init_machine = u300_init_machine,
......
...@@ -358,7 +358,7 @@ static void arm_memory_present(struct meminfo *mi) ...@@ -358,7 +358,7 @@ static void arm_memory_present(struct meminfo *mi)
} }
#endif #endif
void __init bootmem_init(void) void __init bootmem_init(struct machine_desc *mdesc)
{ {
struct meminfo *mi = &meminfo; struct meminfo *mi = &meminfo;
unsigned long min, max_low, max_high; unsigned long min, max_low, max_high;
...@@ -380,6 +380,9 @@ void __init bootmem_init(void) ...@@ -380,6 +380,9 @@ void __init bootmem_init(void)
*/ */
reserve_special_regions(); reserve_special_regions();
if (mdesc->reserve)
mdesc->reserve();
/* /*
* If the initrd is present, reserve its memory. * If the initrd is present, reserve its memory.
*/ */
......
...@@ -28,5 +28,6 @@ extern void __flush_dcache_page(struct address_space *mapping, struct page *page ...@@ -28,5 +28,6 @@ extern void __flush_dcache_page(struct address_space *mapping, struct page *page
#endif #endif
void __init bootmem_init(void); struct machine_desc;
void __init bootmem_init(struct machine_desc *);
void reserve_special_regions(void); void reserve_special_regions(void);
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
#include <linux/sort.h> #include <linux/sort.h>
#include <asm/cputype.h> #include <asm/cputype.h>
#include <asm/mach-types.h>
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/cachetype.h> #include <asm/cachetype.h>
#include <asm/setup.h> #include <asm/setup.h>
...@@ -831,8 +830,6 @@ static inline void prepare_page_table(void) ...@@ -831,8 +830,6 @@ static inline void prepare_page_table(void)
*/ */
void __init reserve_special_regions(void) void __init reserve_special_regions(void)
{ {
unsigned long res_size = 0;
/* /*
* Register the kernel text and data with bootmem. * Register the kernel text and data with bootmem.
* Note that this can only be in node 0. * Note that this can only be in node 0.
...@@ -850,68 +847,14 @@ void __init reserve_special_regions(void) ...@@ -850,68 +847,14 @@ void __init reserve_special_regions(void)
reserve_bootmem(__pa(swapper_pg_dir), reserve_bootmem(__pa(swapper_pg_dir),
PTRS_PER_PGD * sizeof(pgd_t), BOOTMEM_DEFAULT); PTRS_PER_PGD * sizeof(pgd_t), BOOTMEM_DEFAULT);
/*
* Hmm... This should go elsewhere, but we really really need to
* stop things allocating the low memory; ideally we need a better
* implementation of GFP_DMA which does not assume that DMA-able
* memory starts at zero.
*/
if (machine_is_integrator() || machine_is_cintegrator())
res_size = __pa(swapper_pg_dir) - PHYS_OFFSET;
/*
* These should likewise go elsewhere. They pre-reserve the
* screen memory region at the start of main system memory.
*/
if (machine_is_edb7211())
res_size = 0x00020000;
if (machine_is_p720t())
res_size = 0x00014000;
/* H1940, RX3715 and RX1950 need to reserve this for suspend */
if (machine_is_h1940() || machine_is_rx3715()
|| machine_is_rx1950()) {
reserve_bootmem(0x30003000, 0x1000, BOOTMEM_DEFAULT);
reserve_bootmem(0x30081000, 0x1000, BOOTMEM_DEFAULT);
}
if (machine_is_palmld() || machine_is_palmtx()) {
reserve_bootmem(0xa0000000, 0x1000, BOOTMEM_EXCLUSIVE);
reserve_bootmem(0xa0200000, 0x1000, BOOTMEM_EXCLUSIVE);
}
if (machine_is_treo680() || machine_is_centro()) {
reserve_bootmem(0xa0000000, 0x1000, BOOTMEM_EXCLUSIVE);
reserve_bootmem(0xa2000000, 0x1000, BOOTMEM_EXCLUSIVE);
}
if (machine_is_palmt5())
reserve_bootmem(0xa0200000, 0x1000, BOOTMEM_EXCLUSIVE);
/*
* U300 - This platform family can share physical memory
* between two ARM cpus, one running Linux and the other
* running another OS.
*/
if (machine_is_u300()) {
#ifdef CONFIG_MACH_U300_SINGLE_RAM
#if ((CONFIG_MACH_U300_ACCESS_MEM_SIZE & 1) == 1) && \
CONFIG_MACH_U300_2MB_ALIGNMENT_FIX
res_size = 0x00100000;
#endif
#endif
}
#ifdef CONFIG_SA1111 #ifdef CONFIG_SA1111
/* /*
* Because of the SA1111 DMA bug, we want to preserve our * Because of the SA1111 DMA bug, we want to preserve our
* precious DMA-able memory... * precious DMA-able memory...
*/ */
res_size = __pa(swapper_pg_dir) - PHYS_OFFSET; reserve_bootmem(PHYS_OFFSET, __pa(swapper_pg_dir) - PHYS_OFFSET,
BOOTMEM_DEFAULT);
#endif #endif
if (res_size)
reserve_bootmem(PHYS_OFFSET, res_size, BOOTMEM_DEFAULT);
} }
/* /*
...@@ -1056,7 +999,7 @@ void __init paging_init(struct machine_desc *mdesc) ...@@ -1056,7 +999,7 @@ void __init paging_init(struct machine_desc *mdesc)
sanity_check_meminfo(); sanity_check_meminfo();
prepare_page_table(); prepare_page_table();
map_lowmem(); map_lowmem();
bootmem_init(); bootmem_init(mdesc);
devicemaps_init(mdesc); devicemaps_init(mdesc);
kmap_init(); kmap_init();
......
...@@ -46,7 +46,7 @@ void __init reserve_special_regions(void) ...@@ -46,7 +46,7 @@ void __init reserve_special_regions(void)
*/ */
void __init paging_init(struct machine_desc *mdesc) void __init paging_init(struct machine_desc *mdesc)
{ {
bootmem_init(); bootmem_init(mdesc);
} }
/* /*
......
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