Re: [PATCH 0/4] support for text-relative kallsyms table
From: Ingo Molnar <mingo@kernel.org>
Date: 2016-01-20 10:33:34
Also in:
linux-s390, lkml
* Ard Biesheuvel [off-list ref] 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