From: guoren@kernel.org
To: anup@brainfault.org, paul.walmsley@sifive.com,
palmer@dabbelt.com, conor.dooley@microchip.com, heiko@sntech.de,
rostedt@goodmis.org, mhiramat@kernel.org, jolsa@redhat.com,
bp@suse.de, jpoimboe@kernel.org, suagrfillet@gmail.com,
andy.chiu@sifive.com, mark.rutland@arm.com
Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org,
Guo Ren <guoren@kernel.org>
Subject: [PATCH V4 1/7] riscv: ftrace: Fixup panic by disabling preemption
Date: Mon, 28 Nov 2022 22:32:24 -0500 [thread overview]
Message-ID: <20221129033230.255947-2-guoren@kernel.org> (raw)
In-Reply-To: <20221129033230.255947-1-guoren@kernel.org>
From: Andy Chiu <andy.chiu@sifive.com>
In RISCV, we must use an AUIPC + JALR pair to encode an immediate,
forming a jump that jumps to an address over 4K. This may cause errors
if we want to enable kernel preemption and remove dependency from
patching code with stop_machine(). For example, if a task was switched
out on auipc. And, if we changed the ftrace function before it was
switched back, then it would jump to an address that has updated 11:0
bits mixing with previous XLEN:12 part.
p: patched area performed by dynamic ftrace
ftrace_prologue:
p| REG_S ra, -SZREG(sp)
p| auipc ra, 0x? ------------> preempted
...
change ftrace function
...
p| jalr -?(ra) <------------- switched back
p| REG_L ra, -SZREG(sp)
func:
xxx
ret
Fixes: afc76b8b8011 ("riscv: Using PATCHABLE_FUNCTION_ENTRY instead of MCOUNT")
Signed-off-by: Andy Chiu <andy.chiu@sifive.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
---
@Andy, could you give the patch a Signed-off-by? I just copy your most
important comment, so the first author should be you. First, let's fix
the problem caused by my previous patch, and you can continue your
ftrace preemption work.
---
arch/riscv/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 7cd981f96f48..1d0e5838b11b 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -280,7 +280,7 @@ config ARCH_RV64I
select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
select HAVE_FUNCTION_GRAPH_TRACER
- select HAVE_FUNCTION_TRACER if !XIP_KERNEL
+ select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION
select SWIOTLB if MMU
endchoice
--
2.36.1
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2022-11-29 3:32 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-29 3:32 [PATCH V4 0/7] riscv: ftrace: Fixup ftrace detour code & Optimization guoren
2022-11-29 3:32 ` guoren [this message]
2022-11-29 3:32 ` [PATCH V4 2/7] riscv: ftrace: Remove wasted nops for !RISCV_ISA_C guoren
2022-11-29 3:32 ` [PATCH V4 3/7] riscv: ftrace: Reduce the detour code size to half guoren
2022-11-29 3:32 ` [PATCH V4 4/7] riscv: ftrace: Add ftrace_graph_func guoren
2022-11-29 3:32 ` [PATCH V4 5/7] riscv: ftrace: Make ftrace_caller call ftrace_graph_func guoren
2022-11-29 3:32 ` [PATCH V4 6/7] riscv: ftrace: Add DYNAMIC_FTRACE_WITH_DIRECT_CALLS support guoren
2022-11-29 12:03 ` Song Shuai
2022-11-30 7:29 ` Guo Ren
2022-12-01 20:02 ` Conor Dooley
2022-12-01 20:06 ` Palmer Dabbelt
2022-12-01 20:15 ` Conor Dooley
2022-11-29 3:32 ` [PATCH V4 7/7] samples: ftrace: Add riscv support for SAMPLE_FTRACE_DIRECT[_MULTI] guoren
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=20221129033230.255947-2-guoren@kernel.org \
--to=guoren@kernel.org \
--cc=andy.chiu@sifive.com \
--cc=anup@brainfault.org \
--cc=bp@suse.de \
--cc=conor.dooley@microchip.com \
--cc=heiko@sntech.de \
--cc=jolsa@redhat.com \
--cc=jpoimboe@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=mhiramat@kernel.org \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=rostedt@goodmis.org \
--cc=suagrfillet@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).