On 27 June 2018 at 17:15, Will Deacon <will.dea...@arm.com> wrote: > Hi Ard, > > On Tue, Jun 26, 2018 at 08:27:55PM +0200, Ard Biesheuvel wrote: >> This adds support for emitting special sections such as initcall arrays, >> PCI fixups and tracepoints as relative references rather than absolute >> references. This reduces the size by 50% on 64-bit architectures, but >> more importantly, it removes the need for carrying relocation metadata >> for these sections in relocatable kernels (e.g., for KASLR) that needs >> to be fixed up at boot time. On arm64, this reduces the vmlinux footprint >> of such a reference by 8x (8 byte absolute reference + 24 byte RELA entry >> vs 4 byte relative reference) >> >> Patch #3 was sent out before as a single patch. This series supersedes >> the previous submission. This version makes relative ksymtab entries >> dependent on the new Kconfig symbol HAVE_ARCH_PREL32_RELOCATIONS rather >> than trying to infer from kbuild test robot replies for which architectures >> it should be blacklisted. >> >> Patch #1 introduces the new Kconfig symbol HAVE_ARCH_PREL32_RELOCATIONS, >> and sets it for the main architectures that are expected to benefit the >> most from this feature, i.e., 64-bit architectures or ones that use >> runtime relocations. >> >> Patch #2 add support for #define'ing __DISABLE_EXPORTS to get rid of >> ksymtab/kcrctab sections in decompressor and EFI stub objects when >> rebuilding existing C files to run in a different context. > > I had a small question on patch 3, but it's really for my understanding. > So, for patches 1-3: > > Reviewed-by: Will Deacon <will.dea...@arm.com> >
Thanks all. Thomas, Ingo, Except for the below tweak against patch #3 for powerpc, which may apparently get confused by an input section called .discard without any suffixes, this series is good to go, but requires your ack to proceed, so I would like to ask you to share your comments and/or objections. Also, any suggestions or recommendations regarding the route these patches should take are highly appreciated. Ard. diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 2d9c63f41031..61c844d4ab48 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -287,7 +287,7 @@ unsigned long read_word_at_a_time(const void *addr) * visible to the compiler. */ #define __ADDRESSABLE(sym) \ - static void * __attribute__((section(".discard"), used)) \ + static void * __attribute__((section(".discard.addressable"), used)) \ __PASTE(__addressable_##sym, __LINE__) = (void *)&sym; /**