All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sedat Dilek <sedat.dilek@gmail.com>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
	 Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	 Nick Desaulniers <ndesaulniers@google.com>,
	Nicolas Schier <nicolas@fjasle.eu>,
	 Peter Zijlstra <peterz@infradead.org>,
	linux-modules <linux-modules@vger.kernel.org>,
	 clang-built-linux <llvm@lists.linux.dev>,
	Ard Biesheuvel <ardb@kernel.org>,
	 Sami Tolvanen <samitolvanen@google.com>
Subject: Re: [PATCH v6 00/10] kbuild: yet another series of cleanups (modpost, LTO, MODULE_REL_CRCS, export.h)
Date: Mon, 23 May 2022 00:34:51 +0200	[thread overview]
Message-ID: <CA+icZUU8EAKpuXB996B+BNUcnRzsm5DvrtX-MtXcRm5aX2X8Lg@mail.gmail.com> (raw)
In-Reply-To: <CA+icZUXMWVr-zXm09zV2=pbLMFFOt=phHVT3B0CXVLBG=k8HWQ@mail.gmail.com>

On Sun, May 22, 2022 at 6:18 PM Sedat Dilek <sedat.dilek@gmail.com> wrote:
>
> On Sun, May 22, 2022 at 6:10 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > On Sun, May 22, 2022 at 11:16 PM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> > >
> > > On Sun, May 22, 2022 at 11:45 AM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> > > >
> > > > On Sun, May 22, 2022 at 8:50 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> > > > >
> > > > > On Sun, May 22, 2022 at 10:45 AM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> > > > > >
> > > > > > On Fri, May 13, 2022 at 4:31 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
> > > > > > >
> > > > > > > On Fri, May 13, 2022 at 8:42 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > > This is the third batch of cleanups in this development cycle.
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > This series is available at
> > > > > > > git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
> > > > > > >  lto-cleanup-v6
> > > > > > >
> > > > > >
> > > > > > Hi Masahiro,
> > > > > >
> > > > > > I cloned the repository on top of latest Linus Git.
> > > > > >
> > > > > > Not able to boot in Quemu - Not able to boot on bare metal.
> > > > > >
> > > > > > $ grep module_layout log_quemu-5.18.0-rc7-2-amd64-clang14-lto.txt
> > > > > > 366:[    2.173265] floppy: disagrees about version of symbol module_layout
> > > > > > 367:[    2.198746] scsi_common: disagrees about version of symbol module_layout
> > > > > > 368:[    2.205573] i2c_piix4: disagrees about version of symbol module_layout
> > > > > > 369:[    2.210610] psmouse: disagrees about version of symbol module_layout
> > > > > > 370:[    2.225138] scsi_common: disagrees about version of symbol module_layout
> > > > > > 371:[    2.235536] scsi_common: disagrees about version of symbol module_layout
> > > > > > 375:Begin: Running /scripts/local-premount ... [    2.298555]
> > > > > > crc32c_intel: disagrees about version of symbol module_layout
> > > > > > 376:[    2.303335] crc32c_generic: disagrees about version of symbol
> > > > > > module_layout
> > > > > > 377:[    2.306667] libcrc32c: disagrees about version of symbol module_layout
> > > > > >
> > > > > > Infos: LLVM-14 + CONFIG_LTO_CLANG_THIN=y
> > > > > >
> > > > > > My linux-config and qemu-log are attached.
> > > > > >
> > > > >
> > > > >
> > > > > Thanks for your testing.
> > > > >
> > > > > I was also able to reproduce this issue.
> > > > >
> > > > >
> > > > > The problematic parts are:
> > > > >
> > > > > [    2.298555] crc32c_intel: disagrees about version of symbol module_layout
> > > > > [    2.303335] crc32c_generic: disagrees about version of symbol module_layout
> > > > > [    2.306667] libcrc32c: disagrees about version of symbol module_layout
> > > > >
> > > > >
> > > > >
> > > > > When CONFIG_LTO_CLANG_THIN=y,
> > > > > I cannot see any __crc_* symbols in "nm  vmlinux".
> > > > >
> > > > > Perhaps, LTO might have discarded all the __crc_* symbols
> > > > > from vmlinux, but I am still checking the details...
> > > > >
> > > >
> > > > Thanks for taking care.
> > > >
> > > > Just for the records:
> > > >
> > > > $ grep CONFIG_MODVERSIONS /boot/config-5.18.0-rc7-2-amd64-clang14-lto
> > > > CONFIG_MODVERSIONS=y
> > > >
> > >
> > > Did not try CONFIG_MODVERSIONS=n.
> > >
> > > We have a new file:
> > >
> > > [ include/linux/export-internal.h ]
> > > /* SPDX-License-Identifier: GPL-2.0-only */
> > > /*
> > > * Please do not include this explicitly.
> > > * This is used by C files generated by modpost.
> > > */
> > >
> > > #ifndef __LINUX_EXPORT_INTERNAL_H__
> > > #define __LINUX_EXPORT_INTERNAL_H__
> > >
> > > #include <linux/compiler.h>
> > > #include <linux/types.h>
> > >
> > > #define SYMBOL_CRC(sym, crc, sec)   \
> > >        u32 __section("___kcrctab" sec "+" #sym) __crc_##sym = crc
> > >
> > > #endif /* __LINUX_EXPORT_INTERNAL_H__ */
> > >
> > > But we discard __kcrctab in scripts/module.lds.S file.
> >
> >
> > No.
> > scripts/module.lds.S keeps __kcrctab.
> >
> >
> > The discarded sections are specified a few lines above:
> >
> > /DISCARD/ : {
> >          *(.discard)
> >          *(.discard.*)
> >          SANITIZER_DISCARDS
> > }
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > > Maybe we need:
> >
> >
> > No.
> >
> > The problem is __crc_* symbols are dropped from vmlinux
> > when CONFIG_LTO_CLANG=y.
> >
> >
> > Please try this fixup:
> > https://lore.kernel.org/linux-kbuild/20220522160117.599023-1-masahiroy@kernel.org/T/#u
> >
>
> Thanks!
>
> Will give it a try - will report in a few hours.
>
> -Sedat-

I was able to build and boot on bare metal.

Feel free to add my...

Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # LLVM-14 (x86-64)

-Sedat-

>
> >
> >
> >
> >
> >
> > >
> > > $ git diff scripts/module.lds.S
> > > diff --git a/scripts/module.lds.S b/scripts/module.lds.S
> > > index 1d0e1e4dc3d2..c04b596c364b 100644
> > > --- a/scripts/module.lds.S
> > > +++ b/scripts/module.lds.S
> > > @@ -21,8 +21,6 @@ SECTIONS {
> > >
> > >        __ksymtab               0 : { *(SORT(___ksymtab+*)) }
> > >        __ksymtab_gpl           0 : { *(SORT(___ksymtab_gpl+*)) }
> > > -       __kcrctab               0 : { *(SORT(___kcrctab+*)) }
> > > -       __kcrctab_gpl           0 : { *(SORT(___kcrctab_gpl+*)) }
> > >
> > >        .ctors                  0 : ALIGN(8) { *(SORT(.ctors.*)) *(.ctors) }
> > >        .init_array             0 : ALIGN(8) { *(SORT(.init_array.*))
> > > *(.init_array) }
> > >
> > > Or even?
> > >
> > > $ git diff scripts/kallsyms.c
> > > diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c
> > > index 8caabddf817c..fb3601fe8aa3 100644
> > > --- a/scripts/kallsyms.c
> > > +++ b/scripts/kallsyms.c
> > > @@ -109,7 +109,6 @@ static bool is_ignored_symbol(const char *name, char type)
> > >        static const char * const ignored_prefixes[] = {
> > >                "$",                    /* local symbols for ARM, MIPS, etc. */
> > >                ".L",                   /* local labels,
> > > .LBB,.Ltmpxxx,.L__unnamed_xx,.LASANPC, etc. */
> > > -               "__crc_",               /* modversions */
> > >                "__efistub_",           /* arm64 EFI stub namespace */
> > >                "__kvm_nvhe_",          /* arm64 non-VHE KVM namespace */
> > >                "__AArch64ADRPThunk_",  /* arm64 lld */
> > >
> > > - Sedat -
> >
> >
> >
> > --
> > Best Regards
> > Masahiro Yamada

  reply	other threads:[~2022-05-22 22:35 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-13 11:39 [PATCH v6 00/10] kbuild: yet another series of cleanups (modpost, LTO, MODULE_REL_CRCS, export.h) Masahiro Yamada
2022-05-13 11:39 ` [PATCH v6 01/10] modpost: extract symbol versions from *.cmd files Masahiro Yamada
2022-05-28 22:47   ` Guenter Roeck
2022-05-29  4:27     ` Masahiro Yamada
2022-05-13 11:39 ` [PATCH v6 02/10] kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS Masahiro Yamada
2022-08-20 10:02   ` Build/boot problem with 7b4537199a4a (Re: [PATCH v6 02/10] kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS) Christophe Leroy
2022-08-20 10:02     ` Christophe Leroy
2022-08-20 12:05     ` Sedat Dilek
2022-08-20 12:05       ` Sedat Dilek
2022-08-20 14:10       ` Christophe Leroy
2022-08-20 14:10         ` Christophe Leroy
2022-08-20 12:51     ` Masahiro Yamada
2022-08-20 12:51       ` Masahiro Yamada
2022-08-20 14:15       ` Christophe Leroy
2022-08-20 14:15         ` Christophe Leroy
2022-08-20 17:01         ` Masahiro Yamada
2022-08-20 17:01           ` Masahiro Yamada
2022-08-20 17:51           ` Christophe Leroy
2022-08-20 17:51             ` Christophe Leroy
2022-05-13 11:39 ` [PATCH v6 03/10] kbuild: stop merging *.symversions Masahiro Yamada
2022-05-13 11:39 ` [PATCH v6 04/10] genksyms: adjust the output format to modpost Masahiro Yamada
2022-05-13 11:39 ` [PATCH v6 05/10] kbuild: do not create *.prelink.o for Clang LTO or IBT Masahiro Yamada
2022-05-13 11:39 ` [PATCH v6 06/10] kbuild: check static EXPORT_SYMBOL* by script instead of modpost Masahiro Yamada
2022-05-25  8:31   ` Guenter Roeck
2022-05-25 10:51     ` Masahiro Yamada
2022-06-07 14:22   ` Jon Hunter
2022-06-07 14:25     ` Nathan Chancellor
2022-06-07 14:34       ` Jon Hunter
2022-05-13 11:39 ` [PATCH v6 07/10] kbuild: make built-in.a rule robust against too long argument error Masahiro Yamada
2022-05-13 11:39 ` [PATCH v6 08/10] kbuild: make *.mod " Masahiro Yamada
2022-05-13 11:39 ` [PATCH v6 09/10] kbuild: add cmd_and_savecmd macro Masahiro Yamada
2022-05-13 11:39 ` [PATCH v6 10/10] kbuild: rebuild multi-object modules when objtool is updated Masahiro Yamada
2022-05-13 12:20 ` [PATCH v6 00/10] kbuild: yet another series of cleanups (modpost, LTO, MODULE_REL_CRCS, export.h) Masahiro Yamada
2022-05-22  1:44   ` Sedat Dilek
2022-05-22  6:49     ` Masahiro Yamada
2022-05-22  9:45       ` Sedat Dilek
2022-05-22 14:15         ` Sedat Dilek
2022-05-22 16:09           ` Masahiro Yamada
2022-05-22 16:18             ` Sedat Dilek
2022-05-22 22:34               ` Sedat Dilek [this message]
2022-08-05 23:20   ` matoro
2022-08-06  7:23     ` Sedat Dilek
2022-08-06 13:12       ` matoro
2022-08-08  5:54     ` Masahiro Yamada
2022-08-08 13:26       ` matoro
2022-08-08 17:36         ` Masahiro Yamada
2022-08-08 18:42           ` matoro
2022-08-09 15:20             ` 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=CA+icZUU8EAKpuXB996B+BNUcnRzsm5DvrtX-MtXcRm5aX2X8Lg@mail.gmail.com \
    --to=sedat.dilek@gmail.com \
    --cc=ardb@kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-modules@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=masahiroy@kernel.org \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=nicolas@fjasle.eu \
    --cc=peterz@infradead.org \
    --cc=samitolvanen@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.