Re: [PATCH] workqueue: Fix type of cpu in trace event

From: Steven Rostedt
Date: Tue May 24 2022 - 16:29:22 EST


On Wed, 4 May 2022 11:32:03 +0900
Wonhyuk Yang <vvghjk1234@xxxxxxxxx> wrote:

> The trace event "workqueue_queue_work" use unsigned int type for
> req_cpu, cpu. This casue confusing cpu number like below log.
>
> $ cat /sys/kernel/debug/tracing/trace
> cat-317 [001] ...: workqueue_queue_work: ... req_cpu=8192 cpu=4294967295
>
> So, change unsigned type to signed type in the trace event. After
> applying this patch, cpu number will be printed as -1 instead of
> 4294967295 as folllows.
>

I was going through my backlog of pending patches and came across this.
Note, that trace events are maintained by the subsystem they belong to.
This change is for workqueues, not tracing (as your subject correctly
states).

I Cc'd Tejun here as he maintains this code.

-- Steve


> $ cat /sys/kernel/debug/tracing/trace
> cat-1338 [002] ...: workqueue_queue_work: ... req_cpu=8192 cpu=-1
>
> Cc: Baik Song An <bsahn@xxxxxxxxxx>
> Cc: Hong Yeon Kim <kimhy@xxxxxxxxxx>
> Cc: Taeung Song <taeung@xxxxxxxxxxxxxxx>
> Cc: linuxgeek@xxxxxxxxxxxx
> Signed-off-by: Wonhyuk Yang <vvghjk1234@xxxxxxxxx>
> ---
> include/trace/events/workqueue.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/include/trace/events/workqueue.h b/include/trace/events/workqueue.h
> index 6154a2e72bce..262d52021c23 100644
> --- a/include/trace/events/workqueue.h
> +++ b/include/trace/events/workqueue.h
> @@ -22,7 +22,7 @@ struct pool_workqueue;
> */
> TRACE_EVENT(workqueue_queue_work,
>
> - TP_PROTO(unsigned int req_cpu, struct pool_workqueue *pwq,
> + TP_PROTO(int req_cpu, struct pool_workqueue *pwq,
> struct work_struct *work),
>
> TP_ARGS(req_cpu, pwq, work),
> @@ -31,8 +31,8 @@ TRACE_EVENT(workqueue_queue_work,
> __field( void *, work )
> __field( void *, function)
> __string( workqueue, pwq->wq->name)
> - __field( unsigned int, req_cpu )
> - __field( unsigned int, cpu )
> + __field( int, req_cpu )
> + __field( int, cpu )
> ),
>
> TP_fast_assign(
> @@ -43,7 +43,7 @@ TRACE_EVENT(workqueue_queue_work,
> __entry->cpu = pwq->pool->cpu;
> ),
>
> - TP_printk("work struct=%p function=%ps workqueue=%s req_cpu=%u cpu=%u",
> + TP_printk("work struct=%p function=%ps workqueue=%s req_cpu=%d cpu=%d",
> __entry->work, __entry->function, __get_str(workqueue),
> __entry->req_cpu, __entry->cpu)
> );