| From: |
| George Guo <dongtai.guo-AT-linux.dev> |
| To: |
| chenhuacai-AT-kernel.org, jpoimboe-AT-kernel.org, peterz-AT-infradead.org, jikos-AT-kernel.org, mbenes-AT-suse.cz, pmladek-AT-suse.com |
| Subject: |
| [PATCH 0/8] LoongArch: Add livepatch build (KLP) support |
| Date: |
| Thu, 04 Jun 2026 14:53:09 +0800 |
| Message-ID: |
| <20260604065317.219777-1-dongtai.guo@linux.dev> |
| Cc: |
| kernel-AT-xen0n.name, joe.lawrence-AT-redhat.com, rostedt-AT-goodmis.org, ardb-AT-kernel.org, nathan-AT-kernel.org, nick.desaulniers+lkml-AT-gmail.com, yangtiezhu-AT-loongson.cn, jiaxun.yang-AT-flygoat.com, xry111-AT-xry111.site, liukexin-AT-kylinos.cn, loongarch-AT-lists.linux.dev, live-patching-AT-vger.kernel.org, llvm-AT-lists.linux.dev, linux-kernel-AT-vger.kernel.org, George Guo <guodongtai-AT-kylinos.cn> |
| Archive-link: |
| Article |
From: George Guo <guodongtai@kylinos.cn>
This series adds LoongArch support for the klp-build livepatch tooling,
enabling automated livepatch module generation using objtool on
LoongArch.
It is based on Josh Poimboeuf's klp-build series [1] (see base-commit
below) and extends it with the LoongArch-specific objtool and build
pieces, plus a few LoongArch toolchain/relocation fixes required to make
livepatch modules load and run correctly.
Overview:
- Patch 1 wires up LoongArch klp-build (objtool-based livepatch module
generation).
- Patches 2-3 add the objtool bits LoongArch needs: arch_adjusted_addend()
and the special section entry sizes (.altinstructions, __ex_table,
__bug_table, __jump_table) so objtool can process livepatch modules.
- Patches 4-5 fix kernel panics seen when loading livepatch modules,
caused by LoongArch code-generation/relocation assumptions:
* disable -mdirect-extern-access for klp builds (the module loader
relies on GOT entries for external symbol references),
* force -fPIC so same-compilation-unit symbol references relocate
correctly.
- Patch 6 fix EFI linking when building with -fdata-sections.
- Patch 7 implements arch_jump_opcode_bytes() so klp checksums for
jump/call instructions are position-independent, mirroring x86/arm64.
- Patch 8 adds KLP_SYSCALL_DEFINEx() support for LoongArch.
Testing:
- objtool builds cleanly for LoongArch.
- Livepatch modules were generated and loaded on a LoongArch machine;
the panics addressed by patches 4-5 no longer reproduce.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/jpoimboe/...
George Guo (8):
LoongArch: Add livepatch build (KLP) support
objtool/LoongArch: Add arch_adjusted_addend() for KLP support
LoongArch: Add special section entry sizes for KLP support
livepatch/klp-build: disable direct-extern-access for LoongArch to fix
kernel panic
LoongArch: fix kernel panic with -fPIC for same-compilation-unit
symbol references
LoongArch: Fix EFI linking with -fdata-sections
objtool/klp: Add LoongArch jump opcode bytes support
klp-build: Add LoongArch syscall patching macro
arch/loongarch/Kconfig | 1 +
arch/loongarch/include/asm/alternative-asm.h | 5 ++-
arch/loongarch/include/asm/alternative.h | 6 ++-
arch/loongarch/include/asm/asm-extable.h | 10 ++++-
arch/loongarch/include/asm/bug.h | 15 ++++++-
arch/loongarch/include/asm/jump_label.h | 9 +++-
arch/loongarch/kernel/asm-offsets.c | 36 +++++++++++++++
arch/loongarch/kernel/head.S | 1 +
arch/loongarch/kernel/vmlinux.lds.S | 2 +-
include/linux/livepatch_helpers.h | 22 ++++++++++
scripts/livepatch/klp-build | 16 ++++++-
tools/objtool/Makefile | 3 +-
tools/objtool/arch/loongarch/decode.c | 46 ++++++++++++++++++++
13 files changed, 161 insertions(+), 11 deletions(-)
base-commit: 85afaba140a4b9f20fe8c8a64b24fc85f022d981
--
2.25.1