Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 47491
b: refs/heads/master
c: 0a7b35c
h: refs/heads/master
i:
  47489: 0c7151c
  47487: 167bc34
v: v3
  • Loading branch information
Michael Neuling authored and Linus Torvalds committed Feb 11, 2007
1 parent 415b770 commit b3bfbda
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 70e840499aae90be1de542894062ad2899d23642
refs/heads/master: 0a7b35cb18c52d651f6ed9cd59edc979200ab880
2 changes: 2 additions & 0 deletions trunk/Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1396,6 +1396,8 @@ and is between 256 and 4096 characters. It is defined in the file
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt

retain_initrd [RAM] Keep initrd memory after extraction

rhash_entries= [KNL,NET]
Set number of hash buckets for route cache

Expand Down
17 changes: 16 additions & 1 deletion trunk/init/initramfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,17 @@ static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
return message;
}

static int __initdata do_retain_initrd;

static int __init retain_initrd_param(char *str)
{
if (*str)
return 0;
do_retain_initrd = 1;
return 1;
}
__setup("retain_initrd", retain_initrd_param);

extern char __initramfs_start[], __initramfs_end[];
#ifdef CONFIG_BLK_DEV_INITRD
#include <linux/initrd.h>
Expand All @@ -501,7 +512,11 @@ static void __init free_initrd(void)
#ifdef CONFIG_KEXEC
unsigned long crashk_start = (unsigned long)__va(crashk_res.start);
unsigned long crashk_end = (unsigned long)__va(crashk_res.end);
#endif
if (do_retain_initrd)
goto skip;

#ifdef CONFIG_KEXEC
/*
* If the initrd region is overlapped with crashkernel reserved region,
* free only memory that is not part of crashkernel region.
Expand All @@ -519,7 +534,7 @@ static void __init free_initrd(void)
} else
#endif
free_initrd_mem(initrd_start, initrd_end);

skip:
initrd_start = 0;
initrd_end = 0;
}
Expand Down

0 comments on commit b3bfbda

Please sign in to comment.