Re: [PATCH] mm/page_alloc: Work around a pahole limitation with zero-sized struct pagesets
From: Michal Suchánek
Date: Fri May 28 2021 - 05:56:44 EST
On Fri, May 28, 2021 at 09:49:28AM +0000, David Laight wrote:
> From: Mel Gorman
> > Sent: 28 May 2021 10:04
> >
> > On Fri, May 28, 2021 at 08:09:39AM +0000, David Laight wrote:
> > > From: Andrii Nakryiko
> > > > Sent: 27 May 2021 15:42
> > > ...
> > > > I agree that empty structs are useful, but here we are talking about
> > > > per-CPU variables only, which is the first use case so far, as far as
> > > > I can see. If we had pahole 1.22 released and widely packaged it could
> > > > have been a viable option to force it on everyone.
> > > ...
> > >
> > > Would it be feasible to put the sources for pahole into the
> > > kernel repository and build it at the same time as objtool?
> >
> > We don't store other build dependencies like compilers, binutils etc in
> > the kernel repository even though minimum versions are mandated.
> > Obviously tools/ exists but for the most part, they are tools that do
> > not exist in other repositories and are kernel-specific. I don't know if
> > pahole would be accepted and it introduces the possibility that upstream
> > pahole and the kernel fork of it would diverge.
>
> The other side of the coin is that is you want reproducible builds
> the smaller the number of variables that need to match the better.
>
> I can see there might be similar issues with the version of libelf-devel
> (needed by objtool).
> If I compile anything with gcc 10 (I'm doing build-root builds)
> I get object files that the hosts 2.30 binutils complain about.
> I can easily see that updating gcc and binutils might leave a
> broken objtool unless the required updated libelf-devel package
> can be found.
> Statically linking the required parts of libelf into objtool
> would save any such problems.
Static libraries are not always available. Especially for core toolchain
libraries the developers often have some ideas about which of the static
and dynamic libraris is the 'correct' one that they like to enforce.
Thanks
Michal