2021-06-29 15:39:50

by Heinrich Schuchardt

[permalink] [raw]
Subject: [PATCH 1/1] RISC-V: load initrd wherever it fits into memory

Requiring that initrd is loaded below RAM start + 256 MiB led to failure
to boot SUSE Linux with GRUB on QEMU, cf.
https://lists.gnu.org/archive/html/grub-devel/2021-06/msg00037.html

Remove the constraint.

Reported-by: Andreas Schwab <[email protected]>
Signed-off-by: Heinrich Schuchardt <[email protected]>
---
arch/riscv/include/asm/efi.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/riscv/include/asm/efi.h b/arch/riscv/include/asm/efi.h
index 7542282f1141..649ab513dc99 100644
--- a/arch/riscv/include/asm/efi.h
+++ b/arch/riscv/include/asm/efi.h
@@ -33,10 +33,10 @@ static inline unsigned long efi_get_max_fdt_addr(unsigned long image_addr)

#define ARCH_EFI_IRQ_FLAGS_MASK (SR_IE | SR_SPIE)

-/* Load initrd at enough distance from DRAM start */
+/* Load initrd anywhere in system RAM */
static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr)
{
- return image_addr + SZ_256M;
+ return ULONG_MAX;
}

#define alloc_screen_info(x...) (&screen_info)
--
2.30.2


2021-06-29 22:59:20

by Atish Patra

[permalink] [raw]
Subject: Re: [PATCH 1/1] RISC-V: load initrd wherever it fits into memory

On Tue, Jun 29, 2021 at 6:40 AM Heinrich Schuchardt <[email protected]> wrote:
>
> Requiring that initrd is loaded below RAM start + 256 MiB led to failure
> to boot SUSE Linux with GRUB on QEMU, cf.
> https://lists.gnu.org/archive/html/grub-devel/2021-06/msg00037.html
>
> Remove the constraint.
>
> Reported-by: Andreas Schwab <[email protected]>
> Signed-off-by: Heinrich Schuchardt <[email protected]>
> ---
> arch/riscv/include/asm/efi.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/riscv/include/asm/efi.h b/arch/riscv/include/asm/efi.h
> index 7542282f1141..649ab513dc99 100644
> --- a/arch/riscv/include/asm/efi.h
> +++ b/arch/riscv/include/asm/efi.h
> @@ -33,10 +33,10 @@ static inline unsigned long efi_get_max_fdt_addr(unsigned long image_addr)
>
> #define ARCH_EFI_IRQ_FLAGS_MASK (SR_IE | SR_SPIE)
>
> -/* Load initrd at enough distance from DRAM start */
> +/* Load initrd anywhere in system RAM */
> static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr)
> {
> - return image_addr + SZ_256M;
> + return ULONG_MAX;
> }
>
> #define alloc_screen_info(x...) (&screen_info)
> --
> 2.30.2
>

LGTM

Reviewed-by: Atish Patra <[email protected]>

--
Regards,
Atish

2021-06-30 07:32:09

by Ard Biesheuvel

[permalink] [raw]
Subject: Re: [PATCH 1/1] RISC-V: load initrd wherever it fits into memory

On Wed, 30 Jun 2021 at 00:56, Atish Patra <[email protected]> wrote:
>
> On Tue, Jun 29, 2021 at 6:40 AM Heinrich Schuchardt <[email protected]> wrote:
> >
> > Requiring that initrd is loaded below RAM start + 256 MiB led to failure
> > to boot SUSE Linux with GRUB on QEMU, cf.
> > https://lists.gnu.org/archive/html/grub-devel/2021-06/msg00037.html
> >
> > Remove the constraint.
> >
> > Reported-by: Andreas Schwab <[email protected]>
> > Signed-off-by: Heinrich Schuchardt <[email protected]>
> > ---
> > arch/riscv/include/asm/efi.h | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/riscv/include/asm/efi.h b/arch/riscv/include/asm/efi.h
> > index 7542282f1141..649ab513dc99 100644
> > --- a/arch/riscv/include/asm/efi.h
> > +++ b/arch/riscv/include/asm/efi.h
> > @@ -33,10 +33,10 @@ static inline unsigned long efi_get_max_fdt_addr(unsigned long image_addr)
> >
> > #define ARCH_EFI_IRQ_FLAGS_MASK (SR_IE | SR_SPIE)
> >
> > -/* Load initrd at enough distance from DRAM start */
> > +/* Load initrd anywhere in system RAM */
> > static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr)
> > {
> > - return image_addr + SZ_256M;
> > + return ULONG_MAX;
> > }
> >
> > #define alloc_screen_info(x...) (&screen_info)
> > --
> > 2.30.2
> >
>
> LGTM
>
> Reviewed-by: Atish Patra <[email protected]>
>

Acked-by: Ard Biesheuvel <[email protected]>

Please take this via the RISC-V tree.

2021-07-02 19:15:09

by Atish Patra

[permalink] [raw]
Subject: Re: [PATCH 1/1] RISC-V: load initrd wherever it fits into memory

On Wed, Jun 30, 2021 at 12:30 AM Ard Biesheuvel <[email protected]> wrote:
>
> On Wed, 30 Jun 2021 at 00:56, Atish Patra <[email protected]> wrote:
> >
> > On Tue, Jun 29, 2021 at 6:40 AM Heinrich Schuchardt <[email protected]> wrote:
> > >
> > > Requiring that initrd is loaded below RAM start + 256 MiB led to failure
> > > to boot SUSE Linux with GRUB on QEMU, cf.
> > > https://lists.gnu.org/archive/html/grub-devel/2021-06/msg00037.html
> > >
> > > Remove the constraint.
> > >
> > > Reported-by: Andreas Schwab <[email protected]>
> > > Signed-off-by: Heinrich Schuchardt <[email protected]>
> > > ---
> > > arch/riscv/include/asm/efi.h | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/arch/riscv/include/asm/efi.h b/arch/riscv/include/asm/efi.h
> > > index 7542282f1141..649ab513dc99 100644
> > > --- a/arch/riscv/include/asm/efi.h
> > > +++ b/arch/riscv/include/asm/efi.h
> > > @@ -33,10 +33,10 @@ static inline unsigned long efi_get_max_fdt_addr(unsigned long image_addr)
> > >
> > > #define ARCH_EFI_IRQ_FLAGS_MASK (SR_IE | SR_SPIE)
> > >
> > > -/* Load initrd at enough distance from DRAM start */
> > > +/* Load initrd anywhere in system RAM */

Alex/Anup/Palmer:

As per my understanding initrd can be loaded in system RAM as long as
it doesn't overwrite the existing data (fdt/kernel image)
and respect reserved memory regions.

Let us know if we have any inherent memory location limitation for
initrd loading.


> > > static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr)
> > > {
> > > - return image_addr + SZ_256M;
> > > + return ULONG_MAX;
> > > }
> > >
> > > #define alloc_screen_info(x...) (&screen_info)
> > > --
> > > 2.30.2
> > >
> >
> > LGTM
> >
> > Reviewed-by: Atish Patra <[email protected]>
> >
>
> Acked-by: Ard Biesheuvel <[email protected]>
>
> Please take this via the RISC-V tree.



--
Regards,
Atish

2021-07-06 19:09:24

by Andreas Schwab

[permalink] [raw]
Subject: Re: [PATCH 1/1] RISC-V: load initrd wherever it fits into memory

On Jun 29 2021, Heinrich Schuchardt wrote:

> Requiring that initrd is loaded below RAM start + 256 MiB led to failure
> to boot SUSE Linux with GRUB on QEMU, cf.
> https://lists.gnu.org/archive/html/grub-devel/2021-06/msg00037.html
>
> Remove the constraint.
>
> Reported-by: Andreas Schwab <[email protected]>
> Signed-off-by: Heinrich Schuchardt <[email protected]>

With that patch the image in
http://download.opensuse.org/ports/riscv/tumbleweed/iso/ work again.

Andreas.

--
Andreas Schwab, [email protected]
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."

2021-07-09 17:15:46

by Atish Patra

[permalink] [raw]
Subject: Re: [PATCH 1/1] RISC-V: load initrd wherever it fits into memory

On Tue, Jul 6, 2021 at 12:07 PM Andreas Schwab <[email protected]> wrote:
>
> On Jun 29 2021, Heinrich Schuchardt wrote:
>
> > Requiring that initrd is loaded below RAM start + 256 MiB led to failure
> > to boot SUSE Linux with GRUB on QEMU, cf.
> > https://lists.gnu.org/archive/html/grub-devel/2021-06/msg00037.html
> >
> > Remove the constraint.
> >
> > Reported-by: Andreas Schwab <[email protected]>
> > Signed-off-by: Heinrich Schuchardt <[email protected]>
>
> With that patch the image in
> http://download.opensuse.org/ports/riscv/tumbleweed/iso/ work again.
>

Thanks.
@palmer: Can you take this one in this cycle ?

> Andreas.
>
> --
> Andreas Schwab, [email protected]
> GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
> "And now for something completely different."



--
Regards,
Atish

2021-07-20 15:26:04

by Heinrich Schuchardt

[permalink] [raw]
Subject: Re: [PATCH 1/1] RISC-V: load initrd wherever it fits into memory



On 7/9/21 7:14 PM, Atish Patra wrote:
> On Tue, Jul 6, 2021 at 12:07 PM Andreas Schwab <[email protected]> wrote:
>>
>> On Jun 29 2021, Heinrich Schuchardt wrote:
>>
>>> Requiring that initrd is loaded below RAM start + 256 MiB led to failure
>>> to boot SUSE Linux with GRUB on QEMU, cf.
>>> https://lists.gnu.org/archive/html/grub-devel/2021-06/msg00037.html
>>>
>>> Remove the constraint.
>>>
>>> Reported-by: Andreas Schwab <[email protected]>
>>> Signed-off-by: Heinrich Schuchardt <[email protected]>
>>
>> With that patch the image in
>> http://download.opensuse.org/ports/riscv/tumbleweed/iso/ work again.
>>
>
> Thanks.
> @palmer: Can you take this one in this cycle ?

@Palmer, Paul, Albert
Ard suggested to move this patch through linux-riscv. Could you please
review the patch available at

https://lore.kernel.org/linux-riscv/[email protected]/

The patch is necessary to boot on QEMU with GRUB with large initrd.

Best regards

Heinrich

>
>> Andreas.
>>
>> --
>> Andreas Schwab, [email protected]
>> GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
>> "And now for something completely different."
>
>
>

2021-07-22 06:10:05

by Palmer Dabbelt

[permalink] [raw]
Subject: Re: [PATCH 1/1] RISC-V: load initrd wherever it fits into memory

On Tue, 29 Jun 2021 06:40:18 PDT (-0700), [email protected] wrote:
> Requiring that initrd is loaded below RAM start + 256 MiB led to failure
> to boot SUSE Linux with GRUB on QEMU, cf.
> https://lists.gnu.org/archive/html/grub-devel/2021-06/msg00037.html
>
> Remove the constraint.
>
> Reported-by: Andreas Schwab <[email protected]>
> Signed-off-by: Heinrich Schuchardt <[email protected]>
> ---
> arch/riscv/include/asm/efi.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/riscv/include/asm/efi.h b/arch/riscv/include/asm/efi.h
> index 7542282f1141..649ab513dc99 100644
> --- a/arch/riscv/include/asm/efi.h
> +++ b/arch/riscv/include/asm/efi.h
> @@ -33,10 +33,10 @@ static inline unsigned long efi_get_max_fdt_addr(unsigned long image_addr)
>
> #define ARCH_EFI_IRQ_FLAGS_MASK (SR_IE | SR_SPIE)
>
> -/* Load initrd at enough distance from DRAM start */
> +/* Load initrd anywhere in system RAM */
> static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr)
> {
> - return image_addr + SZ_256M;
> + return ULONG_MAX;
> }
>
> #define alloc_screen_info(x...) (&screen_info)

Thanks, this is on fixes.