diff options
author | Florian Fainelli <f.fainelli@gmail.com> | 2018-11-05 14:54:31 -0800 |
---|---|---|
committer | Rob Herring <robh@kernel.org> | 2018-11-26 15:50:45 -0600 |
commit | 229c55ccb487c0c10721fdb92af874d7b8671cda (patch) | |
tree | 106a5cbaa9dcc187afb673f8baad4c9ac295cc65 /init | |
parent | cdbc848b03414c75b7badccd8ada29deba7ec6e4 (diff) |
arch: Move initrd= parsing into do_mounts_initrd.c
ARC, ARM, ARM64 and Unicore32 are all capable of parsing the "initrd="
command line parameter to allow specifying the physical address and size
of an initrd. Move that parsing into init/do_mounts_initrd.c such that
we no longer duplicate that logic.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Diffstat (limited to 'init')
-rw-r--r-- | init/do_mounts_initrd.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c index 45865b72f4ea..732d21f4a637 100644 --- a/init/do_mounts_initrd.c +++ b/init/do_mounts_initrd.c @@ -27,6 +27,23 @@ static int __init no_initrd(char *str) __setup("noinitrd", no_initrd); +static int __init early_initrd(char *p) +{ + phys_addr_t start; + unsigned long size; + char *endp; + + start = memparse(p, &endp); + if (*endp == ',') { + size = memparse(endp + 1, NULL); + + phys_initrd_start = start; + phys_initrd_size = size; + } + return 0; +} +early_param("initrd", early_initrd); + static int init_linuxrc(struct subprocess_info *info, struct cred *new) { ksys_unshare(CLONE_FS | CLONE_FILES); |