On 11/14/22 19:55, Josh Poimboeuf wrote: > On Mon, Nov 14, 2022 at 12:43:28PM +0100, Jiri Slaby (SUSE) wrote: >> +++ b/Documentation/kbuild/lto-build.rst >> @@ -0,0 +1,76 @@ >> +===================================================== >> +gcc link time optimization (LTO) for the Linux kernel >> +===================================================== >> + >> +Link Time Optimization allows the compiler to optimize the complete program >> +instead of just each file. >> + >> +The compiler can inline functions between files and do various other global >> +optimizations, like specializing functions for common parameters, >> +determing when global variables are clobbered, making functions pure/const, >> +propagating constants globally, removing unneeded data and others. >> + >> +It will also drop unused functions which can make the kernel >> +image smaller in some circumstances, in particular for small kernel >> +configurations. >> + >> +For small monolithic kernels it can throw away unused code very effectively >> +(especially when modules are disabled) and usually shrinks >> +the code size. >> + >> +Build time and memory consumption at build time will increase, depending >> +on the size of the largest binary. Modular kernels are less affected. >> +With LTO incremental builds are less incremental, as always the whole >> +binary needs to be re-optimized (but not re-parsed) >> + >> +Oopses can be somewhat more difficult to read, due to the more aggressive >> +inlining: it helps to use scripts/faddr2line. >> + >> +It is currently incompatible with live patching. > > ... because ? There's no fundamental reason why live patching can't coexist with -flto. We removed the sorry message for GCC 13.1 release: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1a308905c1baf64d0ea4d09d7d92b55e79a2a339 when it comes to -flive-patching=inline-clone option. But it seems Linux does not utilize the option (based on git grep): https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flive-patching That said, I would remove this limitation as LTO can make creation of live patches more complicated, but fundamentally there's no barrier. Thanks, Martin