mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "tip-bot2 for Josh Poimboeuf" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: kernel test robot <lkp@intel.com>,
	Tiezhu Yang <yangtiezhu@loongson.cn>,
	Josh Poimboeuf <jpoimboe@kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: objtool/urgent] objtool/loongarch: Add unwind hints in prepare_frametrace()
Date: Tue, 01 Apr 2025 08:17:03 -0000	[thread overview]
Message-ID: <174349542583.14745.6124193536449922861.tip-bot2@tip-bot2> (raw)
In-Reply-To: <270cadd8040dda74db2307f23497bb68e65db98d.1743481539.git.jpoimboe@kernel.org>

The following commit has been merged into the objtool/urgent branch of tip:

Commit-ID:     7c977393b8277ed319e92e4b598b26598c9d30c0
Gitweb:        https://git.kernel.org/tip/7c977393b8277ed319e92e4b598b26598c9d30c0
Author:        Josh Poimboeuf <jpoimboe@kernel.org>
AuthorDate:    Mon, 31 Mar 2025 21:26:43 -07:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Tue, 01 Apr 2025 10:10:10 +02:00

objtool/loongarch: Add unwind hints in prepare_frametrace()

If 'regs' points to a local stack variable, prepare_frametrace() stores
all registers to the stack.  This confuses objtool as it expects them to
be restored from the stack later.

The stores don't affect stack tracing, so use unwind hints to hide them
from objtool.

Fixes the following warnings:

  arch/loongarch/kernel/traps.o: warning: objtool: show_stack+0xe0: stack state mismatch: reg1[22]=-1+0 reg2[22]=-2-160
  arch/loongarch/kernel/traps.o: warning: objtool: show_stack+0xe0: stack state mismatch: reg1[23]=-1+0 reg2[23]=-2-152

Fixes: cb8a2ef0848c ("LoongArch: Add ORC stack unwinder support")
Reported-by: kernel test robot <lkp@intel.com>
Tested-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/270cadd8040dda74db2307f23497bb68e65db98d.1743481539.git.jpoimboe@kernel.org
Closes: https://lore.kernel.org/oe-kbuild-all/202503280703.OARM8SrY-lkp@intel.com/
---
 arch/loongarch/include/asm/stacktrace.h   |  3 +++
 arch/loongarch/include/asm/unwind_hints.h | 10 +++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/arch/loongarch/include/asm/stacktrace.h b/arch/loongarch/include/asm/stacktrace.h
index f23adb1..fc8b647 100644
--- a/arch/loongarch/include/asm/stacktrace.h
+++ b/arch/loongarch/include/asm/stacktrace.h
@@ -8,6 +8,7 @@
 #include <asm/asm.h>
 #include <asm/ptrace.h>
 #include <asm/loongarch.h>
+#include <asm/unwind_hints.h>
 #include <linux/stringify.h>
 
 enum stack_type {
@@ -43,6 +44,7 @@ int get_stack_info(unsigned long stack, struct task_struct *task, struct stack_i
 static __always_inline void prepare_frametrace(struct pt_regs *regs)
 {
 	__asm__ __volatile__(
+		UNWIND_HINT_SAVE
 		/* Save $ra */
 		STORE_ONE_REG(1)
 		/* Use $ra to save PC */
@@ -80,6 +82,7 @@ static __always_inline void prepare_frametrace(struct pt_regs *regs)
 		STORE_ONE_REG(29)
 		STORE_ONE_REG(30)
 		STORE_ONE_REG(31)
+		UNWIND_HINT_RESTORE
 		: "=m" (regs->csr_era)
 		: "r" (regs->regs)
 		: "memory");
diff --git a/arch/loongarch/include/asm/unwind_hints.h b/arch/loongarch/include/asm/unwind_hints.h
index a01086a..2c68bc7 100644
--- a/arch/loongarch/include/asm/unwind_hints.h
+++ b/arch/loongarch/include/asm/unwind_hints.h
@@ -23,6 +23,14 @@
 	UNWIND_HINT sp_reg=ORC_REG_SP type=UNWIND_HINT_TYPE_CALL
 .endm
 
-#endif /* __ASSEMBLY__ */
+#else /* !__ASSEMBLY__ */
+
+#define UNWIND_HINT_SAVE \
+	UNWIND_HINT(UNWIND_HINT_TYPE_SAVE, 0, 0, 0)
+
+#define UNWIND_HINT_RESTORE \
+	UNWIND_HINT(UNWIND_HINT_TYPE_RESTORE, 0, 0, 0)
+
+#endif /* !__ASSEMBLY__ */
 
 #endif /* _ASM_LOONGARCH_UNWIND_HINTS_H */

  parent reply	other threads:[~2025-04-01  8:17 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-01  4:26 [PATCH 00/11] Yet more objtool fixes Josh Poimboeuf
2025-04-01  4:26 ` [PATCH 01/11] objtool: Silence more KCOV warnings, part 2 Josh Poimboeuf
2025-04-01  7:15   ` [tip: objtool/urgent] " tip-bot2 for Josh Poimboeuf
2025-04-01  4:26 ` [PATCH 02/11] objtool: Ignore end-of-section jumps for KCOV/GCOV Josh Poimboeuf
2025-04-01  7:15   ` [tip: objtool/urgent] " tip-bot2 for Josh Poimboeuf
2025-04-01  4:26 ` [PATCH 03/11] objtool: Append "()" to function name in "unexpected end of section" warning Josh Poimboeuf
2025-04-01  7:15   ` [tip: objtool/urgent] " tip-bot2 for Josh Poimboeuf
2025-04-01  4:26 ` [PATCH 04/11] Revert "objtool: Increase per-function WARN_FUNC() rate limit" Josh Poimboeuf
2025-04-01  7:15   ` [tip: objtool/urgent] " tip-bot2 for Josh Poimboeuf
2025-04-01  4:26 ` [PATCH 05/11] objtool: Always fail on fatal errors Josh Poimboeuf
2025-04-01  7:15   ` [tip: objtool/urgent] " tip-bot2 for Josh Poimboeuf
2025-04-01  4:26 ` [PATCH 06/11] objtool: Change "warning:" to "error:" for " Josh Poimboeuf
2025-04-01  7:15   ` [tip: objtool/urgent] objtool: Change "warning:" to "error: " " tip-bot2 for Josh Poimboeuf
2025-04-01  4:26 ` [PATCH 07/11] objtool: Fix verbose disassembly if CROSS_COMPILE isn't set Josh Poimboeuf
2025-04-01  7:15   ` [tip: objtool/urgent] " tip-bot2 for David Laight
2025-04-01  4:26 ` [PATCH 08/11] objtool/loongarch: Add unwind hints in prepare_frametrace() Josh Poimboeuf
2025-04-01  7:08   ` Ingo Molnar
2025-04-01  7:45     ` Tiezhu Yang
2025-04-01  8:10       ` Ingo Molnar
2025-04-01  8:29         ` Tiezhu Yang
2025-04-01  8:17   ` tip-bot2 for Josh Poimboeuf [this message]
2025-04-01  4:26 ` [PATCH 09/11] sched/smt: Always inline sched_smt_active() Josh Poimboeuf
2025-04-01  7:15   ` [tip: objtool/urgent] " tip-bot2 for Josh Poimboeuf
2025-04-01  4:26 ` [PATCH 10/11] context_tracking: Always inline ct_{nmi,irq}_{enter,exit}() Josh Poimboeuf
2025-04-01  7:15   ` [tip: objtool/urgent] " tip-bot2 for Josh Poimboeuf
2025-04-01  7:26   ` tip-bot2 for Josh Poimboeuf
2025-04-01  4:26 ` [PATCH 11/11] rcu-tasks: Always inline rcu_irq_work_resched() Josh Poimboeuf
2025-04-01  7:14   ` [tip: objtool/urgent] " tip-bot2 for Josh Poimboeuf
2025-04-01  7:26   ` tip-bot2 for Josh Poimboeuf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=174349542583.14745.6124193536449922861.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=jpoimboe@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=mingo@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    --cc=yangtiezhu@loongson.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®