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

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

From: Sedat Dilek <hidden>
Date: 2021-01-18 17:36:32
Also in: linux-kbuild, lkml

On Mon, Jan 18, 2021 at 1:39 PM Sedat Dilek [off-list ref] wrote:
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.

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

Can you give me a LLVM commit-id where you had success with LLVM_IAS=1
and especially CONFIG_DEBUG_INFO_DWARF5=y?
Success means I was able to boot in QEMU and/or bare metal.

Thanks.

Regards,
- Sedat -
quoted
quoted
I would like to know what the impact of the Clang's Integrated
Assembler and DWARF v5 are.

I dropped both means...

1. Do not pass "LLVM_IAS=1" to make.
2. Use default DWARF v2 (with Nick's patchset: CONFIG_DEBUG_INFO_DWARF2=y).

...for a successfull build and boot on bare metal.
[Next message]
quoted
On each rebuild I need to pass to make ...?

  LLVM=1 -fprofile-use=vmlinux.profdata
Yes.
quoted
Did you try together with passing LLVM_IAS=1 to make?
One of my tests was with the integrated assembler enabled. Are you
finding issues with it?

The problem with using top-of-tree clang is that it's not necessarily
stable. You could try using the clang 11.x release (changing the
"CLANG_VERSION >= 120000" in kernel/pgo/Kconfig/ to "CLANG_VERSION >=
110000").

-bw
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help