Message ID | 20221102183336.3120536-3-vschneid@redhat.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | Generic IPI sending tracepoint | expand |
On Wed, Nov 02, 2022 at 06:33:32PM +0000, Valentin Schneider wrote: > This simply wraps around the arch function and prepends it with a > tracepoint, similar to send_call_function_single_ipi(). > > Signed-off-by: Valentin Schneider <vschneid@redhat.com> > --- > kernel/smp.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/kernel/smp.c b/kernel/smp.c > index e2ca1e2f31274..c4d561cf50d45 100644 > --- a/kernel/smp.c > +++ b/kernel/smp.c > @@ -160,6 +160,13 @@ void __init call_function_init(void) > smpcfd_prepare_cpu(smp_processor_id()); > } > > +static inline void Given the use of _RET_IP_, I would strongly recommend you use __always_inline. > +send_call_function_ipi_mask(const struct cpumask *mask) > +{ > + trace_ipi_send_cpumask(mask, _RET_IP_, func); What's func? > + arch_send_call_function_ipi_mask(mask); > +}
On 17/11/22 10:08, Peter Zijlstra wrote: > On Wed, Nov 02, 2022 at 06:33:32PM +0000, Valentin Schneider wrote: >> This simply wraps around the arch function and prepends it with a >> tracepoint, similar to send_call_function_single_ipi(). >> >> Signed-off-by: Valentin Schneider <vschneid@redhat.com> >> --- >> kernel/smp.c | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/kernel/smp.c b/kernel/smp.c >> index e2ca1e2f31274..c4d561cf50d45 100644 >> --- a/kernel/smp.c >> +++ b/kernel/smp.c >> @@ -160,6 +160,13 @@ void __init call_function_init(void) >> smpcfd_prepare_cpu(smp_processor_id()); >> } >> >> +static inline void > > Given the use of _RET_IP_, I would strongly recommend you use > __always_inline. > Noted, thanks >> +send_call_function_ipi_mask(const struct cpumask *mask) >> +{ >> + trace_ipi_send_cpumask(mask, _RET_IP_, func); > > What's func? > A rebase fail... That's only plugged in later. >> + arch_send_call_function_ipi_mask(mask); >> +}
diff --git a/kernel/smp.c b/kernel/smp.c index e2ca1e2f31274..c4d561cf50d45 100644 --- a/kernel/smp.c +++ b/kernel/smp.c @@ -160,6 +160,13 @@ void __init call_function_init(void) smpcfd_prepare_cpu(smp_processor_id()); } +static inline void +send_call_function_ipi_mask(const struct cpumask *mask) +{ + trace_ipi_send_cpumask(mask, _RET_IP_, func); + arch_send_call_function_ipi_mask(mask); +} + #ifdef CONFIG_CSD_LOCK_WAIT_DEBUG static DEFINE_STATIC_KEY_FALSE(csdlock_debug_enabled); @@ -970,7 +977,7 @@ static void smp_call_function_many_cond(const struct cpumask *mask, if (nr_cpus == 1) send_call_function_single_ipi(last_cpu); else if (likely(nr_cpus > 1)) - arch_send_call_function_ipi_mask(cfd->cpumask_ipi); + send_call_function_ipi_mask(cfd->cpumask_ipi); cfd_seq_store(this_cpu_ptr(&cfd_seq_local)->pinged, this_cpu, CFD_SEQ_NOCPU, CFD_SEQ_PINGED); }
This simply wraps around the arch function and prepends it with a tracepoint, similar to send_call_function_single_ipi(). Signed-off-by: Valentin Schneider <vschneid@redhat.com> --- kernel/smp.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)