Re: [PATCH 0/4] support for text-relative kallsyms table

From: Ingo Molnar
Date: Wed Jan 20 2016 - 05:33:37 EST



* Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> wrote:

> This implements text-relative kallsyms address tables. This was developed as
> part of my series to implement KASLR/CONFIG_RELOCATABLE for arm64, but I think
> it may be beneficial to other architectures as well, so I am presenting it as a
> separate series.
>
> The idea is that on 64-bit builds, it is rather wasteful to use absolute
> addressing for kernel symbols since they are all within a couple of MBs of each
> other. On top of that, the absolute addressing implies that, when the kernel is
> relocated at runtime, each address in the table needs to be fixed up
> individually.
>
> Since all section-relative addresses are already emitted relative to _text, it
> is quite straight-forward to record only the offset, and add the absolute
> address of _text at runtime when referring to the address table.
>
> The reduction ranges from around 250 KB uncompressed vmlinux size and 10 KB
> compressed size (s390) to 3 MB/500 KB for ppc64 (although, in the latter case,
> the reduction in uncompressed size is primarily __init data)

So since kallsyms is in unswappable kernel RAM, the uncompressed size reduction is
what we care about mostly. How much bootloader load times are impacted is a third
order concern.

IOW a nice change!

Thanks,

Ingo