Thread (10 messages) flat view 10 messages, 3 authors, 2021-01-22

Re: [PATCH v5] pgo: add clang's Profile Guided Optimization infrastructure

From: Nick Desaulniers <ndesaulniers@google.com>
Date: 2021-01-22 01:53:52
Also in: linux-kbuild, lkml

On Thu, Jan 21, 2021 at 5:49 PM Sedat Dilek [off-list ref] wrote:
On Fri, Jan 22, 2021 at 2:43 AM Nick Desaulniers
[off-list ref] wrote:
quoted
On Wed, Jan 20, 2021 at 6:03 PM Sedat Dilek [off-list ref] wrote:
quoted
On Mon, Jan 18, 2021 at 10:56 PM Bill Wendling [off-list ref] wrote:
quoted
On Mon, Jan 18, 2021 at 9:26 AM Sedat Dilek [off-list ref] wrote:
quoted
On Mon, Jan 18, 2021 at 1:39 PM Sedat Dilek [off-list ref] wrote:
quoted
On Mon, Jan 18, 2021 at 3:32 AM Bill Wendling [off-list ref] wrote:
quoted
On Sun, Jan 17, 2021 at 4:27 PM Sedat Dilek [off-list ref] wrote:
quoted
[ big snip ]
[More snippage.]
quoted
[ CC Fangrui ]

With the attached...

   [PATCH v3] module: Ignore _GLOBAL_OFFSET_TABLE_ when warning for
undefined symbols

...I was finally able to boot into a rebuild PGO-optimized Linux-kernel.
For details see ClangBuiltLinux issue #1250 "Unknown symbol
_GLOBAL_OFFSET_TABLE_ loading kernel modules".
Thanks for confirming that this works with the above patch.
quoted
@ Bill Nick Sami Nathan

1, Can you say something of the impact passing "LLVM_IAS=1" to make?
The integrated assembler and this option are more-or-less orthogonal
to each other. One can still use the GNU assembler with PGO. If you're
having an issue, it may be related to ClangBuiltLinux issue #1250.
quoted
2. Can you please try Nick's DWARF v5 support patchset v5 and
CONFIG_DEBUG_INFO_DWARF5=y (see attachments)?
I know Nick did several tests with PGO. He may have looked into it
already, but we can check.
Reproducible.

LLVM_IAS=1 + DWARF5 = Not bootable

I will try:

LLVM_IAS=1 + DWARF4
I was not able to boot into such a built Linux-kernel.
PGO will have no effect on debugging data. If this is an issue with
DWARF, then it's likely orthogonal to the PGO patch.
quoted
For me worked: DWARF2 and LLVM_IAS=1 *not* set.

Of course, this could be an issue with my system's LLVM/Clang.

Debian clang version
12.0.0-++20210115111113+45ef053bd709-1~exp1~20210115101809.3724
Please use the official clang 11.0.1 release
(https://releases.llvm.org/download.html), modifying the
kernel/pgo/Kconfig as I suggested above. The reason we specify clang
12 for the minimal version is because of an issue that was recently
fixed.
I downgraded to clang-11.1.0-rc1.
( See attachment. )

Doing the first build with PGO enabled plus DWARF5 and LLVM_IAS=1 works.

But again after generating vmlinux.profdata and doing the PGO-rebuild
- the resulting Linux-kernel does NOT boot in QEMU or on bare metal.
With GNU/as I can boot.

So this is independent of DWARF v4 or DWARF v5 (LLVM_IAS=1 and DWARF
v2 is not allowed).
There is something wrong (here) with passing LLVM_IAS=1 to make when
doing the PGO-rebuild.

Can someone please verify and confirm that the PGO-rebuild with
LLVM_IAS=1 boots or boots not?
I was able to build+boot with LLVM_IAS=1 on my personal laptop (no
dwarf 5, just mainline+v5).
To clarify:

I can build a PGO-enabled Linux-kernel and boot it.
Afterwards generate a vmlinux.profdata.
In a next step: A rebuild without PGO-Kconfig disabled + LLVM_IAS=1
does not boot.
Does the rebuild produce the hash warnings previously reported?

Can you send your .config for this?
-- 
Thanks,
~Nick Desaulniers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help