From nobody Thu Dec 18 07:55:33 2025 Received: from sonic313-21.consmr.mail.sg3.yahoo.com (sonic313-21.consmr.mail.sg3.yahoo.com [106.10.240.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4DAC627B348 for ; Wed, 12 Nov 2025 03:36:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=106.10.240.80 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762918612; cv=none; b=PWZk2VdhGKZU+OS5ekeL6lMl3fVE8BBIxJtmUkK056wAaVdeKKXiY7n+lkBcCBMOXsN/GqypWm2sDVCZhGa6Fmyh4mbYMAhQ69mc7JnbEd39gHRBJjjyQvYimxaI6TVFnV+ogW1yufXlpx171mAQdtznzRQrFSp2UGsCgAVZ8h4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762918612; c=relaxed/simple; bh=Bqc5MWVXAYPapWswck3KTvUFUUcE64qQzbuAoQzW7Rc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EiijNKACxLB6oqwhAiG11vIhEkGeToHLLyxQPiBMWjhybZVG5fm4EDJAyYjX1PoC7p6ywa7Z6JtfbcoOGjUXPzgI5fAeSEXF3atyM0oME7MaJ655yFOGPuDPF0UD2W/lLvbYMCoZ9l1+y6TUt1zNfpeQA9536PitS475yn5u1X4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=yahoo.com; spf=pass smtp.mailfrom=yahoo.com; dkim=pass (2048-bit key) header.d=yahoo.com header.i=@yahoo.com header.b=t7R/EWsG; arc=none smtp.client-ip=106.10.240.80 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=yahoo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=yahoo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=yahoo.com header.i=@yahoo.com header.b="t7R/EWsG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1762918608; bh=DfqdO3iXrWbO4uBssqKRQ276sSUPpFPYITqgJr3Z2C8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=t7R/EWsGqHQZWh5J1R3fwcgQ7rPcVPK2m6VRRQzQ/G2koXETAjqxayqCeYzZbKAlcI+CcN6EKbvQSYTr9Eea3X6LhCbkFgRx9hsWHadDWhB1mFs6ynEyqd7ZFiv+BYjskab+g1WU9wAtg0TVDerwjrUTNQ76VVYjG2SB/oqLUkE1cP+jNpyQoESKpYrMfTKx02g6cfgT1z/IiftT0R/3zzFmcEFnkac5Lz/fUeHxXiLJRdi4eYinCck4lMHefLbeHkW6X6+nxkAdfIPWQSLTbPA/SrH+oxe3w8SdfBw1eFao/sjYPKRCf9nmBKS6i4lIJBGNviEvQsskVMqqq+0GTw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1762918608; bh=tgtxacK39xBx4RJedH0CFNEUPz122MUx+07kBK99mgF=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=LSehDbqQW8HVqoxYEnO4aDfuw8KwV9oMFbisxZgGsnX87QByPubkirQtR6w/DJP3nrFOlASiyKeZZyiroK9qkq9ViEJ0DPgmyAPlgBeLB16KfkuqEJ335VZNGckxLJigg1kk9i97yyb8m2f6wNMhAtnv1HPBEMII10tT9Jc+/vPnr/LVrFvDjbmXCiVxWXidw5uaBkfGKHencl3vgxjJ8JII3AWuGlSqHNSGZ/fq/INIiTHFlIuo6VybAqY2NVaPheftFbVms2fKYxADonsl87fetiNgqLiLMmesdOzGCtC+AkRZJhQyStjSKKpdwePqMEKM/40Xj/IGTyW+JZT77A== X-YMail-OSG: lzMZSl4VM1niLCJYY3BgUt_8IEKYN5oBRWuDUf7w1ZnLO43pw5Q138hlPsnIj.r RB5NEfOiVsDVFEUMIyF51dRkYRBzY6sulmfu5ZyefMNOKBTlt6S3iiFR5VsECRTVTDugiRzzv6UW m6mNjf3QYPMTxgy.UrIXm7INscsAJvGxMGuhV1mDtkCIsyrhnnbfZwUV.LbLW2Yj4tAPycIX_IjP pzg9hCy9Q08lBVk6018P0vSxDWlCRecreEMum9alhvDv_cHqcpcmzELBKEluxgSHIZw0o3Sg0ZDG Mpo2o1uHZSPnVhVZGeQFDPv2xcw8.9HozE9OcaPfpV6rypOJuvtvjWyfKXI3ZWIzRd2W5mhNJ7o0 0TGqkvSwiaHXftlXKUumV.eWErhqhYSzdA7ceT0iQJbBhOicxBteAdKtwrNjA3_iJLr29ssva5aF WnFAcb5KSjoxvNLI.h_rtW1IzcG4_yBTmXUWfIr0YuSkovtMM7wErvijQJAfvg3Y4lL4tWeh.G2C SUrEueNjqPZjZpGith6OI_eM4JcMe.I9xjwTKIcX57lVv73.H8SLBQ3FdyreQQ7TJGUmoEoo6Bxi w8k3ZnRCOYmr5hptHnMK94wYE0mPTxbpSG1WHgkocpsF..1bFP12Dy1rCf.fmpZUZww78KUxQw.m 5tKYB7HTglI7ARCzCLsWE0GerRK5vRFJz.mWlvJ1vVkJ.TGJBTD2ZWmvONvuTIitQYNOFuTorzPB otsTEf02mrnwq93Yil9Jad0Ac55gwmo2gFyg0eS9RDcyPXZhTt_mDRbg0ojx0.22y1YeBPdY468N 9At9Dw7s8DEX21z149SEtu.vnKLkPrB0yXgSdoPZ2DQE6cqA2ELy.6F4WglLLWYqFJ_RScXDhg.. LbMMD9jvXxQCv0sc9B5JJSm3V9UkiRZL6z_sYP5wfTclvXncpB5NfQm0oFUiuw4R2hqtFOXh_IEJ Q7pkoiOgA.b2Ze3QoF7P2qDxKHGF3wmW_bvL59bOMvkkeVA9l66YS5lV6hJvS3tiKX4DEwkJN6NC qrOsIo.ev6V2hrHBwFtP1F5jf_5k9XJNFDz.Sx1urEuhlaxaR9nll6.Jf0GuoCZenvjf2kciot2C HQMmjLWd0WrKU_xrk2aLrr2EDjPIYabaRco.9T.dcSYn9EII1MnWkqQ6A1kUBpl_.hCJHqroKrhq UmX9GVrOzHYUbBo9NzuQi20BmznYqRz8zyeMFLJ1il0U3o5CsLycI4k2pi55QxmQ2dXDDDJUitwG g12fbtxM6R5f2TEV9Bu0soTlw.nlmjqE0TaxUgHLQC70HQa.gdaLmAUbg211jOMQS.FC0_K25tu1 EvUAaNuLQTrbhJLD5VvGc9NGqsJjFAgroVyItsxRJEFXlePZa_bKS3ItlP4i8sc6wZvgU7HNTS0X .vceOdfpkNDIeVkjQd9KOl7p1c2isEHSQ2Rr72M5NqDm4610roOsqNau.uZ6q8WRQmn88QONhvxb f5Eb_cEn3nLq1VBm4oBclRuN3OcCsIqZrk4Pgjo_O83Tv7EqTfjbuFTkaDe.jJmeqNV9UvUZKkVq sxih8dcCx_KZDDfQqZMQ4z89lEBTgfc5fHgztlCD_7spoC2SIr_u6ID_kgr2Lknm5pkxsamTThmq ZQHxEnrVfoDYGErv_Dx3ppSaTirqeCpUi3TJXTEo.i4K8sgNBpQ2U76XQf9M0t2xGvQ0Vfpcm6vD g5S97u0Sb9UkCAsDOsGIO..6hSalVolsadmHI3XmeCVKamwf_Dh5xJ5mfZEmrcA_Ec.993GUwq4P CqqdSw5_IlIQEHErPe7qvUJDT437tdxkAEPqvc_V5bW1or8iHq2MMGouwDgc0bX9SAzO7RCank_u 3GuCDbyq1fmfPD3CDNjAUa.wSLx4rv0GYHMi1zCw.x2NEPzdAh6IQOMqDiuYQDl.uC1tgRCJ0SaU S9HQIVHbfoUXjew3Dp4m63cQaLgKljZLpqFXzzi4UraCDOjgc0BIDb2jrMBgTlnTpV4.BolboaY. cN8z5D9D0zNVDwxuhfn.hks9gM0OWF1syu3YuK0xMfWbT4SSxWW2uD6MZ6QhnnE2K4L2740JQwx2 yWy_UJZR1_FZTu7B9QSrtcEdPp26v4aXitAgDE0qoc.8yG09HPKZub46.1tpnmx1AchO9iz5FkKe faO_4iNrrKXBHFnRH_HeRkmaJ0Aa9_PIvf01cjhVz5bcnNKkhOBiwhNI8ubDgxrPt4oM_L3o6war UovwWm5FxvDWY2m.xbwwCqNswM9880olIO2TgxSzf03AxfpcxvXP.rUiEwyx2OS5Y48tkeXf4MQp dlqEKhyW4sSLrJ0ZsdzRiNJrPfn1Hn6iRT0Us X-Sonic-MF: X-Sonic-ID: 597644d1-cd42-43a9-bfc7-eb4b5b6dfa75 Received: from sonic.gate.mail.ne1.yahoo.com by sonic313.consmr.mail.sg3.yahoo.com with HTTP; Wed, 12 Nov 2025 03:36:48 +0000 Received: by hermes--production-ne1-55f4cd58bd-xpw5m (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID e4690b395d94bf0002e45a0b77724bf8; Wed, 12 Nov 2025 03:16:28 +0000 (UTC) From: Sumanth Gavini To: jstultz@google.com, rostedt@goodmis.org, mhiramat@kernel.org, sumanth.gavini@yahoo.com, tglx@linutronix.de, clingutla@codeaurora.org, mingo@kernel.org, sashal@kernel.org, boqun.feng@gmail.com, gregkh@linuxfoundation.org, ryotkkr98@gmail.com, kprateek.nayak@amd.com Cc: elavila@google.com, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH V2 6.1] softirq: Add trace points for tasklet entry/exit Date: Tue, 11 Nov 2025 21:16:20 -0600 Message-ID: <20251112031620.121107-1-sumanth.gavini@yahoo.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" commit f4bf3ca2e5cba655824b6e0893a98dfb33ed24e5 upstream. Tasklets are supposed to finish their work quickly and should not block the current running process, but it is not guaranteed that they do so. Currently softirq_entry/exit can be used to analyse the total tasklets execution time, but that's not helpful to track individual tasklets execution time. That makes it hard to identify tasklet functions, which take more time than expected. Add tasklet_entry/exit trace point support to track individual tasklet execution. Trivial usage example: # echo 1 > /sys/kernel/debug/tracing/events/irq/tasklet_entry/enable # echo 1 > /sys/kernel/debug/tracing/events/irq/tasklet_exit/enable # cat /sys/kernel/debug/tracing/trace # tracer: nop # # entries-in-buffer/entries-written: 4/4 #P:4 # # _-----=3D> irqs-off/BH-disabled # / _----=3D> need-resched # | / _---=3D> hardirq/softirq # || / _--=3D> preempt-depth # ||| / _-=3D> migrate-disable # |||| / delay # TASK-PID CPU# ||||| TIMESTAMP FUNCTION # | | | ||||| | | -0 [003] ..s1. 314.011428: tasklet_entry: tasklet= =3D0xffffa01ef8db2740 function=3Dtcp_tasklet_func -0 [003] ..s1. 314.011432: tasklet_exit: tasklet= =3D0xffffa01ef8db2740 function=3Dtcp_tasklet_func -0 [003] ..s1. 314.017369: tasklet_entry: tasklet= =3D0xffffa01ef8db2740 function=3Dtcp_tasklet_func -0 [003] ..s1. 314.017371: tasklet_exit: tasklet= =3D0xffffa01ef8db2740 function=3Dtcp_tasklet_func Signed-off-by: Lingutla Chandrasekhar Signed-off-by: J. Avila Signed-off-by: John Stultz Signed-off-by: Thomas Gleixner Reviewed-by: Steven Rostedt (Google) Link: https://lore.kernel.org/r/20230407230526.1685443-1-jstultz@google.com [elavila: Port to android-mainline] [jstultz: Rebased to upstream, cut unused trace points, added comments for the tracepoints, reworded commit] The intention is to keep the stable branch in sync with upstream fixes and improve observability without introducing new functionality. Signed-off-by: Sumanth Gavini Changes in V2: - No code changes - Link to V1: https://lore.kernel.org/all/20250812161755.609600-1-sumanth.g= avini@yahoo.com/ - Updated the comment msg before the signed-off-by --- include/trace/events/irq.h | 47 ++++++++++++++++++++++++++++++++++++++ kernel/softirq.c | 9 ++++++-- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h index eeceafaaea4c..a07b4607b663 100644 --- a/include/trace/events/irq.h +++ b/include/trace/events/irq.h @@ -160,6 +160,53 @@ DEFINE_EVENT(softirq, softirq_raise, TP_ARGS(vec_nr) ); =20 +DECLARE_EVENT_CLASS(tasklet, + + TP_PROTO(struct tasklet_struct *t, void *func), + + TP_ARGS(t, func), + + TP_STRUCT__entry( + __field( void *, tasklet) + __field( void *, func) + ), + + TP_fast_assign( + __entry->tasklet =3D t; + __entry->func =3D func; + ), + + TP_printk("tasklet=3D%ps function=3D%ps", __entry->tasklet, __entry->func) +); + +/** + * tasklet_entry - called immediately before the tasklet is run + * @t: tasklet pointer + * @func: tasklet callback or function being run + * + * Used to find individual tasklet execution time + */ +DEFINE_EVENT(tasklet, tasklet_entry, + + TP_PROTO(struct tasklet_struct *t, void *func), + + TP_ARGS(t, func) +); + +/** + * tasklet_exit - called immediately after the tasklet is run + * @t: tasklet pointer + * @func: tasklet callback or function being run + * + * Used to find individual tasklet execution time + */ +DEFINE_EVENT(tasklet, tasklet_exit, + + TP_PROTO(struct tasklet_struct *t, void *func), + + TP_ARGS(t, func) +); + #endif /* _TRACE_IRQ_H */ =20 /* This part must be outside protection */ diff --git a/kernel/softirq.c b/kernel/softirq.c index 9ab5ca399a99..fadc6bbda27b 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -822,10 +822,15 @@ static void tasklet_action_common(struct softirq_acti= on *a, if (tasklet_trylock(t)) { if (!atomic_read(&t->count)) { if (tasklet_clear_sched(t)) { - if (t->use_callback) + if (t->use_callback) { + trace_tasklet_entry(t, t->callback); t->callback(t); - else + trace_tasklet_exit(t, t->callback); + } else { + trace_tasklet_entry(t, t->func); t->func(t->data); + trace_tasklet_exit(t, t->func); + } } tasklet_unlock(t); continue; --=20 2.43.0