All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Chancellor <nathan@kernel.org>
To: Daniel Jordan <daniel.m.jordan@oracle.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Tom Rix <trix@redhat.com>, Nicolas Schier <nicolas@fjasle.eu>,
	Sami Tolvanen <samitolvanen@google.com>,
	Vincent Donnefort <vdonnefort@google.com>,
	linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
	llvm@lists.linux.dev, patches@lists.linux.dev,
	Steffen Klassert <steffen.klassert@secunet.com>,
	linux-crypto@vger.kernel.org
Subject: Re: [PATCH v2 1/2] padata: Mark padata_work_init() as __ref
Date: Tue, 13 Dec 2022 09:48:27 -0700	[thread overview]
Message-ID: <Y5is20DXQxtqyJLs@dev-arch.thelio-3990X> (raw)
In-Reply-To: <Y5eJuBWoCJ+q++IM@dev-arch.thelio-3990X>

On Mon, Dec 12, 2022 at 01:06:16PM -0700, Nathan Chancellor wrote:
> On Mon, Dec 12, 2022 at 02:21:57PM -0500, Daniel Jordan wrote:
> > On Mon, Dec 12, 2022 at 10:05:02AM -0700, Nathan Chancellor wrote:
> > > On Mon, Dec 12, 2022 at 10:07:24PM +0900, Masahiro Yamada wrote:
> > > > I am not sure if the compiler should do this level of optimization
> > > > because kernel/padata.c does not seem to be a special case.
> > > > Perhaps, we might be hit with more cases that need __ref annotation,
> > > > which is only required by LTO.
> > > 
> > > That's possible. I did only see this once instance in all my builds but
> > > allmodconfig + ThinLTO might not be too interesting of a case,
> > > since the sanitizers will be enabled, which makes optimization more
> > > difficult. I could try to enable ThinLTO with some distribution
> > > configurations to see if there are any more instances that crop up.
> > 
> > Yes, if there were many more instances of this problem it might be worth
> > thinking about an LTO-specific solution to fix it closer to the source.
> 
> Ack, I will wire up some build tests to see if this optimization occurs
> frequently enough to warrant a wider fix.

Turns out this does not appear to happen often. I built several
distribution configurations for arm64 and x86_64 with
CONFIG_LTO_CLANG_THIN=y and saw no modpost warnings. So I think this is
sufficiently odd to keep the fix local to this one instance. I will send
a v3 later today.

> > > > One note is that, we could discard padata_work_init()
> > > > because (1) and (3) are both annotated as __init.
> > > > So, another way of fixing is
> > > >    static __always_inline void padata_work_init(...)
> > > > because the compiler would determine padata_work_init()
> > > > would be small enough if the caller and callee belonged to
> > > > the same section.
> > > > 
> > > > I do not have a strong opinion.
> > 
> > I'm right there with you.  :-)
> > 
> > > > Honestly, I do not know what the best approach would be to fix this.
> > 
> > Either approach works, either can include an explanatory comment.
> > __ref seems more targeted to the problem at hand.
> 
> Right, I suspect __ref is the right way to go for this particular issue.
> I will add a comment regardless.
> 
> > > > If we go with the __ref annotation, I can pick this, but
> > > > at least can you add some comments?
> > > > 
> > > > 
> > > > include/linux/init.h says:
> > > > "optimally document why the __ref is needed and why it's OK"
> > > > 
> > > > 
> > > > I think this is the case that needs some comments
> > > > because LTO optimization looks too tricky to me.
> > > 
> > > Sure thing, I will send a v3 either Tuesday or Wednesday with an updated
> > > commit message and code comment if we end up going this route.
> > 
> > A nitpick, but as long as you're respinning, if we stay with this
> > approach, could you put __ref just before the function name?  init.h
> > says "The markers follow same syntax rules as __init / __initdata" and
> > for those it says "You should add __init immediately before the function
> > name" though there are plenty of places in the tree that don't do this.
> 
> Sure thing!
> 
> Cheers,
> Nathan
> 

  reply	other threads:[~2022-12-13 16:48 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-07 19:16 [PATCH v2 0/2] Fix lack of section mismatch warnings with LTO Nathan Chancellor
2022-12-07 19:16 ` [PATCH v2 1/2] padata: Mark padata_work_init() as __ref Nathan Chancellor
2022-12-07 19:56   ` Daniel Jordan
2022-12-12 13:07   ` Masahiro Yamada
2022-12-12 17:05     ` Nathan Chancellor
2022-12-12 19:21       ` Daniel Jordan
2022-12-12 20:06         ` Nathan Chancellor
2022-12-13 16:48           ` Nathan Chancellor [this message]
2022-12-07 19:16 ` [PATCH v2 2/2] modpost: Include '.text.*' in TEXT_SECTIONS Nathan Chancellor
2022-12-12 13:13   ` Masahiro Yamada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y5is20DXQxtqyJLs@dev-arch.thelio-3990X \
    --to=nathan@kernel.org \
    --cc=daniel.m.jordan@oracle.com \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=masahiroy@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=nicolas@fjasle.eu \
    --cc=patches@lists.linux.dev \
    --cc=samitolvanen@google.com \
    --cc=steffen.klassert@secunet.com \
    --cc=trix@redhat.com \
    --cc=vdonnefort@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.