-
Notifications
You must be signed in to change notification settings - Fork 63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[linux-6.6.y] loongarch64: Re-apply livepatching/objtool changes and backport a fix #332
[linux-6.6.y] loongarch64: Re-apply livepatching/objtool changes and backport a fix #332
Conversation
This reverts commit d390ea1.
This reverts commit 66dafe8.
This reverts commit 8d38cb6.
This reverts commit 450777d.
This reverts commit d09da94.
This reverts commit ceb9176.
This reverts commit 3011a43.
…nter()" This reverts commit a2351c1.
…thin-add-sub GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for "label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead. Objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table (static key implementation) and etc. so it will produce some warnings. This is causing the kernel CI systems to complain everywhere. For GAS we can check if -mthin-add-sub option is available to know if R_LARCH_{32,64}_PCREL are supported. For Clang, we require Clang >= 18 and Clang >= 17 already supports R_LARCH_{32,64}_PCREL. But unfortunately Clang has some other issues, so we disable objtool for Clang at present. Note that __jump_table here is not generated by the compiler, so -fno-jump-table is completely irrelevant for this issue. Fixes: cb8a2ef ("LoongArch: Add ORC stack unwinder support") Closes: https://lore.kernel.org/loongarch/Zl5m1ZlVmGKitAof@yujie-X299/ Closes: https://lore.kernel.org/loongarch/[email protected]/ Closes: https://lore.kernel.org/loongarch/[email protected]/ Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=816029e06768 Link: llvm/llvm-project@42cb3c6346fc Signed-off-by: Xi Ruoyao <[email protected]> Signed-off-by: Huacai Chen <[email protected]>
ifdef CONFIG_UNWINDER_ORC | ||
orc_hash_h := arch/$(SRCARCH)/include/generated/asm/orc_hash.h | ||
orc_hash_sh := $(srctree)/scripts/orc_hash.sh | ||
targets += $(orc_hash_h) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ERROR: trailing whitespace
orc_hash_h := arch/$(SRCARCH)/include/generated/asm/orc_hash.h | ||
orc_hash_sh := $(srctree)/scripts/orc_hash.sh | ||
targets += $(orc_hash_h) | ||
quiet_cmd_orc_hash = GEN $@ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ERROR: trailing whitespace
orc_hash_sh := $(srctree)/scripts/orc_hash.sh | ||
targets += $(orc_hash_h) | ||
quiet_cmd_orc_hash = GEN $@ | ||
cmd_orc_hash = mkdir -p $(dir $@); \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
orc_hash_sh := $(srctree)/scripts/orc_hash.sh | ||
targets += $(orc_hash_h) | ||
quiet_cmd_orc_hash = GEN $@ | ||
cmd_orc_hash = mkdir -p $(dir $@); \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ERROR: patch seems to be corrupt (line wrapped?)
quiet_cmd_orc_hash = GEN $@ | ||
cmd_orc_hash = mkdir -p $(dir $@); \ | ||
$(CONFIG_SHELL) $(orc_hash_sh) < $< > $@ | ||
$(orc_hash_h): $(srctree)/arch/loongarch/include/asm/orc_types.h $(orc_hash_sh) FORCE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ERROR: trailing whitespace
cmd_orc_hash = mkdir -p $(dir $@); \ | ||
$(CONFIG_SHELL) $(orc_hash_sh) < $< > $@ | ||
$(orc_hash_h): $(srctree)/arch/loongarch/include/asm/orc_types.h $(orc_hash_sh) FORCE | ||
$(call if_changed,orc_hash) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ERROR: trailing whitespace
$(call if_changed,orc_hash) | ||
archprepare: $(orc_hash_h) | ||
endif | ||
|
||
ifdef CONFIG_DYNAMIC_FTRACE | ||
KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ERROR: Avoid using diff content in the commit message - patch(1) might not work
* The header is currently a 20-byte hash of the ORC entry definition; see | ||
* scripts/orc_hash.sh. | ||
*/ | ||
#define ORC_HEADER \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
* Given an input address offset, the corresponding lookup table entry | ||
* specifies a subset of the .orc_unwind table to search. | ||
* | ||
* Each block represents the end of the previous range and the start of the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
* registers on the stack. | ||
* | ||
* ORC_REG_PREV_SP, also known as DWARF Call Frame Address (CFA), is the | ||
* address of the previous frame: the caller's SP before it called the current |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
@@ -3,6 +3,8 @@ | |||
# Makefile for the Linux/LoongArch kernel. | |||
# | |||
|
|||
OBJECT_FILES_NON_STANDARD_head.o := y | |||
|
|||
extra-y := vmlinux.lds | |||
|
|||
obj-y += head.o cpu-probe.o cacheinfo.o env.o setup.o entry.o genex.o \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
@@ -20,6 +20,7 @@ | |||
#include <linux/kernel.h> | |||
#include <asm/alternative.h> | |||
#include <asm/inst.h> | |||
#include <asm/unwind.h> | |||
|
|||
static int rela_stack_push(s64 stack_value, s64 *rela_stack, size_t *rela_stack_top) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
[EXCCODE_BTDIS] = handle_lbt, | ||
}; | ||
EXPORT_SYMBOL_GPL(exception_table); | ||
|
||
static void show_backtrace(struct task_struct *task, const struct pt_regs *regs, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
|
||
ORC_HEADER; | ||
|
||
#define orc_warn(fmt, ...) \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
[ Upstream commit 5f1d18de79180deac2822c93e431bbe547f7d3ce ] Add a test case which replaces an active ingress qdisc while keeping the miniq in-tact during the transition period to the new clsact qdisc. # ./vmtest.sh -- ./test_progs -t tc_link [...] ./test_progs -t tc_link [ 3.412871] bpf_testmod: loading out-of-tree module taints kernel. [ 3.413343] bpf_testmod: module verification failed: signature and/or required key missing - tainting kernel deepin-community#332 tc_links_after:OK deepin-community#333 tc_links_append:OK deepin-community#334 tc_links_basic:OK deepin-community#335 tc_links_before:OK deepin-community#336 tc_links_chain_classic:OK deepin-community#337 tc_links_chain_mixed:OK deepin-community#338 tc_links_dev_chain0:OK deepin-community#339 tc_links_dev_cleanup:OK deepin-community#340 tc_links_dev_mixed:OK deepin-community#341 tc_links_ingress:OK deepin-community#342 tc_links_invalid:OK deepin-community#343 tc_links_prepend:OK deepin-community#344 tc_links_replace:OK deepin-community#345 tc_links_revision:OK Summary: 14/0 PASSED, 0 SKIPPED, 0 FAILED Signed-off-by: Daniel Borkmann <[email protected]> Cc: Martin KaFai Lau <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Martin KaFai Lau <[email protected]> Signed-off-by: Sasha Levin <[email protected]> (cherry picked from commit e41db26543ef24b6906a832f73119cfadcd99f35)
[ Upstream commit 5f1d18de79180deac2822c93e431bbe547f7d3ce ] Add a test case which replaces an active ingress qdisc while keeping the miniq in-tact during the transition period to the new clsact qdisc. # ./vmtest.sh -- ./test_progs -t tc_link [...] ./test_progs -t tc_link [ 3.412871] bpf_testmod: loading out-of-tree module taints kernel. [ 3.413343] bpf_testmod: module verification failed: signature and/or required key missing - tainting kernel #332 tc_links_after:OK #333 tc_links_append:OK #334 tc_links_basic:OK #335 tc_links_before:OK #336 tc_links_chain_classic:OK #337 tc_links_chain_mixed:OK #338 tc_links_dev_chain0:OK #339 tc_links_dev_cleanup:OK #340 tc_links_dev_mixed:OK #341 tc_links_ingress:OK #342 tc_links_invalid:OK #343 tc_links_prepend:OK #344 tc_links_replace:OK #345 tc_links_revision:OK Summary: 14/0 PASSED, 0 SKIPPED, 0 FAILED Signed-off-by: Daniel Borkmann <[email protected]> Cc: Martin KaFai Lau <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Martin KaFai Lau <[email protected]> Signed-off-by: Sasha Levin <[email protected]> (cherry picked from commit e41db26543ef24b6906a832f73119cfadcd99f35)
Re-apply the livepatching/objtool changes, which were reverted by mistake. Also backport a patch to fix build-time compatibility with Binutils <= 2.42.