Re: [PATCH] x86: static_cpu_has_safe: discard dynamic check after init

From: Brian Gerst
Date: Mon Jan 18 2016 - 11:52:40 EST


On Sun, Jan 17, 2016 at 5:33 AM, Borislav Petkov <bp@xxxxxxx> wrote:
> On Sat, Jan 16, 2016 at 02:58:21PM -0500, Brian Gerst wrote:
>> It saves space. The only thing left in main text is one jump
>> instruction (5 bytes).
>
> How do I measure this?
>
> Because with my tailored config here, the only thing I'm seeing is a growth of
> text by 730 bytes:
>
> before:
> text data bss dec hex filename
> 10926552 3598944 16642048 31167544 1db9438 vmlinux
>
> [ 0.056552] Freeing SMP alternatives memory: 24K (ffffffff81dd7000 - ffffffff81ddd000)
> [ 2.883728] Freeing unused kernel memory: 2904K (ffffffff81b01000 - ffffffff81dd7000)
>
>
> after:
> text data bss dec hex filename
> 10927282 3598944 16642048 31168274 1db9712 vmlinux
>
> [ 0.052559] Freeing SMP alternatives memory: 24K (ffffffff81dd7000 - ffffffff81ddd000)
> [ 3.225318] Freeing unused kernel memory: 2904K (ffffffff81b01000 - ffffffff81dd7000)

It is due to page alignment padding. It was not enough to lose a
whole page from .text in your case.

The size command includes any section that is marked executable in the
text count, including init text. If you use readelf -S vmlinux.o
instead you will notice that .text is the same size or smaller, and
.static_cpu_has (which is freed after boot) is the difference.

--
Brian Gerst