The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
@ 2025-07-03  8:45 ChenMiao
  2025-07-03 13:00 ` Alexandre Ghiti
  0 siblings, 1 reply; 10+ messages in thread
From: ChenMiao @ 2025-07-03  8:45 UTC (permalink / raw)
  To: Linux RISCV
  Cc: chenmiao, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, linux-riscv, linux-kernel

From: chenmiao <chenmiao.ku@gmail.com>

When I was reading the source code of ftrace, I learned that
ftrace has two types: static and dynamic. Initially, I planned
to prioritize reading the static source code, so I disabled
the enable dynamic option in RISCV.

[*]   Kernel Function Tracer
[ ]   Kernel Function Graph Tracer
[ ]   enable/disable function tracing dynamically (NEW)

However, when I tried to compile it, the build failed.

./include/linux/ftrace.h:190:16: error: implicit declaration of
function ‘arch_ftrace_get_regs’; did you mean ‘arch_ftrace_regs’?
[-Wimplicit-function-declaration]
  190 |         return arch_ftrace_get_regs(fregs);
      |                ^~~~~~~~~~~~~~~~~~~~
      |                arch_ftrace_regs

After comparing it with the ARM64 architecture, I found that
ARM64 automatically enables DYNAMIC_FTRACE by default once
FUNCTION_TRACER is turned on, and this cannot be set to "no".
Therefore, I believe the optional DYNAMIC_FTRACE setting in
RISC-V has a logic flaw—if FUNCTION_TRACER is enabled,
DYNAMIC_FTRACE should also be enabled, and vice versa. Moreover,
it's clear that RISC-V lacks the necessary support to successfully
compile the kernel when DYNAMIC_FTRACE is disabled.

[*]   Kernel Function Tracer
[ ]   Kernel Function Graph Tracer
-*-   enable/disable function tracing dynamically

Signed-off-by: chenmiao <chenmiao.ku@gmail.com>
---
 arch/riscv/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 36061f473..f7fc8b460 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -97,6 +97,7 @@ config RISCV
 	select CLONE_BACKWARDS
 	select COMMON_CLK
 	select CPU_PM if CPU_IDLE || HIBERNATION || SUSPEND
+	select DYNAMIC_FTRACE if FUNCTION_TRACER
 	select EDAC_SUPPORT
 	select FRAME_POINTER if PERF_EVENTS || (FUNCTION_TRACER && !DYNAMIC_FTRACE)
 	select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if DYNAMIC_FTRACE
-- 
2.45.2


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

* [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
@ 2025-07-03  8:48 ChenMiao
  2025-07-04  2:22 ` kernel test robot
  2025-07-06  2:12 ` kernel test robot
  0 siblings, 2 replies; 10+ messages in thread
From: ChenMiao @ 2025-07-03  8:48 UTC (permalink / raw)
  To: Linux RISCV
  Cc: chenmiao, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, linux-kernel

From: chenmiao <chenmiao.ku@gmail.com>

When I was reading the source code of ftrace, I learned that
ftrace has two types: static and dynamic. Initially, I planned
to prioritize reading the static source code, so I disabled
the enable dynamic option in RISCV.

[*]   Kernel Function Tracer
[ ]   Kernel Function Graph Tracer
[ ]   enable/disable function tracing dynamically (NEW)

However, when I tried to compile it, the build failed.

./include/linux/ftrace.h:190:16: error: implicit declaration of
function ‘arch_ftrace_get_regs’; did you mean ‘arch_ftrace_regs’?
[-Wimplicit-function-declaration]
  190 |         return arch_ftrace_get_regs(fregs);
      |                ^~~~~~~~~~~~~~~~~~~~
      |                arch_ftrace_regs

After comparing it with the ARM64 architecture, I found that
ARM64 automatically enables DYNAMIC_FTRACE by default once
FUNCTION_TRACER is turned on, and this cannot be set to "no".
Therefore, I believe the optional DYNAMIC_FTRACE setting in
RISC-V has a logic flaw—if FUNCTION_TRACER is enabled,
DYNAMIC_FTRACE should also be enabled, and vice versa. Moreover,
it's clear that RISC-V lacks the necessary support to successfully
compile the kernel when DYNAMIC_FTRACE is disabled.

[*]   Kernel Function Tracer
[ ]   Kernel Function Graph Tracer
-*-   enable/disable function tracing dynamically

Signed-off-by: chenmiao <chenmiao.ku@gmail.com>
---
 arch/riscv/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 36061f473..f7fc8b460 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -97,6 +97,7 @@ config RISCV
 	select CLONE_BACKWARDS
 	select COMMON_CLK
 	select CPU_PM if CPU_IDLE || HIBERNATION || SUSPEND
+	select DYNAMIC_FTRACE if FUNCTION_TRACER
 	select EDAC_SUPPORT
 	select FRAME_POINTER if PERF_EVENTS || (FUNCTION_TRACER && !DYNAMIC_FTRACE)
 	select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if DYNAMIC_FTRACE
-- 
2.45.2


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

* Re: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
  2025-07-03  8:45 [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection ChenMiao
@ 2025-07-03 13:00 ` Alexandre Ghiti
  2025-07-03 15:40   ` Steven Rostedt
  0 siblings, 1 reply; 10+ messages in thread
From: Alexandre Ghiti @ 2025-07-03 13:00 UTC (permalink / raw)
  To: ChenMiao, Linux RISCV
  Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-riscv,
	linux-kernel, rostedt@goodmis.org

Hi ChenMiao,

On 7/3/25 10:45, ChenMiao wrote:
> From: chenmiao <chenmiao.ku@gmail.com>
>
> When I was reading the source code of ftrace, I learned that
> ftrace has two types: static and dynamic. Initially, I planned
> to prioritize reading the static source code, so I disabled
> the enable dynamic option in RISCV.
>
> [*]   Kernel Function Tracer
> [ ]   Kernel Function Graph Tracer
> [ ]   enable/disable function tracing dynamically (NEW)
>
> However, when I tried to compile it, the build failed.
>
> ./include/linux/ftrace.h:190:16: error: implicit declaration of
> function ‘arch_ftrace_get_regs’; did you mean ‘arch_ftrace_regs’?
> [-Wimplicit-function-declaration]
>    190 |         return arch_ftrace_get_regs(fregs);
>        |                ^~~~~~~~~~~~~~~~~~~~
>        |                arch_ftrace_regs
>
> After comparing it with the ARM64 architecture, I found that
> ARM64 automatically enables DYNAMIC_FTRACE by default once
> FUNCTION_TRACER is turned on, and this cannot be set to "no".
> Therefore, I believe the optional DYNAMIC_FTRACE setting in
> RISC-V has a logic flaw—if FUNCTION_TRACER is enabled,
> DYNAMIC_FTRACE should also be enabled, and vice versa. Moreover,
> it's clear that RISC-V lacks the necessary support to successfully
> compile the kernel when DYNAMIC_FTRACE is disabled.


We could support static ftrace, but I don't think we should, so I agree 
with this patch. In fact I had just prepared a patch for this here 
https://github.com/linux-riscv/linux/pull/556/commits/0481092a5bec3818658981c11f629e06e66382b3 
which is a bit more complete since I have removed some dead code.

Let's see what other people think about supporting static ftrace, I have 
added Steven in cc if he has an opinion.

Thanks,

Alex


>
> [*]   Kernel Function Tracer
> [ ]   Kernel Function Graph Tracer
> -*-   enable/disable function tracing dynamically
>
> Signed-off-by: chenmiao <chenmiao.ku@gmail.com>
> ---
>   arch/riscv/Kconfig | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index 36061f473..f7fc8b460 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -97,6 +97,7 @@ config RISCV
>   	select CLONE_BACKWARDS
>   	select COMMON_CLK
>   	select CPU_PM if CPU_IDLE || HIBERNATION || SUSPEND
> +	select DYNAMIC_FTRACE if FUNCTION_TRACER
>   	select EDAC_SUPPORT
>   	select FRAME_POINTER if PERF_EVENTS || (FUNCTION_TRACER && !DYNAMIC_FTRACE)
>   	select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if DYNAMIC_FTRACE

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

* Re: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
  2025-07-03 13:00 ` Alexandre Ghiti
@ 2025-07-03 15:40   ` Steven Rostedt
  2025-07-03 16:06     ` Alexandre Ghiti
  0 siblings, 1 reply; 10+ messages in thread
From: Steven Rostedt @ 2025-07-03 15:40 UTC (permalink / raw)
  To: Alexandre Ghiti
  Cc: ChenMiao, Linux RISCV, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-riscv, linux-kernel

On Thu, 3 Jul 2025 15:00:02 +0200
Alexandre Ghiti <alex@ghiti.fr> wrote:


> 
> We could support static ftrace, but I don't think we should, so I agree 
> with this patch. In fact I had just prepared a patch for this here 
> https://github.com/linux-riscv/linux/pull/556/commits/0481092a5bec3818658981c11f629e06e66382b3 
> which is a bit more complete since I have removed some dead code.
> 
> Let's see what other people think about supporting static ftrace, I have 
> added Steven in cc if he has an opinion.

Yes, please only support the dynamic ftrace. The static is there only
to help archs to get ftrace up and running. Once dynamic is supported,
static should not be used.

Hmm, maybe I should just remove the prompt for DYNAMIC_FTRACE.

That is, once it is supported by an architecture, it should be the only
thing used.

-- Steve

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

* Re: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
  2025-07-03 15:40   ` Steven Rostedt
@ 2025-07-03 16:06     ` Alexandre Ghiti
       [not found]       ` <CAKxVwgeDcqo83ZV+xBcHwNuMk6yeU+yp7RYo22OARAVOBgrsJQ@mail.gmail.com>
  0 siblings, 1 reply; 10+ messages in thread
From: Alexandre Ghiti @ 2025-07-03 16:06 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: ChenMiao, Linux RISCV, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-riscv, linux-kernel

Hi Steve,

On 7/3/25 17:40, Steven Rostedt wrote:
> On Thu, 3 Jul 2025 15:00:02 +0200
> Alexandre Ghiti <alex@ghiti.fr> wrote:
>
>
>> We could support static ftrace, but I don't think we should, so I agree
>> with this patch. In fact I had just prepared a patch for this here
>> https://github.com/linux-riscv/linux/pull/556/commits/0481092a5bec3818658981c11f629e06e66382b3
>> which is a bit more complete since I have removed some dead code.
>>
>> Let's see what other people think about supporting static ftrace, I have
>> added Steven in cc if he has an opinion.
> Yes, please only support the dynamic ftrace. The static is there only
> to help archs to get ftrace up and running. Once dynamic is supported,
> static should not be used.
>
> Hmm, maybe I should just remove the prompt for DYNAMIC_FTRACE.
>
> That is, once it is supported by an architecture, it should be the only
> thing used.
>
> -- Steve


Thanks for your input.

@ChenMiao: can you come up with a v2 that, in addition, deletes the dead 
code and with a commit log that explains what Steven said? If not 
possible for you, let me know and I'll do it.

Thanks,

Alex


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

* Re: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
  2025-07-03  8:48 ChenMiao
@ 2025-07-04  2:22 ` kernel test robot
  2025-07-06  2:12 ` kernel test robot
  1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2025-07-04  2:22 UTC (permalink / raw)
  To: ChenMiao, Linux RISCV
  Cc: Paul Gazzillo, Necip Fazil Yildiran, oe-kbuild-all, chenmiao,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti,
	linux-kernel

Hi ChenMiao,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.16-rc4 next-20250703]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/ChenMiao/riscv-ftrace-Fix-the-logic-issue-in-DYNAMIC_FTRACE-selection/20250703-165308
base:   linus/master
patch link:    https://lore.kernel.org/r/20250703084818.394491-1-chenmiao.ku%40gmail.com
patch subject: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
config: riscv-kismet-CONFIG_DYNAMIC_FTRACE-CONFIG_RISCV-0-0 (https://download.01.org/0day-ci/archive/20250704/202507041001.7eWJmB1g-lkp@intel.com/config)
reproduce: (https://download.01.org/0day-ci/archive/20250704/202507041001.7eWJmB1g-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507041001.7eWJmB1g-lkp@intel.com/

kismet warnings: (new ones prefixed by >>)
>> kismet: WARNING: unmet direct dependencies detected for DYNAMIC_FTRACE when selected by RISCV
   

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* Re: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
       [not found]       ` <CAKxVwgeDcqo83ZV+xBcHwNuMk6yeU+yp7RYo22OARAVOBgrsJQ@mail.gmail.com>
@ 2025-07-04 12:28         ` Alexandre Ghiti
  2025-07-04 12:41           ` Steven Rostedt
  2025-07-04 15:42           ` Miao Chen
  0 siblings, 2 replies; 10+ messages in thread
From: Alexandre Ghiti @ 2025-07-04 12:28 UTC (permalink / raw)
  To: Miao Chen
  Cc: Steven Rostedt, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-riscv, linux-kernel

Hi Chen Miao,

On 7/4/25 04:06, Miao Chen wrote:
> Hello Alex,
>
> Should I wait for Steven to finish his work before starting mine? He 
> seems to be refactoring a lot of CONFIG logic, which might cause 
> conflicts.


I would say no, don't wait for Steven since his work won't land in 6.16, 
we need a fix to prevent build failures for this release.

Thanks,

Alex


>
> Thanks,
>
> Chen Miao
>
> Alexandre Ghiti <alex@ghiti.fr> 于2025年7月4日周五 00:06写道:
>
>     Hi Steve,
>
>     On 7/3/25 17:40, Steven Rostedt wrote:
>     > On Thu, 3 Jul 2025 15:00:02 +0200
>     > Alexandre Ghiti <alex@ghiti.fr> wrote:
>     >
>     >
>     >> We could support static ftrace, but I don't think we should, so
>     I agree
>     >> with this patch. In fact I had just prepared a patch for this here
>     >>
>     https://github.com/linux-riscv/linux/pull/556/commits/0481092a5bec3818658981c11f629e06e66382b3
>     >> which is a bit more complete since I have removed some dead code.
>     >>
>     >> Let's see what other people think about supporting static
>     ftrace, I have
>     >> added Steven in cc if he has an opinion.
>     > Yes, please only support the dynamic ftrace. The static is there
>     only
>     > to help archs to get ftrace up and running. Once dynamic is
>     supported,
>     > static should not be used.
>     >
>     > Hmm, maybe I should just remove the prompt for DYNAMIC_FTRACE.
>     >
>     > That is, once it is supported by an architecture, it should be
>     the only
>     > thing used.
>     >
>     > -- Steve
>
>
>     Thanks for your input.
>
>     @ChenMiao: can you come up with a v2 that, in addition, deletes
>     the dead
>     code and with a commit log that explains what Steven said? If not
>     possible for you, let me know and I'll do it.
>
>     Thanks,
>
>     Alex
>

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

* Re: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
  2025-07-04 12:28         ` Alexandre Ghiti
@ 2025-07-04 12:41           ` Steven Rostedt
  2025-07-04 15:42           ` Miao Chen
  1 sibling, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2025-07-04 12:41 UTC (permalink / raw)
  To: Alexandre Ghiti, Miao Chen
  Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-riscv,
	linux-kernel



On July 4, 2025 8:28:31 AM EDT, Alexandre Ghiti <alex@ghiti.fr> wrote:
>Hi Chen Miao,
>
>On 7/4/25 04:06, Miao Chen wrote:
>> Hello Alex,
>> 
>> Should I wait for Steven to finish his work before starting mine? He seems to be refactoring a lot of CONFIG logic, which might cause conflicts.
>
>
>I would say no, don't wait for Steven since his work won't land in 6.16, we need a fix to prevent build failures for this release.
>

Agreed,

-- Steve

>
>> 

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

* Re: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
  2025-07-04 12:28         ` Alexandre Ghiti
  2025-07-04 12:41           ` Steven Rostedt
@ 2025-07-04 15:42           ` Miao Chen
  1 sibling, 0 replies; 10+ messages in thread
From: Miao Chen @ 2025-07-04 15:42 UTC (permalink / raw)
  To: Alexandre Ghiti
  Cc: Steven Rostedt, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-riscv, linux-kernel

Hi Alex,

Ok, I'll start my work right now.

Thanks,

Chen Miao


Alexandre Ghiti <alex@ghiti.fr> 于2025年7月4日周五 20:28写道:
>
> Hi Chen Miao,
>
> On 7/4/25 04:06, Miao Chen wrote:
> > Hello Alex,
> >
> > Should I wait for Steven to finish his work before starting mine? He
> > seems to be refactoring a lot of CONFIG logic, which might cause
> > conflicts.
>
>
> I would say no, don't wait for Steven since his work won't land in 6.16,
> we need a fix to prevent build failures for this release.
>
> Thanks,
>
> Alex
>
>
> >
> > Thanks,
> >
> > Chen Miao
> >
> > Alexandre Ghiti <alex@ghiti.fr> 于2025年7月4日周五 00:06写道:
> >
> >     Hi Steve,
> >
> >     On 7/3/25 17:40, Steven Rostedt wrote:
> >     > On Thu, 3 Jul 2025 15:00:02 +0200
> >     > Alexandre Ghiti <alex@ghiti.fr> wrote:
> >     >
> >     >
> >     >> We could support static ftrace, but I don't think we should, so
> >     I agree
> >     >> with this patch. In fact I had just prepared a patch for this here
> >     >>
> >     https://github.com/linux-riscv/linux/pull/556/commits/0481092a5bec3818658981c11f629e06e66382b3
> >     >> which is a bit more complete since I have removed some dead code.
> >     >>
> >     >> Let's see what other people think about supporting static
> >     ftrace, I have
> >     >> added Steven in cc if he has an opinion.
> >     > Yes, please only support the dynamic ftrace. The static is there
> >     only
> >     > to help archs to get ftrace up and running. Once dynamic is
> >     supported,
> >     > static should not be used.
> >     >
> >     > Hmm, maybe I should just remove the prompt for DYNAMIC_FTRACE.
> >     >
> >     > That is, once it is supported by an architecture, it should be
> >     the only
> >     > thing used.
> >     >
> >     > -- Steve
> >
> >
> >     Thanks for your input.
> >
> >     @ChenMiao: can you come up with a v2 that, in addition, deletes
> >     the dead
> >     code and with a commit log that explains what Steven said? If not
> >     possible for you, let me know and I'll do it.
> >
> >     Thanks,
> >
> >     Alex
> >

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

* Re: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
  2025-07-03  8:48 ChenMiao
  2025-07-04  2:22 ` kernel test robot
@ 2025-07-06  2:12 ` kernel test robot
  1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2025-07-06  2:12 UTC (permalink / raw)
  To: ChenMiao, Linux RISCV
  Cc: oe-kbuild-all, chenmiao, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, linux-kernel

Hi ChenMiao,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.16-rc4 next-20250704]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/ChenMiao/riscv-ftrace-Fix-the-logic-issue-in-DYNAMIC_FTRACE-selection/20250703-165308
base:   linus/master
patch link:    https://lore.kernel.org/r/20250703084818.394491-1-chenmiao.ku%40gmail.com
patch subject: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection
config: riscv-randconfig-001-20250706 (https://download.01.org/0day-ci/archive/20250706/202507060946.JDTW8TlM-lkp@intel.com/config)
compiler: riscv64-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250706/202507060946.JDTW8TlM-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507060946.JDTW8TlM-lkp@intel.com/

All errors (new ones prefixed by >>):

   arch/riscv/kernel/mcount-dyn.S: Assembler messages:
>> arch/riscv/kernel/mcount-dyn.S:85: Error: illegal operands `addi sp,sp,-FREGS_SIZE_ON_STACK'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:86: Error: illegal operands `sd t0,FREGS_EPC(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:87: Error: illegal operands `sd x1,FREGS_RA(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:91: Error: illegal operands `sd x6,FREGS_T1(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:100: Error: illegal operands `sd x10,FREGS_A0(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:101: Error: illegal operands `sd x11,FREGS_A1(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:102: Error: illegal operands `sd x12,FREGS_A2(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:103: Error: illegal operands `sd x13,FREGS_A3(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:104: Error: illegal operands `sd x14,FREGS_A4(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:105: Error: illegal operands `sd x15,FREGS_A5(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:106: Error: illegal operands `sd x16,FREGS_A6(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:107: Error: illegal operands `sd x17,FREGS_A7(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:109: Error: illegal operands `addi a0,a0,FREGS_SIZE_ON_STACK'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:110: Error: illegal operands `sd a0,FREGS_SP(sp)'
   arch/riscv/kernel/mcount-dyn.S:185:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:114: Error: illegal operands `ld t0,FREGS_EPC(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:115: Error: illegal operands `ld x1,FREGS_RA(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:119: Error: illegal operands `ld x6,FREGS_T1(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:128: Error: illegal operands `ld x10,FREGS_A0(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:129: Error: illegal operands `ld x11,FREGS_A1(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
>> arch/riscv/kernel/mcount-dyn.S:130: Error: illegal operands `ld x12,FREGS_A2(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
   arch/riscv/kernel/mcount-dyn.S:131: Error: illegal operands `ld x13,FREGS_A3(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
   arch/riscv/kernel/mcount-dyn.S:132: Error: illegal operands `ld x14,FREGS_A4(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
   arch/riscv/kernel/mcount-dyn.S:133: Error: illegal operands `ld x15,FREGS_A5(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
   arch/riscv/kernel/mcount-dyn.S:134: Error: illegal operands `ld x16,FREGS_A6(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
   arch/riscv/kernel/mcount-dyn.S:135: Error: illegal operands `ld x17,FREGS_A7(sp)'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here
   arch/riscv/kernel/mcount-dyn.S:137: Error: illegal operands `addi sp,sp,FREGS_SIZE_ON_STACK'
   arch/riscv/kernel/mcount-dyn.S:195:  Info: macro invoked from here

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]


vim +85 arch/riscv/kernel/mcount-dyn.S

afc76b8b8011218 Guo Ren        2020-12-17   27  
afc76b8b8011218 Guo Ren        2020-12-17   28  	.macro SAVE_ABI
afc76b8b8011218 Guo Ren        2020-12-17   29  	addi	sp, sp, -ABI_SIZE_ON_STACK
afc76b8b8011218 Guo Ren        2020-12-17   30  
afc76b8b8011218 Guo Ren        2020-12-17   31  	REG_S	a0, ABI_A0(sp)
afc76b8b8011218 Guo Ren        2020-12-17   32  	REG_S	a1, ABI_A1(sp)
afc76b8b8011218 Guo Ren        2020-12-17   33  	REG_S	a2, ABI_A2(sp)
afc76b8b8011218 Guo Ren        2020-12-17   34  	REG_S	a3, ABI_A3(sp)
afc76b8b8011218 Guo Ren        2020-12-17   35  	REG_S	a4, ABI_A4(sp)
afc76b8b8011218 Guo Ren        2020-12-17   36  	REG_S	a5, ABI_A5(sp)
afc76b8b8011218 Guo Ren        2020-12-17   37  	REG_S	a6, ABI_A6(sp)
afc76b8b8011218 Guo Ren        2020-12-17   38  	REG_S	a7, ABI_A7(sp)
6724a76cff85ee2 Guo Ren        2023-01-12   39  	REG_S	t0, ABI_T0(sp)
afc76b8b8011218 Guo Ren        2020-12-17   40  	REG_S	ra, ABI_RA(sp)
c15ac4fd60d5ffd Alan Kao       2018-02-13   41  	.endm
c15ac4fd60d5ffd Alan Kao       2018-02-13   42  
afc76b8b8011218 Guo Ren        2020-12-17   43  	.macro RESTORE_ABI
afc76b8b8011218 Guo Ren        2020-12-17   44  	REG_L	a0, ABI_A0(sp)
afc76b8b8011218 Guo Ren        2020-12-17   45  	REG_L	a1, ABI_A1(sp)
afc76b8b8011218 Guo Ren        2020-12-17   46  	REG_L	a2, ABI_A2(sp)
afc76b8b8011218 Guo Ren        2020-12-17   47  	REG_L	a3, ABI_A3(sp)
afc76b8b8011218 Guo Ren        2020-12-17   48  	REG_L	a4, ABI_A4(sp)
afc76b8b8011218 Guo Ren        2020-12-17   49  	REG_L	a5, ABI_A5(sp)
afc76b8b8011218 Guo Ren        2020-12-17   50  	REG_L	a6, ABI_A6(sp)
afc76b8b8011218 Guo Ren        2020-12-17   51  	REG_L	a7, ABI_A7(sp)
6724a76cff85ee2 Guo Ren        2023-01-12   52  	REG_L	t0, ABI_T0(sp)
afc76b8b8011218 Guo Ren        2020-12-17   53  	REG_L	ra, ABI_RA(sp)
afc76b8b8011218 Guo Ren        2020-12-17   54  
afc76b8b8011218 Guo Ren        2020-12-17   55  	addi	sp, sp, ABI_SIZE_ON_STACK
c15ac4fd60d5ffd Alan Kao       2018-02-13   56  	.endm
c15ac4fd60d5ffd Alan Kao       2018-02-13   57  
35e61e8827ee8ea Song Shuai     2023-11-30   58  /**
7caa9765465f60b Puranjay Mohan 2024-04-05   59  * SAVE_ABI_REGS - save regs against the ftrace_regs struct
35e61e8827ee8ea Song Shuai     2023-11-30   60  *
35e61e8827ee8ea Song Shuai     2023-11-30   61  * After the stack is established,
35e61e8827ee8ea Song Shuai     2023-11-30   62  *
35e61e8827ee8ea Song Shuai     2023-11-30   63  * 0(sp) stores the PC of the traced function which can be accessed
b2137c3b6d7a456 Andy Chiu      2025-04-08   64  * by &(fregs)->epc in tracing function.
35e61e8827ee8ea Song Shuai     2023-11-30   65  *
35e61e8827ee8ea Song Shuai     2023-11-30   66  * 8(sp) stores the function return address (i.e. parent IP) that
7caa9765465f60b Puranjay Mohan 2024-04-05   67  * can be accessed by &(fregs)->ra in tracing function.
35e61e8827ee8ea Song Shuai     2023-11-30   68  *
35e61e8827ee8ea Song Shuai     2023-11-30   69  * The other regs are saved at the respective localtion and accessed
7caa9765465f60b Puranjay Mohan 2024-04-05   70  * by the respective ftrace_regs member.
35e61e8827ee8ea Song Shuai     2023-11-30   71  *
35e61e8827ee8ea Song Shuai     2023-11-30   72  * Here is the layout of stack for your reference.
35e61e8827ee8ea Song Shuai     2023-11-30   73  *
35e61e8827ee8ea Song Shuai     2023-11-30   74  * PT_SIZE_ON_STACK  ->  +++++++++
35e61e8827ee8ea Song Shuai     2023-11-30   75  *                       + ..... +
35e61e8827ee8ea Song Shuai     2023-11-30   76  *                       + a0-a7 + --++++-> ftrace_caller saved
7caa9765465f60b Puranjay Mohan 2024-04-05   77  *                       + t1    + --++++-> direct tramp address
7caa9765465f60b Puranjay Mohan 2024-04-05   78  *                       + s0    + --+ // frame pointer
35e61e8827ee8ea Song Shuai     2023-11-30   79  *                       + sp    +   +
35e61e8827ee8ea Song Shuai     2023-11-30   80  *                       + ra    + --+ // parent IP
35e61e8827ee8ea Song Shuai     2023-11-30   81  *               sp  ->  + epc   + --+ // PC
35e61e8827ee8ea Song Shuai     2023-11-30   82  *                       +++++++++
35e61e8827ee8ea Song Shuai     2023-11-30   83  **/
7caa9765465f60b Puranjay Mohan 2024-04-05   84  	.macro SAVE_ABI_REGS
7caa9765465f60b Puranjay Mohan 2024-04-05  @85  	addi	sp, sp, -FREGS_SIZE_ON_STACK
7caa9765465f60b Puranjay Mohan 2024-04-05  @86  	REG_S	t0,  FREGS_EPC(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05  @87  	REG_S	x1,  FREGS_RA(sp)
35e61e8827ee8ea Song Shuai     2023-11-30   88  #ifdef HAVE_FUNCTION_GRAPH_FP_TEST
7caa9765465f60b Puranjay Mohan 2024-04-05   89  	REG_S	x8,  FREGS_S0(sp)
35e61e8827ee8ea Song Shuai     2023-11-30   90  #endif
7caa9765465f60b Puranjay Mohan 2024-04-05  @91  	REG_S	x6,  FREGS_T1(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08   92  #ifdef CONFIG_CC_IS_CLANG
f8693f6dffcd186 Andy Chiu      2025-04-08   93  	REG_S	x7,  FREGS_T2(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08   94  	REG_S	x28, FREGS_T3(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08   95  	REG_S	x29, FREGS_T4(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08   96  	REG_S	x30, FREGS_T5(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08   97  	REG_S	x31, FREGS_T6(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08   98  #endif
7caa9765465f60b Puranjay Mohan 2024-04-05   99  	// save the arguments
7caa9765465f60b Puranjay Mohan 2024-04-05 @100  	REG_S	x10, FREGS_A0(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @101  	REG_S	x11, FREGS_A1(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @102  	REG_S	x12, FREGS_A2(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @103  	REG_S	x13, FREGS_A3(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @104  	REG_S	x14, FREGS_A4(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @105  	REG_S	x15, FREGS_A5(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @106  	REG_S	x16, FREGS_A6(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @107  	REG_S	x17, FREGS_A7(sp)
b21cdb9523e5561 Andy Chiu      2025-04-08  108  	mv	a0, sp
b21cdb9523e5561 Andy Chiu      2025-04-08 @109  	addi	a0, a0, FREGS_SIZE_ON_STACK
b21cdb9523e5561 Andy Chiu      2025-04-08 @110  	REG_S	a0, FREGS_SP(sp)	// Put original SP on stack
bc1a4c3a8425568 Alan Kao       2018-02-13  111  	.endm
bc1a4c3a8425568 Alan Kao       2018-02-13  112  
b21cdb9523e5561 Andy Chiu      2025-04-08  113  	.macro RESTORE_ABI_REGS
7caa9765465f60b Puranjay Mohan 2024-04-05 @114  	REG_L	t0, FREGS_EPC(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @115  	REG_L	x1, FREGS_RA(sp)
35e61e8827ee8ea Song Shuai     2023-11-30  116  #ifdef HAVE_FUNCTION_GRAPH_FP_TEST
7caa9765465f60b Puranjay Mohan 2024-04-05  117  	REG_L	x8, FREGS_S0(sp)
35e61e8827ee8ea Song Shuai     2023-11-30  118  #endif
7caa9765465f60b Puranjay Mohan 2024-04-05 @119  	REG_L	x6,  FREGS_T1(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08  120  #ifdef CONFIG_CC_IS_CLANG
f8693f6dffcd186 Andy Chiu      2025-04-08  121  	REG_L	x7,  FREGS_T2(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08  122  	REG_L	x28, FREGS_T3(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08  123  	REG_L	x29, FREGS_T4(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08  124  	REG_L	x30, FREGS_T5(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08  125  	REG_L	x31, FREGS_T6(sp)
f8693f6dffcd186 Andy Chiu      2025-04-08  126  #endif
7caa9765465f60b Puranjay Mohan 2024-04-05  127  	// restore the arguments
7caa9765465f60b Puranjay Mohan 2024-04-05 @128  	REG_L	x10, FREGS_A0(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @129  	REG_L	x11, FREGS_A1(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @130  	REG_L	x12, FREGS_A2(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @131  	REG_L	x13, FREGS_A3(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @132  	REG_L	x14, FREGS_A4(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @133  	REG_L	x15, FREGS_A5(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @134  	REG_L	x16, FREGS_A6(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05 @135  	REG_L	x17, FREGS_A7(sp)
7caa9765465f60b Puranjay Mohan 2024-04-05  136  
7caa9765465f60b Puranjay Mohan 2024-04-05  137  	addi	sp, sp, FREGS_SIZE_ON_STACK
afc76b8b8011218 Guo Ren        2020-12-17  138  	.endm
35e61e8827ee8ea Song Shuai     2023-11-30  139  
35e61e8827ee8ea Song Shuai     2023-11-30  140  	.macro PREPARE_ARGS
b2137c3b6d7a456 Andy Chiu      2025-04-08  141  	addi	a0, t0, -MCOUNT_JALR_SIZE	// ip (callsite's jalr insn)
b21cdb9523e5561 Andy Chiu      2025-04-08  142  #ifdef CONFIG_DYNAMIC_FTRACE_WITH_CALL_OPS
b21cdb9523e5561 Andy Chiu      2025-04-08  143  	mv 	a1, ra				// parent_ip
b21cdb9523e5561 Andy Chiu      2025-04-08  144  	REG_L   a2, -16(t0)			// op
b21cdb9523e5561 Andy Chiu      2025-04-08  145  	REG_L   ra, FTRACE_OPS_FUNC(a2)		// op->func
b21cdb9523e5561 Andy Chiu      2025-04-08  146  #else
b21cdb9523e5561 Andy Chiu      2025-04-08  147  	la	a1, function_trace_op
b21cdb9523e5561 Andy Chiu      2025-04-08  148  	REG_L	a2, 0(a1)			// op
b21cdb9523e5561 Andy Chiu      2025-04-08  149  	mv	a1, ra				// parent_ip
b21cdb9523e5561 Andy Chiu      2025-04-08  150  #endif
b21cdb9523e5561 Andy Chiu      2025-04-08  151  	mv	a3, sp				// regs
b21cdb9523e5561 Andy Chiu      2025-04-08  152  	.endm
b21cdb9523e5561 Andy Chiu      2025-04-08  153  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

end of thread, other threads:[~2025-07-06  2:13 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-03  8:45 [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection ChenMiao
2025-07-03 13:00 ` Alexandre Ghiti
2025-07-03 15:40   ` Steven Rostedt
2025-07-03 16:06     ` Alexandre Ghiti
     [not found]       ` <CAKxVwgeDcqo83ZV+xBcHwNuMk6yeU+yp7RYo22OARAVOBgrsJQ@mail.gmail.com>
2025-07-04 12:28         ` Alexandre Ghiti
2025-07-04 12:41           ` Steven Rostedt
2025-07-04 15:42           ` Miao Chen
  -- strict thread matches above, loose matches on Subject: below --
2025-07-03  8:48 ChenMiao
2025-07-04  2:22 ` kernel test robot
2025-07-06  2:12 ` kernel test robot

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