[PATCH V2] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
Miao Chen
chenmiao.ku at gmail.com
Fri Jul 11 01:24:42 PDT 2025
Hi,
I rechecked the .config file. I configured it using
make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu-
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited
-fmax-warnings=unlimited' O=build_dir olddefconfig,
and obtained the following configuration. If NONPORTABLE is disabled,
the MMU will be enabled. I did not find any other settings that would
affect the enabling of NONPORTABLE—it is set to 'y' by default.
--------- CONFIG ---------------------
config NONPORTABLE
bool "Allow configurations that result in non-portable kernels"
Symbol: HAVE_DYNAMIC_FTRACE [=n]
Type : bool
Defined at kernel/trace/Kconfig:42
Selected by [n]:
- RISCV [=y] && !XIP_KERNEL [=n] && MMU [=n] &&
(CLANG_SUPPORTS_DYNAMIC_FTRACE [=n] || GCC_SUPPORTS_DYNAMIC_FTRACE
[=y])
Symbol: MMU [=n]
Type : bool
Defined at arch/riscv/Kconfig:298
Prompt: MMU-based Paged Memory Management Support
Location:
(1) -> MMU-based Paged Memory Management Support (MMU [=n])
Selected by [n]:
- PORTABLE [=n]
Symbol: PORTABLE [=n]
Type : bool
Defined at arch/riscv/Kconfig:1344
Selects: EFI [=n] && MMU [=n] && OF [=y]
Symbol: NONPORTABLE [=y]
│ Type : bool
│ Defined at arch/riscv/Kconfig:389
│ Prompt: Allow configurations that result in non-portable kernels
│ Location:
│ -> Platform type
│ (1) -> Allow configurations that result in non-portable kernels
(NONPORTABLE [=y])
Thanks,
Chen Miao
Alexandre Ghiti <alex at ghiti.fr> 于2025年7月11日周五 15:55写道:
>
> Hi,
>
> On 7/10/25 17:56, Miao Chen wrote:
> > Hello Alex,
> >
> > I found where the error is, but there's a problem here:
> >
> > config PORTABLE
> > bool
> > default !NONPORTABLE
> > select EFI
> > select MMU
> > select OF
> >
> > select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && MMU &&
> > (CLANG_SUPPORTS_DYNAMIC_FTRACE || GCC_SUPPORTS_DYNAMIC_FTRACE)
> >
> > Because HAVE_DYNAMIC_FTRACE depends on the MMU—of course, it's
> > reasonable for DYNAMIC_FTRACE to depend on the MMU—*but since
> > NONPORTABLE is enabled by default, this causes PORTABLE to default to
> > n, thereby preventing the MMU from being enabled*. So, should I change
> > NONPORTABLE to default to n?
>
>
> NONPORTABLE is not enabled by default and PORTABLE=n does not prevent
> MMU from being enabled.
>
> IIUC, it seems like you don't have HAVE_DYNAMIC_FTRACE enabled but
> that's probably because of your toolchain, not !MMU, can you check that
> in your .config?
>
> Thanks,
>
> Alex
>
>
> >
> > Thanks,
> >
> > Alex
> >
> > Alexandre Ghiti <alex at ghiti.fr> 于2025年7月10日周四 22:33写道:
> >>
> >> On 7/10/25 14:34, Miao Chen wrote:
> >>> Hello Alex,
> >>>
> >>> Sure, I'll checkout it. Btw, this is my first commit, so can u tell
> >>> how to reproduce failed case? Using the reproduce and .config.gz gived
> >>> by build-bot?
> >>
> >> Yes exactly!
> >>
> >>
> >>> Thanks,
> >>>
> >>> Chen Miao
> >>>
> >>> Alexandre Ghiti <alex at ghiti.fr> 于2025年7月10日周四 19:53写道:
> >>>> Hi ChenMiao,
> >>>>
> >>>> On 7/9/25 03:08, kernel test robot wrote:
> >>>>> Hi ChenMiao,
> >>>>>
> >>>>> kernel test robot noticed the following build errors:
> >>>>>
> >>>>> [auto build test ERROR on fda589c286040d9ba2d72a0eaf0a13945fc48026]
> >>>>>
> >>>>> url: https://github.com/intel-lab-lkp/linux/commits/ChenMiao/riscv-ftrace-Fix-the-logic-issue-in-DYNAMIC_FTRACE-selection/20250706-231907
> >>>>> base: fda589c286040d9ba2d72a0eaf0a13945fc48026
> >>>>> patch link: https://lore.kernel.org/r/20250706151830.25091-1-chenmiao.ku%40gmail.com
> >>>>> patch subject: [PATCH V2] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
> >>>>> :::::: branch date: 2 days ago
> >>>>> :::::: commit date: 2 days ago
> >>>>> config: riscv-randconfig-r112-20250708 (attached as .config)
> >>>>> compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
> >>>>> reproduce: (attached as reproduce)
> >>>>>
> >>>>> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> >>>>> the same patch/commit), kindly add following tags
> >>>>> | Reported-by: kernel test robot <lkp at intel.com>
> >>>>> | Closes: https://lore.kernel.org/oe-kbuild-all/202507090650.YGY56SIA-lkp@intel.com/
> >>>>>
> >>>>> All errors (new ones prefixed by >>):
> >>>>>
> >>>>>>> <instantiation>:1:14: error: operand must be a symbol with %lo/%pcrel_lo/%tprel_lo modifier or an integer in the range [-2048, 2047]
> >>>>> addi sp, sp, -FREGS_SIZE_ON_STACK
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>>>> <instantiation>:2:18: error: unexpected token
> >>>>> sw t0, FREGS_EPC(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:3:17: error: unexpected token
> >>>>> sw x1, FREGS_RA(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:7:17: error: unexpected token
> >>>>> sw x6, FREGS_T1(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:9:17: error: unexpected token
> >>>>> sw x7, FREGS_T2(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:10:18: error: unexpected token
> >>>>> sw x28, FREGS_T3(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:11:18: error: unexpected token
> >>>>> sw x29, FREGS_T4(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:12:18: error: unexpected token
> >>>>> sw x30, FREGS_T5(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:13:18: error: unexpected token
> >>>>> sw x31, FREGS_T6(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:16:18: error: unexpected token
> >>>>> sw x10, FREGS_A0(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:17:18: error: unexpected token
> >>>>> sw x11, FREGS_A1(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:18:18: error: unexpected token
> >>>>> sw x12, FREGS_A2(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:19:18: error: unexpected token
> >>>>> sw x13, FREGS_A3(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:20:18: error: unexpected token
> >>>>> sw x14, FREGS_A4(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:21:18: error: unexpected token
> >>>>> sw x15, FREGS_A5(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:22:18: error: unexpected token
> >>>>> sw x16, FREGS_A6(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:23:18: error: unexpected token
> >>>>> sw x17, FREGS_A7(sp)
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>> ^
> >>>>> <instantiation>:25:15: error: operand must be a symbol with %lo/%pcrel_lo/%tprel_lo modifier or an integer in the range [-2048, 2047]
> >>>>> addi a0, a0, FREGS_SIZE_ON_STACK
> >>>>> ^
> >>>>> arch/riscv/kernel/mcount-dyn.S:185:2: note: while in macro instantiation
> >>>>> SAVE_ABI_REGS
> >>>>>
> >>>>> Kconfig warnings: (for reference only)
> >>>>> WARNING: unmet direct dependencies detected for DYNAMIC_FTRACE
> >>>>> Depends on [n]: FTRACE [=y] && FUNCTION_TRACER [=y] && HAVE_DYNAMIC_FTRACE [=n]
> >>>>> Selected by [y]:
> >>>>> - RISCV [=y] && FUNCTION_TRACER [=y]
> >>>> To avoid that, we should check HAVE_DYNAMIC_FTRACE too:
> >>>>
> >>>> select DYNAMIC_FTRACE if FUNCTION_TRACER && HAVE_DYNAMIC_FTRACE
> >>>>
> >>>> That fixes the build error for me. Can you send a v3 with this change?
> >>>>
> >>>> Thanks,
> >>>>
> >>>> Alex
> >>>>
> >>>>
> >>> _______________________________________________
> >>> linux-riscv mailing list
> >>> linux-riscv at lists.infradead.org
> >>> http://lists.infradead.org/mailman/listinfo/linux-riscv
> > _______________________________________________
> > linux-riscv mailing list
> > linux-riscv at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-riscv
More information about the linux-riscv
mailing list