[PATCH] riscv: Respect the initrd found in the dt, if any.
Palmer Dabbelt
palmer at sifive.com
Thu Feb 22 15:14:53 PST 2018
On Tue, 20 Feb 2018 04:54:26 PST (-0800), shea at shealevy.com wrote:
> Signed-off-by: Shea Levy <shea at shealevy.com>
> ---
> arch/riscv/kernel/setup.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
> index 41d34008faf6..c4ebc907af34 100644
> --- a/arch/riscv/kernel/setup.c
> +++ b/arch/riscv/kernel/setup.c
> @@ -88,15 +88,20 @@ static void __init setup_initrd(void)
> extern unsigned long __initramfs_size;
> unsigned long size;
>
> + if (initrd_start)
> + goto found;
> +
> if (__initramfs_size > 0) {
> initrd_start = (unsigned long)(&__initramfs_start);
> initrd_end = initrd_start + __initramfs_size;
> }
>
> + initrd_below_start_ok = 1;
> if (initrd_start >= initrd_end) {
> printk(KERN_INFO "initrd not found or empty");
> goto disable;
> }
> +found:
> if (__pa(initrd_end) > PFN_PHYS(max_low_pfn)) {
> printk(KERN_ERR "initrd extends beyond end of memory");
> goto disable;
> @@ -104,13 +109,13 @@ static void __init setup_initrd(void)
>
> size = initrd_end - initrd_start;
> memblock_reserve(__pa(initrd_start), size);
> - initrd_below_start_ok = 1;
>
> printk(KERN_INFO "Initial ramdisk at: 0x%p (%lu bytes)\n",
> (void *)(initrd_start), size);
> return;
> disable:
> pr_cont(" - disabling initrd\n");
> + initrd_below_start_ok = 0;
> initrd_start = 0;
> initrd_end = 0;
> }
It looks like there's some amount of generic support in
__early_init_dt_declare_initrd(), can we just use that?
More information about the linux-riscv
mailing list