On Wed, Feb 24, 2021 at 5:33 PM Jessica Yu <j...@kernel.org> wrote: > > +++ Linus Torvalds [23/02/21 12:03 -0800]: > >On Tue, Feb 23, 2021 at 12:01 PM Christoph Hellwig <h...@lst.de> wrote: > >> > >> Does your build now enable TRIM_UNUSED_KSYMS but previously didn't by > >> chance? > > > >Crossed emails. > > > >This is plain "make allmodconfig", so yes, now it will enable > >TRIM_UNUSED_KSYMS. > > > >This is unacceptably slow. If that symbol trimming takes 30% of the > >whole kernel build time, it needs to be fixed or removed. > > [ Adding Masahiro to CC ] > > It looks like CONFIG_TRIM_UNUSED_KSYMS had been hiding behind > CONFIG_UNUSED_SYMBOLS all this time, and once the EXPORT_UNUSED_SYMBOL > stuff was removed, it exposed that option to be selected by > allyesconfig. That option had previously caused build issues on > powerpc on linux-next, so I had temporarily marked that as BROKEN on > powerpc until Masahiro's fix landed in linux-next. I was not aware of > the additional build slowdown issue :/ In any case, Christoph's > suggestion to invert the option sounds reasonable, since the mips > defconfig selects it, it does not seem totally unused.
TRIM_UNUSED_KSYMS builds the tree twice by its concept. [1] 1st build At this point of time, we do not know which EXPORT_SYMBOL() is needed. So, EXPORT_SYMBOL() is enabled, or noop'ed based on the temporal guess. (in the fresh build, EXPORT_SYMBOL() are all nooped.) [2] Get the list of symbols needed to resolve all symbol references. (this information is collected in include/generated/autoksyms.h) [3] 2nd build Rebuild the objects whose EXPORT_SYMBOL() must be flipped. The build system cleverly tracks which object needs rebuild. So, building the tree twice does not mean the build cost is twice. But, 30% increase is reasonable. In my understanding, TRIM_UNUSED_KSYMS is used by Android. (Generic Kernel Image) So, we should revive it. -- Best Regards Masahiro Yamada