From: Nathan Chancellor <nathan@kernel.org>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: 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>,
Daniel Jordan <daniel.m.jordan@oracle.com>,
linux-crypto@vger.kernel.org
Subject: Re: [PATCH 1/2] padata: Do not mark padata_mt_helper() as __init
Date: Wed, 30 Nov 2022 15:37:55 -0700 [thread overview]
Message-ID: <Y4fbQ2POgXFrsHhF@dev-arch.thelio-3990X> (raw)
In-Reply-To: <CAK7LNATMtRu00GYwJW_VvTSTcY6eqnx=4EEj8PFC5adrnHunSw@mail.gmail.com>
On Thu, Dec 01, 2022 at 07:20:47AM +0900, Masahiro Yamada wrote:
> On Wed, Nov 30, 2022 at 4:02 AM Nathan Chancellor <nathan@kernel.org> wrote:
> >
> > When building arm64 allmodconfig + ThinLTO with clang and a proposed
> > modpost update to account for -ffuncton-sections, the following warning
> > appears:
>
>
>
> How to enable -ffuncton-sections for ARCH=arm64 ?
> (in other words, how to set CONFIG_LD_DEAD_CODE_DATA_ELIMINATION ?)
clang LTO implies -fdata-sections and -ffunction-sections.
$ cat foo.c
int foo(void)
{
return 0;
}
$ cat bar.c
extern int foo(void);
int bar(void)
{
return foo();
}
$ clang -c -o foo.{o,c}
$ clang -c -o bar.{o,c}
$ ld.lld -r -o foobar {foo,bar}.o
$ llvm-readelf -s foobar
Symbol table '.symtab' contains 9 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000000000 0 FILE LOCAL DEFAULT ABS foo.c
2: 0000000000000000 0 SECTION LOCAL DEFAULT 1 .text
3: 0000000000000000 0 SECTION LOCAL DEFAULT 3 .eh_frame
4: 0000000000000000 0 SECTION LOCAL DEFAULT 5 .llvm_addrsig
5: 0000000000000000 0 FILE LOCAL DEFAULT ABS bar.c
6: 0000000000000000 0 SECTION LOCAL DEFAULT 2 .comment
7: 0000000000000000 8 FUNC GLOBAL DEFAULT 1 foo
8: 0000000000000010 11 FUNC GLOBAL DEFAULT 1 bar
$ clang -flto -c -o foo.{o,c}
$ clang -flto -c -o bar.{o,c}
$ ld.lld -r -o foobar {foo,bar}.o
$ llvm-readelf -s foobar
Symbol table '.symtab' contains 10 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000000000 0 FILE LOCAL DEFAULT ABS ld-temp.o
2: 0000000000000000 0 SECTION LOCAL DEFAULT 1 .text
3: 0000000000000000 0 SECTION LOCAL DEFAULT 2 .text.foo
4: 0000000000000000 0 SECTION LOCAL DEFAULT 3 .text.bar
5: 0000000000000000 0 SECTION LOCAL DEFAULT 6 .eh_frame
6: 0000000000000000 0 SECTION LOCAL DEFAULT 8 .llvm_addrsig
7: 0000000000000000 0 SECTION LOCAL DEFAULT 5 .comment
8: 0000000000000000 8 FUNC GLOBAL DEFAULT 2 foo
9: 0000000000000000 13 FUNC GLOBAL DEFAULT 3 bar
> In upstream, it is only possible for mips and powerpc.
>
> ./arch/mips/Kconfig:82: select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
> ./arch/powerpc/Kconfig:237: select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
>
>
>
> Is there another proposal to add it for arm64,
> or is this about a downstream kernel?
>
>
>
>
>
> >
> > WARNING: modpost: vmlinux.o: section mismatch in reference: padata_work_init (section: .text.padata_work_init) -> padata_mt_helper (section: .init.text)
> > WARNING: modpost: vmlinux.o: section mismatch in reference: padata_work_init (section: .text.padata_work_init) -> padata_mt_helper (section: .init.text)
> >
> > In both cases, an __init function calls padata_work_init(), which is not
> > marked __init, with padata_mt_helper(), another __init function, as a
> > work function argument.
> >
> > padata_work_init() is called from non-init paths, otherwise it could be
> > marked __init to resolve the warning. Instead, remove __init from
> > padata_mt_helper() to resolve the warning.
> >
> > Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> > ---
> > Cc: Steffen Klassert <steffen.klassert@secunet.com>
> > Cc: Daniel Jordan <daniel.m.jordan@oracle.com>
> > Cc: linux-crypto@vger.kernel.org
> > ---
> > kernel/padata.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/kernel/padata.c b/kernel/padata.c
> > index e5819bb8bd1d..c2271d7e446d 100644
> > --- a/kernel/padata.c
> > +++ b/kernel/padata.c
> > @@ -45,7 +45,7 @@ struct padata_mt_job_state {
> > };
> >
> > static void padata_free_pd(struct parallel_data *pd);
> > -static void __init padata_mt_helper(struct work_struct *work);
> > +static void padata_mt_helper(struct work_struct *work);
> >
> > static int padata_index_to_cpu(struct parallel_data *pd, int cpu_index)
> > {
> > @@ -425,7 +425,7 @@ static int padata_setup_cpumasks(struct padata_instance *pinst)
> > return err;
> > }
> >
> > -static void __init padata_mt_helper(struct work_struct *w)
> > +static void padata_mt_helper(struct work_struct *w)
> > {
> > struct padata_work *pw = container_of(w, struct padata_work, pw_work);
> > struct padata_mt_job_state *ps = pw->pw_data;
> > --
> > 2.38.1
> >
>
>
> --
> Best Regards
> Masahiro Yamada
next prev parent reply other threads:[~2022-11-30 22:37 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-29 19:01 [PATCH 0/2] Fix lack of section mismatch warnings with LTO Nathan Chancellor
2022-11-29 19:01 ` [PATCH 1/2] padata: Do not mark padata_mt_helper() as __init Nathan Chancellor
2022-11-30 22:20 ` Masahiro Yamada
2022-11-30 22:37 ` Nathan Chancellor [this message]
2022-11-30 22:35 ` Masahiro Yamada
2022-12-06 20:15 ` Daniel Jordan
2022-12-07 18:58 ` Nathan Chancellor
2022-11-29 19:01 ` [PATCH 2/2] modpost: Include '.text.*' in TEXT_SECTIONS Nathan Chancellor
2022-11-30 12:23 ` Vincent Donnefort
2022-12-02 14:44 ` Alexander Lobakin
2022-11-29 19:21 ` [PATCH 0/2] Fix lack of section mismatch warnings with LTO Sami Tolvanen
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=Y4fbQ2POgXFrsHhF@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.