From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.221.48 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794071594; b=t6qSiW1evsGimZUAcWB8wEe/6m/laPgoNDgJWUNl8TRcCDpcGR+9YAnEFINJw5fyVltP YKjx5c9SUEpKpmVTkPDVQaH8WxxxdFZVnJx+a8CuuUe6xVTFtmY3aHkQi19fkeh3xUmpi WoJwmrD/jTUUQ1IeHuotbYG59BEqwSoKO973hdtPDPV2s9YRzgpsAdMi1NtQcRVobop9T kqnASjn7kHohzsrPU/odZKqZ5/SAGj6ZhMcsxjymdh41BSNGBRexNxOEkZ2QpvrYxJ4vs mj37mncetxFTzaPCZYsnmBPX2aqCbEqinqp3qNu62F8thwFiLBBCMnC8S394w9R4AdQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794071594; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: From:To:Cc:Subject:Date:Message-Id:X-Mailer:In-Reply-To:References: MIME-Version:Content-Transfer-Encoding; bh=vG12dDB2cOlbfaJe777WCUEVPBMgOyFMr8jFTvptykE=; b=vOqqpNa5lHnQCcjGqnky7ayE03dZz+//du85OKeXxYLO+xVSE+WORR4O2tKCU2DNdDMT 8Uy8aXIrxZOt69UHixnoqTIq8Px+CkAy/rf1xT99zDGTUIMP5yCPd5bdhOedvsCEjgBLc 7sTW6qngAl56UE5vjDGJC3yPn5MVJj6DeTft8f/1KNXxBv7mCEcJ3SWKnkmVAisLP7pax FB4kq006K0ZOvMV0nAsv29aIoLXN9+a8LodUz+7tMG2qenANZiwBGdw2iKQhPhnOQXBKv Pr+W/F57tOlSpjAmy4B0NxI9YEpNckm8D8tZivfFZoCaalbjXSNADFNhHJLC7enGDmA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=SWVyDxQw; arc=none smtp.remote-ip=209.85.221.48 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1831606EEAE for ; Sat, 7 Nov 2026 17:13:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org D1831606EEAE Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=SWVyDxQw Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-48e6eb21a8fso682841f8f.1 for ; Sat, 07 Nov 2026 09:13:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20260707; t=1794071592; x=1794676392; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vG12dDB2cOlbfaJe777WCUEVPBMgOyFMr8jFTvptykE=; b=SWVyDxQwJ8qnXh3rwRERwuMRPtImEWFDn2JsbKBNMOVftDIcZuWLZbpxkw2PqJv1wu An6AX/k7xtIc3KVgSd0KlmjvlEs+GX91Wyov3SnQ9k/U0nDCBTNpUY7/1cmTid/HpgYV XI9B/A2Fd+lMDhd8uD7u4FacrI9Hq3z0BvhVCWGGus+8Dsx+vVVBKyH+7vNLApBC/S+e 2tvuIYR0aDxUCOIkOwep7nQq3subLl3ktGXWx27vSL+y52S35hFUpCpVE4dwW+aEyjfS 3EsaajPa9jH/oDSkETW5BbCJV3qIvctPKtnv+gQUjGbg4LzVu+Cb74CKt2y8RDrHXhgQ vQPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794071592; x=1794676392; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=vG12dDB2cOlbfaJe777WCUEVPBMgOyFMr8jFTvptykE=; b=PiUMxT3PXwq/SXJ/ttNMcrvs9ZiFxK35Q18uDS1pBvD3DNhYE3h8RJaZjENUoIzjmv dtI3VdvB9uzkipd37hMFfioJZL5kANK79GqeUcxy7ANLC3j+ljnbKt41FvyMq6MtkNDD 4NptNBISwqg9lw0D4UOupAWZ+UErp+A8W6XcZglQC43ZOVV2Z324BWGkhb/aHlyZ0Gi+ ZoPPnsrz6vURYKWY9qzB9mFPBUyQvD/bwxuw3ed7xCgT33wwOt45APUIsupMmOz9D9HC 9TnY/ZBrwMZ+DmuWGli3GJ4P8MBagbOdKbbp05BBiK6Hu6NsFns51Ck4uIRe4YNHI3J3 BVpg== X-Forwarded-Encrypted: i=1; AL+hErEtX3Ai6kSmYZANQuxqwZ1ojJb2CjZq/0wHV1eTRGzmzEjGz7mL0iQ1HWzobOfpvy2xpBc0x6mTwa9Zot8=@vger.kernel.org X-Gm-Message-State: APuU4Z9ss0ueuRNSx8hRtCxbosAMY7Kzp2qKMlO/zVrGdlmwwev4fQoG z8Q/oeEb6ASt9hLq7nYwZ/15AgT/9VXXQ9L6i5g+DeWPorelK0Wh8JOE X-Gm-Gg: AYBFou21Fd9tdthdqwfZfERmUY+fPfOdMYND88+hUucuAVyCaWzB7gqcPGNQvHuVbF4 pGrGirqGZQ9+RnC1ACSZjfhQjGZeBn4vtXt6pCQiyaUJkLUdghJSovRBuc2giQzcbtXk+9ITvSl G7irjp1NeqXYZNv/jjujKTVO7Z+bolJv4mBmMa4xc/e1v+kiawpnOA2jWlQ1Cdh6+6e+KPoaWEG HxMFA0YXjfoy4+EbvZRmgPL7kMeTzoa8NnR/GIfqHhryPQotaBtfaOFMrMmHZxfzttNRXxXKeSa CheXSXfhaha35ihmbJZSAHLnKXS5SnvyLcL0uuRQI4CLLoC5YRlhkhMrzeifGlMYD41qwRGdmK9 nXKP2ZjpYyQU2iTtn9gjj6SsANE7xoBzy3C4wpEyQZBPpTClZtpy6vXnmO/14sVebZ2Mb/qmbwm 8Ja1wYSUOhMw4p/Z5yNu+1vXxFJvEpyIkDgDze5hbWvQhCsbTQKOTNSZvg5HMSiayzkudT4Dz1z wKw5oYkshqcIYrD5ZucdQmxaaQA5zJKhRnH6elkdcSYM5yVDwWei8B15E6PeVvi3DvRswS1pZnT k8VT+phUeet2wd9rraSq7w22x7Kk2PSE2KD8wUjA3EuTehZ+qCgjctPXe90AfGrgHk3CT1s2WGk dysuz/DzAJzW64OiaTCAEyV7IFrBfSQzQvCOIX+OWYhhCyuGy++EbMGq8HpXZTa4czsTzF6AU5g vKldousJd2ql+MQI5JztRibVUyhzJHs6Y= X-Received: by 2002:a05:6000:2dc9:b0:491:8462:20cc with SMTP id ffacd0b85a97d-49277bb1d39mr11173964f8f.37.1794071592005; Sat, 07 Nov 2026 09:13:12 -0800 (PST) Received: from localhost.localdomain (dynamic-2a02-3100-b149-1401-90c6-65b4-035d-1e3d.310.pool.telefonica.de. [2a02:3100:b149:1401:90c6:65b4:35d:1e3d]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-492d723222fsm10627105f8f.21.2026.11.07.09.13.09 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sat, 07 Nov 2026 09:13:11 -0800 (PST) From: Karl Mehltretter To: Steven Rostedt , Gabriele Monaco Cc: Karl Mehltretter , Masami Hiramatsu , Mathieu Desnoyers , Thomas Gleixner , Sebastian Andrzej Siewior , Clark Williams , Ingo Molnar , Peter Zijlstra , Andy Lutomirski , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Jonathan Corbet , Shuah Khan , Randy Dunlap , Wen Yang , linux-trace-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH v2 2/9] tracing/sched: Add IRQ preemption lifecycle tracepoints Date: Sat, 7 Nov 2026 18:12:45 +0100 Message-Id: <20261107171252.25090-3-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20261107171252.25090-1-kmehltretter@gmail.com> References: <20261107171252.25090-1-kmehltretter@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Tracepoints around __schedule() do not identify the start and end of one preempt_schedule_irq() invocation. The calling task may switch out and resume on another CPU before the invocation returns. Add bare entry and exit tracepoints around the generic helper using DECLARE_TRACE() so they are not exported in tracefs. Record the task that called preempt_schedule_irq() as the owner in both tracepoints so consumers can follow the invocation across switches and migration. Sample the preempt count and interrupt state before dispatching tracepoint callbacks. The tracepoints bracket preempt_schedule_irq() only. They do not cover architecture-specific interrupt-return work or establish that the helper was reached from a physical interrupt. Signed-off-by: Karl Mehltretter --- include/trace/events/sched.h | 26 ++++++++++++++++++++++++++ kernel/sched/core.c | 6 ++++++ 2 files changed, 32 insertions(+) diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h index 535860581f159..c7aeaa85d27ef 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -896,6 +896,32 @@ DECLARE_TRACE(sched_set_need_resched, TP_PROTO(struct task_struct *tsk, int cpu, int tif), TP_ARGS(tsk, cpu, tif)); +/* + * sched_irq_preempt_entry - begin preempt_schedule_irq() processing + * @owner: task whose interrupted execution will resume after scheduling + * @pc: preempt count sampled at the call site, before tracing bookkeeping + * @irq_off: interrupt state sampled at the same call site + * + * Emitted after entry assertions and context-tracking setup, with zero + * preempt count and local interrupts disabled. Exception-return paths can + * also use this scheduler entrypoint. + */ +DECLARE_TRACE(sched_irq_preempt_entry, + TP_PROTO(struct task_struct *owner, unsigned long pc, bool irq_off), + TP_ARGS(owner, pc, irq_off)); + +/* + * sched_irq_preempt_exit - original preempt_schedule_irq() invocation resumes + * @owner: task saved by the matching entry, possibly on a different CPU + * @pc: preempt count sampled at the call site, before tracing bookkeeping + * @irq_off: interrupt state sampled at the same call site + * + * Emitted with local interrupts disabled before restoring context tracking. + */ +DECLARE_TRACE(sched_irq_preempt_exit, + TP_PROTO(struct task_struct *owner, unsigned long pc, bool irq_off), + TP_ARGS(owner, pc, irq_off)); + #define DL_OTHER 0 #define DL_TASK 1 #define DL_SERVER_FAIR 2 diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 04b62c16fa8ca..e5c476d27eca7 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7649,12 +7649,16 @@ EXPORT_SYMBOL_GPL(preempt_schedule_notrace); */ asmlinkage __visible void __sched preempt_schedule_irq(void) { + struct task_struct *owner = current; enum ctx_state prev_state; /* Catch callers which need to be fixed */ BUG_ON(preempt_count() || !irqs_disabled()); prev_state = exception_enter(); + /* Sample before tracing bookkeeping can change the observed context. */ + if (trace_sched_irq_preempt_entry_tp_enabled()) + trace_sched_irq_preempt_entry_tp(owner, preempt_count(), irqs_disabled()); do { preempt_disable(); @@ -7664,6 +7668,8 @@ asmlinkage __visible void __sched preempt_schedule_irq(void) sched_preempt_enable_no_resched(); } while (need_resched()); + if (trace_sched_irq_preempt_exit_tp_enabled()) + trace_sched_irq_preempt_exit_tp(owner, preempt_count(), irqs_disabled()); exception_exit(prev_state); } -- 2.39.5 (Apple Git-154)