[PATCH] riscv: Respect the initrd found in the dt, if any.
Shea Levy
shea at shealevy.com
Thu Mar 8 11:14:00 PST 2018
Hi Palmer,
Any further thoughts on this?
Thanks,
Shea
Shea Levy <shea at shealevy.com> writes:
> It doesn't look like that generic support handles the case where the
> initrd is compiled into the kernel and not passed in the devicetree,
> which setup_initrd already did before this
> patch. __early_init_dt_delcare_initrd is only called when the devicetree
> properties are found.
>
> Palmer Dabbelt <palmer at sifive.com> writes:
>
>> 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?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20180308/d90fd7c1/attachment.sig>
More information about the linux-riscv
mailing list