Message ID | 20211026212847.43108-1-palmer@dabbelt.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | RISC-V: Make CONFIG_RELOCATABLE user selectable | expand |
Hi Palmer, On 10/26/21 11:28 PM, Palmer Dabbelt wrote: > From: Palmer Dabbelt <palmerdabbelt@google.com> > > This should really be up to the user, as it trades off portability for > performance. > > Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com> > --- > arch/riscv/Kconfig | 24 ++++++++++++------------ > 1 file changed, 12 insertions(+), 12 deletions(-) > > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig > index 5dea03549493..f8a36034d54b 100644 > --- a/arch/riscv/Kconfig > +++ b/arch/riscv/Kconfig > @@ -212,18 +212,6 @@ config PGTABLE_LEVELS > config LOCKDEP_SUPPORT > def_bool y > > -config RELOCATABLE > - bool > - depends on MMU && 64BIT && !XIP_KERNEL > - help > - This builds a kernel as a Position Independent Executable (PIE), > - which retains all relocation metadata required to relocate the > - kernel binary at runtime to a different virtual address than the > - address it was linked at. > - Since RISCV uses the RELA relocation format, this requires a > - relocation pass at runtime even if the kernel is loaded at the > - same address it was linked at. > - > source "arch/riscv/Kconfig.socs" > source "arch/riscv/Kconfig.erratas" > > @@ -433,6 +421,18 @@ config CRASH_DUMP > > For more details see Documentation/admin-guide/kdump/kdump.rst > > +config RELOCATABLE > + bool "Build a relocatable kernel" > + depends on MMU && 64BIT && !XIP_KERNEL > + help > + This builds a kernel as a Position Independent Executable (PIE), > + which retains all relocation metadata required to relocate the > + kernel binary at runtime to a different virtual address than the > + address it was linked at. > + Since RISCV uses the RELA relocation format, this requires a > + relocation pass at runtime even if the kernel is loaded at the > + same address it was linked at. > + > endmenu > > menu "Boot options" Agreed, you can add: Reviewed-by: Alexandre Ghiti <alexandre.ghiti@canonical.com> Thanks for the patch, Alex
On Okt 26 2021, Palmer Dabbelt wrote: > +config RELOCATABLE > + bool "Build a relocatable kernel" > + depends on MMU && 64BIT && !XIP_KERNEL > + help > + This builds a kernel as a Position Independent Executable (PIE), > + which retains all relocation metadata required to relocate the > + kernel binary at runtime to a different virtual address than the > + address it was linked at. > + Since RISCV uses the RELA relocation format, this requires a > + relocation pass at runtime even if the kernel is loaded at the > + same address it was linked at. When in doubt, do what? Andreas.
On Wed, Oct 27, 2021 at 10:03 AM Andreas Schwab <schwab@linux-m68k.org> wrote: > > On Okt 26 2021, Palmer Dabbelt wrote: > > > +config RELOCATABLE > > + bool "Build a relocatable kernel" > > + depends on MMU && 64BIT && !XIP_KERNEL > > + help > > + This builds a kernel as a Position Independent Executable (PIE), > > + which retains all relocation metadata required to relocate the > > + kernel binary at runtime to a different virtual address than the > > + address it was linked at. > > + Since RISCV uses the RELA relocation format, this requires a > > + relocation pass at runtime even if the kernel is loaded at the > > + same address it was linked at. > > When in doubt, do what? Then do not enable. it will be automatically selected by other configs like KASLR, but otherwise you should not say yes since you'll just have an identical slightly slower kernel. But I imagine you mean adding a default value for this config? That sounds right and it should be "default n". Alex > > Andreas. > > -- > Andreas Schwab, schwab@linux-m68k.org > GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 > "And now for something completely different." > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
On Okt 27 2021, Alexandre Ghiti wrote: > On Wed, Oct 27, 2021 at 10:03 AM Andreas Schwab <schwab@linux-m68k.org> wrote: >> >> On Okt 26 2021, Palmer Dabbelt wrote: >> >> > +config RELOCATABLE >> > + bool "Build a relocatable kernel" >> > + depends on MMU && 64BIT && !XIP_KERNEL >> > + help >> > + This builds a kernel as a Position Independent Executable (PIE), >> > + which retains all relocation metadata required to relocate the >> > + kernel binary at runtime to a different virtual address than the >> > + address it was linked at. >> > + Since RISCV uses the RELA relocation format, this requires a >> > + relocation pass at runtime even if the kernel is loaded at the >> > + same address it was linked at. >> >> When in doubt, do what? > > Then do not enable. Please add that to the help string. Andreas.
On Wed, 27 Oct 2021 02:45:27 PDT (-0700), schwab@linux-m68k.org wrote: > On Okt 27 2021, Alexandre Ghiti wrote: > >> On Wed, Oct 27, 2021 at 10:03 AM Andreas Schwab <schwab@linux-m68k.org> wrote: >>> >>> On Okt 26 2021, Palmer Dabbelt wrote: >>> >>> > +config RELOCATABLE >>> > + bool "Build a relocatable kernel" >>> > + depends on MMU && 64BIT && !XIP_KERNEL >>> > + help >>> > + This builds a kernel as a Position Independent Executable (PIE), >>> > + which retains all relocation metadata required to relocate the >>> > + kernel binary at runtime to a different virtual address than the >>> > + address it was linked at. >>> > + Since RISCV uses the RELA relocation format, this requires a >>> > + relocation pass at runtime even if the kernel is loaded at the >>> > + same address it was linked at. >>> >>> When in doubt, do what? >> >> Then do not enable. > > Please add that to the help string. Thanks, I forgot about that. I've added it, but this is still a bit in flux so I'm not going to send a v2 right now (it's on top of Alex's other patches and should probably be squashed in, anyway).
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 5dea03549493..f8a36034d54b 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -212,18 +212,6 @@ config PGTABLE_LEVELS config LOCKDEP_SUPPORT def_bool y -config RELOCATABLE - bool - depends on MMU && 64BIT && !XIP_KERNEL - help - This builds a kernel as a Position Independent Executable (PIE), - which retains all relocation metadata required to relocate the - kernel binary at runtime to a different virtual address than the - address it was linked at. - Since RISCV uses the RELA relocation format, this requires a - relocation pass at runtime even if the kernel is loaded at the - same address it was linked at. - source "arch/riscv/Kconfig.socs" source "arch/riscv/Kconfig.erratas" @@ -433,6 +421,18 @@ config CRASH_DUMP For more details see Documentation/admin-guide/kdump/kdump.rst +config RELOCATABLE + bool "Build a relocatable kernel" + depends on MMU && 64BIT && !XIP_KERNEL + help + This builds a kernel as a Position Independent Executable (PIE), + which retains all relocation metadata required to relocate the + kernel binary at runtime to a different virtual address than the + address it was linked at. + Since RISCV uses the RELA relocation format, this requires a + relocation pass at runtime even if the kernel is loaded at the + same address it was linked at. + endmenu menu "Boot options"