The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] riscv: kprobes: Add test case for c.jal instruction simulation
@ 2026-06-27 11:50 Nam Cao
  2026-07-01 10:46 ` Xiaofeng Yuan
  2026-07-10 18:40 ` patchwork-bot+linux-riscv
  0 siblings, 2 replies; 3+ messages in thread
From: Nam Cao @ 2026-06-27 11:50 UTC (permalink / raw)
  To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti,
	linux-riscv, linux-kernel
  Cc: Nam Cao

Add test validating that kprobes correctly simulate the c.jal
instruction.

Signed-off-by: Nam Cao <namcao@linutronix.de>
---
the test fails without c.jal simulation patch:
https://lore.kernel.org/linux-riscv/20260627001939.3847-1-xiaofengmian@163.com/
---
 .../kernel/tests/kprobes/test-kprobes-asm.S   | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/arch/riscv/kernel/tests/kprobes/test-kprobes-asm.S b/arch/riscv/kernel/tests/kprobes/test-kprobes-asm.S
index f16deee9e091..15e50934bbd7 100644
--- a/arch/riscv/kernel/tests/kprobes/test-kprobes-asm.S
+++ b/arch/riscv/kernel/tests/kprobes/test-kprobes-asm.S
@@ -179,6 +179,23 @@ test_kprobes_c_bnez_addr3:
 	ret
 SYM_FUNC_END(test_kprobes_c_bnez)
 
+#ifdef CONFIG_32BIT
+SYM_FUNC_START(test_kprobes_c_jal)
+	li a0, 0
+	mv a1, ra
+test_kprobes_c_jal_addr1:
+	c.jal 2f
+	ret
+1:	li a0, KPROBE_TEST_MAGIC_UPPER
+	ret
+test_kprobes_c_jal_addr2:
+2:	c.jal 1b
+	li a2, KPROBE_TEST_MAGIC_LOWER
+	add a0, a0, a2
+	jr a1
+SYM_FUNC_END(test_kprobes_c_jal)
+#endif
+
 #endif /* CONFIG_RISCV_ISA_C */
 
 .section .rodata
@@ -209,6 +226,10 @@ SYM_DATA_START(test_kprobes_addresses)
 	RISCV_PTR test_kprobes_c_bnez_addr1
 	RISCV_PTR test_kprobes_c_bnez_addr2
 	RISCV_PTR test_kprobes_c_bnez_addr3
+#ifdef CONFIG_32BIT
+	RISCV_PTR test_kprobes_c_jal_addr1
+	RISCV_PTR test_kprobes_c_jal_addr2
+#endif
 #endif /* CONFIG_RISCV_ISA_C */
 	RISCV_PTR 0
 SYM_DATA_END(test_kprobes_addresses)
@@ -226,6 +247,9 @@ SYM_DATA_START(test_kprobes_functions)
 	RISCV_PTR test_kprobes_c_jalr
 	RISCV_PTR test_kprobes_c_beqz
 	RISCV_PTR test_kprobes_c_bnez
+#ifdef CONFIG_32BIT
+	RISCV_PTR test_kprobes_c_jal
+#endif
 #endif /* CONFIG_RISCV_ISA_C */
 	RISCV_PTR 0
 SYM_DATA_END(test_kprobes_functions)
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] riscv: kprobes: Add test case for c.jal instruction simulation
  2026-06-27 11:50 [PATCH] riscv: kprobes: Add test case for c.jal instruction simulation Nam Cao
@ 2026-07-01 10:46 ` Xiaofeng Yuan
  2026-07-10 18:40 ` patchwork-bot+linux-riscv
  1 sibling, 0 replies; 3+ messages in thread
From: Xiaofeng Yuan @ 2026-07-01 10:46 UTC (permalink / raw)
  To: Nam Cao; +Cc: Charlie Jenkins, linux-riscv, linux-kernel, Xiaofeng Yuan

Hi Nam,

Thanks again for the test case — it has been included in the v6 c.jal
series, credited to you.

Regarding the QEMU hang I asked you about earlier: I found the root
cause.  The hang was not a QEMU issue — it was caused by
EXECMEM_KPROBES allocating read-only pages without writable
permissions when CONFIG_STRICT_MODULE_RWX is not enabled (as happens
with an allnoconfig-derived config).  This affects both RV32 and RV64.

I have submitted a separate fix series titled "riscv: fix kprobes on
minimal kernel configs" to address this.

Best regards,
Xiaofeng

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] riscv: kprobes: Add test case for c.jal instruction simulation
  2026-06-27 11:50 [PATCH] riscv: kprobes: Add test case for c.jal instruction simulation Nam Cao
  2026-07-01 10:46 ` Xiaofeng Yuan
@ 2026-07-10 18:40 ` patchwork-bot+linux-riscv
  1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+linux-riscv @ 2026-07-10 18:40 UTC (permalink / raw)
  To: Nam Cao; +Cc: linux-riscv, pjw, palmer, aou, alex, linux-kernel

Hello:

This patch was applied to riscv/linux.git (for-next)
by Paul Walmsley <pjw@kernel.org>:

On Sat, 27 Jun 2026 13:50:51 +0200 you wrote:
> Add test validating that kprobes correctly simulate the c.jal
> instruction.
> 
> Signed-off-by: Nam Cao <namcao@linutronix.de>
> ---
> the test fails without c.jal simulation patch:
> https://lore.kernel.org/linux-riscv/20260627001939.3847-1-xiaofengmian@163.com/
> 
> [...]

Here is the summary with links:
  - riscv: kprobes: Add test case for c.jal instruction simulation
    https://git.kernel.org/riscv/c/0161aa173c38

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-07-10 18:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-27 11:50 [PATCH] riscv: kprobes: Add test case for c.jal instruction simulation Nam Cao
2026-07-01 10:46 ` Xiaofeng Yuan
2026-07-10 18:40 ` patchwork-bot+linux-riscv

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox