diff options
author | Yinghai Lu <yinghai@kernel.org> | 2013-01-24 15:19:56 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2013-01-29 18:21:05 -0500 |
commit | a8a51a88d5152aa40e5e07dcdd939c7fafc42224 (patch) | |
tree | 316c1328f4e7aefd4c232c0d84b1346085278743 | |
parent | 1b8c78be01203e1c95ec5dfef6db307796fe0bc7 (diff) |
x86: Add get_ramdisk_image/size()
There are several places to find ramdisk information early for reserving
and relocating.
Use accessor functions to make code more readable and consistent.
Later will add ext_ramdisk_image/size in those functions to support
loading ramdisk above 4g.
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/1359058816-7615-16-git-send-email-yinghai@kernel.org
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
-rw-r--r-- | arch/x86/kernel/setup.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 8e356923cbd0..83b38617ff59 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -294,12 +294,25 @@ static void __init reserve_brk(void) | |||
294 | 294 | ||
295 | #ifdef CONFIG_BLK_DEV_INITRD | 295 | #ifdef CONFIG_BLK_DEV_INITRD |
296 | 296 | ||
297 | static u64 __init get_ramdisk_image(void) | ||
298 | { | ||
299 | u64 ramdisk_image = boot_params.hdr.ramdisk_image; | ||
300 | |||
301 | return ramdisk_image; | ||
302 | } | ||
303 | static u64 __init get_ramdisk_size(void) | ||
304 | { | ||
305 | u64 ramdisk_size = boot_params.hdr.ramdisk_size; | ||
306 | |||
307 | return ramdisk_size; | ||
308 | } | ||
309 | |||
297 | #define MAX_MAP_CHUNK (NR_FIX_BTMAPS << PAGE_SHIFT) | 310 | #define MAX_MAP_CHUNK (NR_FIX_BTMAPS << PAGE_SHIFT) |
298 | static void __init relocate_initrd(void) | 311 | static void __init relocate_initrd(void) |
299 | { | 312 | { |
300 | /* Assume only end is not page aligned */ | 313 | /* Assume only end is not page aligned */ |
301 | u64 ramdisk_image = boot_params.hdr.ramdisk_image; | 314 | u64 ramdisk_image = get_ramdisk_image(); |
302 | u64 ramdisk_size = boot_params.hdr.ramdisk_size; | 315 | u64 ramdisk_size = get_ramdisk_size(); |
303 | u64 area_size = PAGE_ALIGN(ramdisk_size); | 316 | u64 area_size = PAGE_ALIGN(ramdisk_size); |
304 | u64 ramdisk_here; | 317 | u64 ramdisk_here; |
305 | unsigned long slop, clen, mapaddr; | 318 | unsigned long slop, clen, mapaddr; |
@@ -338,8 +351,8 @@ static void __init relocate_initrd(void) | |||
338 | ramdisk_size -= clen; | 351 | ramdisk_size -= clen; |
339 | } | 352 | } |
340 | 353 | ||
341 | ramdisk_image = boot_params.hdr.ramdisk_image; | 354 | ramdisk_image = get_ramdisk_image(); |
342 | ramdisk_size = boot_params.hdr.ramdisk_size; | 355 | ramdisk_size = get_ramdisk_size(); |
343 | printk(KERN_INFO "Move RAMDISK from [mem %#010llx-%#010llx] to" | 356 | printk(KERN_INFO "Move RAMDISK from [mem %#010llx-%#010llx] to" |
344 | " [mem %#010llx-%#010llx]\n", | 357 | " [mem %#010llx-%#010llx]\n", |
345 | ramdisk_image, ramdisk_image + ramdisk_size - 1, | 358 | ramdisk_image, ramdisk_image + ramdisk_size - 1, |
@@ -363,8 +376,8 @@ static u64 __init get_mem_size(unsigned long limit_pfn) | |||
363 | static void __init early_reserve_initrd(void) | 376 | static void __init early_reserve_initrd(void) |
364 | { | 377 | { |
365 | /* Assume only end is not page aligned */ | 378 | /* Assume only end is not page aligned */ |
366 | u64 ramdisk_image = boot_params.hdr.ramdisk_image; | 379 | u64 ramdisk_image = get_ramdisk_image(); |
367 | u64 ramdisk_size = boot_params.hdr.ramdisk_size; | 380 | u64 ramdisk_size = get_ramdisk_size(); |
368 | u64 ramdisk_end = PAGE_ALIGN(ramdisk_image + ramdisk_size); | 381 | u64 ramdisk_end = PAGE_ALIGN(ramdisk_image + ramdisk_size); |
369 | 382 | ||
370 | if (!boot_params.hdr.type_of_loader || | 383 | if (!boot_params.hdr.type_of_loader || |
@@ -376,8 +389,8 @@ static void __init early_reserve_initrd(void) | |||
376 | static void __init reserve_initrd(void) | 389 | static void __init reserve_initrd(void) |
377 | { | 390 | { |
378 | /* Assume only end is not page aligned */ | 391 | /* Assume only end is not page aligned */ |
379 | u64 ramdisk_image = boot_params.hdr.ramdisk_image; | 392 | u64 ramdisk_image = get_ramdisk_image(); |
380 | u64 ramdisk_size = boot_params.hdr.ramdisk_size; | 393 | u64 ramdisk_size = get_ramdisk_size(); |
381 | u64 ramdisk_end = PAGE_ALIGN(ramdisk_image + ramdisk_size); | 394 | u64 ramdisk_end = PAGE_ALIGN(ramdisk_image + ramdisk_size); |
382 | u64 mapped_size; | 395 | u64 mapped_size; |
383 | 396 | ||