Re: [PATCH v2 8/8] LoongArch: Add ORC unwinder support

From: Tiezhu Yang
Date: Tue Oct 17 2023 - 08:33:32 EST




On 10/14/2023 07:40 PM, Huacai Chen wrote:
On Mon, Oct 9, 2023 at 9:03 PM Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> wrote:

The kernel CONFIG_UNWINDER_ORC option enables the ORC unwinder, which is
similar in concept to a DWARF unwinder. The difference is that the format
of the ORC data is much simpler than DWARF, which in turn allows the ORC
unwinder to be much simpler and faster.

...

diff --git a/arch/loongarch/configs/loongson3_defconfig b/arch/loongarch/configs/loongson3_defconfig
index a3b52aa..de911c3 100644
--- a/arch/loongarch/configs/loongson3_defconfig
+++ b/arch/loongarch/configs/loongson3_defconfig
@@ -5,6 +5,7 @@ CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_JIT_ALWAYS_ON=y
Does BPF have something to do with ORC?

This is to avoid the following warning:

CC kernel/bpf/core.o
{standard input}: Assembler messages:
{standard input}:10805: Warning: setting incorrect section attributes for .rodata..c_jump_table
kernel/bpf/core.o: warning: objtool: ___bpf_prog_run+0x44: sibling call from callable instruction with modified stack frame

Because -fno-jump-tables is specified in arch/loongarch/Makefile
for now, but __annotate_jump_table is used in ___bpf_prog_run().

#ifndef CONFIG_BPF_JIT_ALWAYS_ON
...
static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn)
{
...
static const void * const jumptable[256] __annotate_jump_table = {
...
}
#endif

I think we can remove CONFIG_BPF_JIT_ALWAYS_ON in defconfig now
due to the warning is harmless.

Thanks,
Tiezhu