Re: [PATCH v6 0/8] Add objtool, orc and livepatching support for LoongArch

From: Huacai Chen
Date: Wed Feb 07 2024 - 08:28:06 EST


Hi, Josh and Peter,

This version looks good to me now. Should this series go through the
objtool tree or the loongarch tree? If it should go through the
objtool tree, then please apply the first 6 patches with

Acked-by: Huacai Chen <chenhuacai@xxxxxxxxxxx>

And if it can go through the loongarch tree, I will apply the whole 8
patches. Thanks.

Huacai

On Tue, Jan 30, 2024 at 2:17 PM Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> wrote:
>
> This version is based on 6.8-rc2, tested with the latest upstream
> gcc and binutils (20240129).
>
> v6:
> -- Add "-mno-relax" option
> -- Remove "-fno-optimize-sibling-calls" option
> -- Remove "-falign-functions=4 -falign-labels=4" options
> -- Remove "#ifdef CONFIG_CPU_HAS_LBT" in lbt.S
> -- Remove patch "objtool: Check local label about sibling call"
> -- Silence the objtool warnings under CONFIG_FUNCTION_TRACER
> -- Add livepatching support and fix the problems when testing
>
> Tiezhu Yang (8):
> objtool/LoongArch: Enable objtool to be built
> objtool/LoongArch: Implement instruction decoder
> objtool/x86: Separate arch-specific and generic parts
> objtool/LoongArch: Enable orc to be built
> objtool: Check local label in add_dead_ends()
> objtool: Check local label in read_unwind_hints()
> LoongArch: Add ORC stack unwinder support
> LoongArch: Add kernel livepatching support
>
> arch/loongarch/Kconfig | 6 +
> arch/loongarch/Kconfig.debug | 11 +
> arch/loongarch/Makefile | 23 +-
> arch/loongarch/include/asm/Kbuild | 2 +
> arch/loongarch/include/asm/bug.h | 1 +
> arch/loongarch/include/asm/exception.h | 2 +
> arch/loongarch/include/asm/module.h | 7 +
> arch/loongarch/include/asm/orc_header.h | 18 +
> arch/loongarch/include/asm/orc_lookup.h | 31 ++
> arch/loongarch/include/asm/orc_types.h | 58 ++
> arch/loongarch/include/asm/stackframe.h | 3 +
> arch/loongarch/include/asm/thread_info.h | 2 +
> arch/loongarch/include/asm/unwind.h | 20 +-
> arch/loongarch/include/asm/unwind_hints.h | 28 +
> arch/loongarch/kernel/Makefile | 4 +
> arch/loongarch/kernel/entry.S | 5 +
> arch/loongarch/kernel/fpu.S | 7 +
> arch/loongarch/kernel/genex.S | 6 +
> arch/loongarch/kernel/lbt.S | 2 +
> arch/loongarch/kernel/mcount_dyn.S | 6 +
> arch/loongarch/kernel/module.c | 22 +-
> arch/loongarch/kernel/relocate_kernel.S | 8 +-
> arch/loongarch/kernel/rethook_trampoline.S | 1 +
> arch/loongarch/kernel/setup.c | 2 +
> arch/loongarch/kernel/stacktrace.c | 42 ++
> arch/loongarch/kernel/traps.c | 42 +-
> arch/loongarch/kernel/unwind_orc.c | 516 ++++++++++++++++++
> arch/loongarch/kernel/vmlinux.lds.S | 3 +
> arch/loongarch/kvm/switch.S | 9 +-
> arch/loongarch/lib/clear_user.S | 2 +
> arch/loongarch/lib/copy_user.S | 2 +
> arch/loongarch/lib/memcpy.S | 2 +
> arch/loongarch/lib/memset.S | 2 +
> arch/loongarch/mm/tlb.c | 27 +-
> arch/loongarch/mm/tlbex.S | 9 +
> arch/loongarch/vdso/Makefile | 1 +
> include/linux/compiler.h | 9 +
> scripts/Makefile | 7 +-
> tools/arch/loongarch/include/asm/inst.h | 161 ++++++
> tools/arch/loongarch/include/asm/orc_types.h | 58 ++
> tools/include/linux/bitops.h | 11 +
> tools/objtool/Makefile | 4 +
> tools/objtool/arch/loongarch/Build | 3 +
> tools/objtool/arch/loongarch/decode.c | 356 ++++++++++++
> .../arch/loongarch/include/arch/cfi_regs.h | 22 +
> .../objtool/arch/loongarch/include/arch/elf.h | 30 +
> .../arch/loongarch/include/arch/special.h | 33 ++
> tools/objtool/arch/loongarch/orc.c | 171 ++++++
> tools/objtool/arch/loongarch/special.c | 15 +
> tools/objtool/arch/x86/Build | 1 +
> tools/objtool/arch/x86/orc.c | 188 +++++++
> tools/objtool/check.c | 52 +-
> tools/objtool/include/objtool/elf.h | 1 +
> tools/objtool/include/objtool/orc.h | 14 +
> tools/objtool/orc_dump.c | 69 +--
> tools/objtool/orc_gen.c | 113 +---
> 56 files changed, 2011 insertions(+), 239 deletions(-)
> create mode 100644 arch/loongarch/include/asm/orc_header.h
> create mode 100644 arch/loongarch/include/asm/orc_lookup.h
> create mode 100644 arch/loongarch/include/asm/orc_types.h
> create mode 100644 arch/loongarch/include/asm/unwind_hints.h
> create mode 100644 arch/loongarch/kernel/unwind_orc.c
> create mode 100644 tools/arch/loongarch/include/asm/inst.h
> create mode 100644 tools/arch/loongarch/include/asm/orc_types.h
> create mode 100644 tools/objtool/arch/loongarch/Build
> create mode 100644 tools/objtool/arch/loongarch/decode.c
> create mode 100644 tools/objtool/arch/loongarch/include/arch/cfi_regs.h
> create mode 100644 tools/objtool/arch/loongarch/include/arch/elf.h
> create mode 100644 tools/objtool/arch/loongarch/include/arch/special.h
> create mode 100644 tools/objtool/arch/loongarch/orc.c
> create mode 100644 tools/objtool/arch/loongarch/special.c
> create mode 100644 tools/objtool/arch/x86/orc.c
> create mode 100644 tools/objtool/include/objtool/orc.h
>
> --
> 2.42.0
>