From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4F7683AFCE2 for ; Tue, 19 May 2026 15:08:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779203286; cv=none; b=rcP6CfP08sfetiMqaukXd0aWTVx/pm7pUj1X97S1JVAzKxHGpguOCmGQV68M9kcwrx6quyt2Nc5JdGTmH0CQ0mLoIzfsbV+gipqUbsIP6gaeElJ8fZHzHGJtq4PzTxlV4ZyjR9tzyt0TYwM5yb0Cc3+Y1gJJLEXJ6EuKZy5qA3Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779203286; c=relaxed/simple; bh=LFpi3PFMCX0KmXdN9jZ+x7PmPDVffX2+chupwd171+w=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=HvhafEXu3zkr9Js5Jsx4+8UF4H9F06R15PXwrovhicqidS6JE32Bkg860ERlf11Nzz7UeUKlF+VJekqbValYdgmcAdcduV/J7Protp55p8GAiYIqABhIlwk1CHwaQY8SKD/j1VjV+r8rznuR5+VH169vim8/8cbtfIQ+6Nogqjk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=fHmt5xxT; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=g4juUrvF; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="fHmt5xxT"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="g4juUrvF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779203284; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=PSZiOlkDlGIKq/TICCQi9MAGkxXR/eUQ6KbBGR/Dyl0=; b=fHmt5xxT+VXXa5753eMcGb8VtMZtFQ2o8Er/H8MQedjNEcYemykJtGp4DQD7mbvJfftIrk r8jgLqwfUNW48K/m/e8Y/zUZXffdi9LSaFJ9LNOUveRfjzsguI/OqON8Fy1Q0Y8bxVo3H+ wegh8acj764F07SBa8juZOaIvYvvshI= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-360-y3H9D94rOAeiURrTCgxeng-1; Tue, 19 May 2026 11:08:02 -0400 X-MC-Unique: y3H9D94rOAeiURrTCgxeng-1 X-Mimecast-MFC-AGG-ID: y3H9D94rOAeiURrTCgxeng_1779203282 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-48fd64c32e8so25142125e9.3 for ; Tue, 19 May 2026 08:08:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1779203281; x=1779808081; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:cc:to:from:subject:message-id:from:to :cc:subject:date:message-id:reply-to; bh=PSZiOlkDlGIKq/TICCQi9MAGkxXR/eUQ6KbBGR/Dyl0=; b=g4juUrvFIZLwpJFyDnlgDaQowpp8RTtSqEcsfq9P9MFcA1NlswwVLQm7N2ov524lE2 zXL/aRsFi9IbKCTQ1zWk3dCAe8tJLE/urMFK5IY0cd1+50CEFwYMNXvns7W/6wkQEMnt rpX1cwB68oEaD++lzw3h8pGjJtFh9EVrM9quW8rKrXJkGEdAKW1Omqj6Tzv8dvd53Kog 7h+EbjdCXXJ+I2A9XtOr2sHJ6CJc/lZDt1a4s8EeFcI/1juPQYi09aCupJObU6YrS811 z/QQYxTZZcCqitNTi9sypmsLhs8twVIlYVcPjcGrw+6IEPDg7Q9tHWtgf3sy4iB/Sfsp +7eA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779203281; x=1779808081; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:cc:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PSZiOlkDlGIKq/TICCQi9MAGkxXR/eUQ6KbBGR/Dyl0=; b=UBPgnv6wW8gNm0TT4BtyvDOAknQWhfzDd0uadjlQthVxG2Ixle0yAWXc8lLdY3y62p g8ejRXWhQXF6fZrVXnwRNE7x0wWSlXiBA5Gz6KEufh9TZDeqiQcEkkWW/SHNR8CIYn9x UHk6REWs39W0/+CAKOA6hyVt79YTMLgVP5b4UhCi/Id1dpp0a6jdbVNtHOA9BG50loPE xrIxPnV/t6c86JP7T+SxJx2rxOlsAHUc0JZs8m5pj+frJzocBO0zGnn/872ZeU9wsd0S 2zeUTOMjBX5OVBLcUQGfHsg3v3UyGB1HcXr/QdiG6/IMWRCIicrTvWzaK4BtLFa3MHkg jLKQ== X-Forwarded-Encrypted: i=1; AFNElJ+LJoSIParkWdJxAZenQPhbilEHAz8U+CkVwkJkMrZ8MaEJKizDKxSdQWdGlLnJlHN07Vjp21q6VsbJ1WA=@vger.kernel.org X-Gm-Message-State: AOJu0Yyznzff1Dj+1mabRRX9Ns6QhaZfX+aejCQ2PsuZ6UnUI7tyrYGB Y3B3LnG0c5VrCQLG1W6KGao6oEpQLOcR2DQqMmfGiz6y4fEj7AOVMqfQy/8digRMh249GpSNNHD uW5wloa5NeRA3rnQoYKno61NXt9b3cTqeJm6EbjVvB5TMTnmQiogzjurm9BnWYYogTWqUmTzFjA qC X-Gm-Gg: Acq92OHhSlVkRQWkzXkHcKh9Bu/XV7JGut3Uy8HHu5k205aq1xNY0yqN0PhAFzGnAHV m9WDtnL6FGTNTjsdHXKZImYwk8kxrQW5P3aRxwoFJ6QYrRI1c2cHHX5Y4iUmLOzbckDUhaBOnxG WbD25H+GAjw6ikFCFDwr2fCM4OaWODdzASCyIpGb+O13ugz76eIYPHQuwe/qkbS0bzLmEvKKEOg KBpEJ3IB9mZOxsqu5Y3HMUrsueoPXgX3N4PmLzXLtQFUrImgyKeVoN2x3+E+voadqkL/ks3Qg87 FP0tQr6mVmpweFEaRKDfy967E02bSpBfnCtSTRqWg1ZGt9kcHSJ7OFpjgqLs7HE2lZ/BOkQl1SS 5+vb8ziDpJTiX1v95rlvrLGVpTvRj0OGm9U92DXCAxGgc9jdybTISZ+dmd8xIaihc1hcZaVplV9 rr3/GcSGWExCkW0mmzWSoI/Wg1Fw== X-Received: by 2002:a05:600c:4e53:b0:490:1640:8269 with SMTP id 5b1f17b1804b1-490164089c7mr118530965e9.18.1779203281577; Tue, 19 May 2026 08:08:01 -0700 (PDT) X-Received: by 2002:a05:600c:4e53:b0:490:1640:8269 with SMTP id 5b1f17b1804b1-490164089c7mr118530395e9.18.1779203281120; Tue, 19 May 2026 08:08:01 -0700 (PDT) Received: from gmonaco-thinkpadt14gen3.rmtit.csb (212-8-243-115.hosted-by-worldstream.net. [212.8.243.115]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45d9e768c4fsm46762871f8f.8.2026.05.19.08.08.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2026 08:08:00 -0700 (PDT) Message-ID: <19cffa1267c6538e6310b0149b0367807af76ac0.camel@redhat.com> Subject: Re: [PATCH 1/3] rv/rtapp/sleep: Make the error more informative for user From: Gabriele Monaco To: Nam Cao Cc: Steven Rostedt , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Date: Tue, 19 May 2026 17:07:59 +0200 In-Reply-To: <14242f444f7d2396c0c5a345f0099665d09a0ec5.1779176466.git.namcao@linutronix.de> References: <14242f444f7d2396c0c5a345f0099665d09a0ec5.1779176466.git.namcao@linutronix.de> Autocrypt: addr=gmonaco@redhat.com; prefer-encrypt=mutual; keydata=mDMEZuK5YxYJKwYBBAHaRw8BAQdAmJ3dM9Sz6/Hodu33Qrf8QH2bNeNbOikqYtxWFLVm0 1a0JEdhYnJpZWxlIE1vbmFjbyA8Z21vbmFjb0BrZXJuZWwub3JnPoiZBBMWCgBBFiEEysoR+AuB3R Zwp6j270psSVh4TfIFAmjKX2MCGwMFCQWjmoAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgk Q70psSVh4TfIQuAD+JulczTN6l7oJjyroySU55Fbjdvo52xiYYlMjPG7dCTsBAMFI7dSL5zg98I+8 cXY1J7kyNsY6/dcipqBM4RMaxXsOtCRHYWJyaWVsZSBNb25hY28gPGdtb25hY29AcmVkaGF0LmNvb T6InAQTFgoARAIbAwUJBaOagAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgBYhBMrKEfgLgd0WcK eo9u9KbElYeE3yBQJoymCyAhkBAAoJEO9KbElYeE3yjX4BAJ/ETNnlHn8OjZPT77xGmal9kbT1bC1 7DfrYVISWV2Y1AP9HdAMhWNAvtCtN2S1beYjNybuK6IzWYcFfeOV+OBWRDQ== Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.60.1 (3.60.1-1.fc44) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 On Tue, 2026-05-19 at 09:49 +0200, Nam Cao wrote: > The rtapp/sleep monitor detects real-time tasks which go to sleep in an > real-time-unsafe manner. If this happen, the monitor triggers a trace eve= nt > in the sched_wakeup tracepoint's handler. >=20 Ok so here WAKE is no longer tied to the wakeup event but to the end of the= task switch. So what happens if a task was not sleeping but just got preempted? Wouldn't= that trigger WAKE (though that isn't a real wakeup) without RT_FRIENDLY_WAKE ? Thanks, Gabriele > However, the invoking context of that trace event is not the most > informative, because of the stack trace of that event is the wakeup's cod= e > path which is not very helpful: >=20 > 74.669317: rv:error_sleep: condvar[254]: violation detected > =C2=A0=C2=A0=C2=A0 ltl_validate+0x345 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 handle_sched_wakeup+0x34 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 ttwu_do_activate+0xff ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 sched_ttwu_pending+0x104 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 __flush_smp_call_function_queue+0x15b ([kernel.kallsym= s]) > =C2=A0=C2=A0=C2=A0 __sysvec_call_function_single+0x18 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 sysvec_call_function_single+0x66 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 asm_sysvec_call_function_single+0x1a ([kernel.kallsyms= ]) > =C2=A0=C2=A0=C2=A0 pv_native_safe_halt+0xf ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 default_idle+0x9 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 default_idle_call+0x33 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 do_idle+0x234 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 cpu_startup_entry+0x24 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 start_secondary+0xf8 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 common_startup_64+0x13e ([kernel.kallsyms]) >=20 > What would be much more valuable is the stack trace of the task itself. >=20 > Change the update of WAKEUP from being in sched_wakeup trace point's > handler to sched_exit trace point's handler. This makes the event happen = in > the task's context, making the stack trace far more informative for user: >=20 > rv:error_sleep: condvar[254]: violation detected > =C2=A0=C2=A0=C2=A0 ltl_validate+0x345 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 handle_sched_exit+0x39 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 __schedule+0x80f ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 schedule+0x22 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 futex_do_wait+0x33 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 __futex_wait+0x8c ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 futex_wait+0x73 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 do_futex+0xc6 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 __x64_sys_futex+0x121 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 do_syscall_64+0xf3 ([kernel.kallsyms]) > =C2=A0=C2=A0=C2=A0 entry_SYSCALL_64_after_hwframe+0x77 ([kernel.kallsyms]= ) > =C2=A0=C2=A0=C2=A0 __futex_abstimed_wait_common64+0xc6 (inlined) > =C2=A0=C2=A0=C2=A0 __futex_abstimed_wait_common+0xc6 (/usr/lib/x86_64-lin= ux-gnu/libc.so.6) >=20 > Signed-off-by: Nam Cao > --- > =C2=A0kernel/trace/rv/monitors/sleep/sleep.c | 8 ++++---- > =C2=A01 file changed, 4 insertions(+), 4 deletions(-) >=20 > diff --git a/kernel/trace/rv/monitors/sleep/sleep.c > b/kernel/trace/rv/monitors/sleep/sleep.c > index 8dfe5ec13e19..0a36f5519e6b 100644 > --- a/kernel/trace/rv/monitors/sleep/sleep.c > +++ b/kernel/trace/rv/monitors/sleep/sleep.c > @@ -92,9 +92,9 @@ static void handle_sched_set_state(void *data, struct > task_struct *task, int sta > =C2=A0 ltl_atom_pulse(task, LTL_ABORT_SLEEP, true); > =C2=A0} > =C2=A0 > -static void handle_sched_wakeup(void *data, struct task_struct *task) > +static void handle_sched_exit(void *data, bool is_switch) > =C2=A0{ > - ltl_atom_pulse(task, LTL_WAKE, true); > + ltl_atom_pulse(current, LTL_WAKE, true); > =C2=A0} > =C2=A0 > =C2=A0static void handle_sched_waking(void *data, struct task_struct *tas= k) > @@ -200,7 +200,7 @@ static int enable_sleep(void) > =C2=A0 return retval; > =C2=A0 > =C2=A0 rv_attach_trace_probe("rtapp_sleep", sched_waking, > handle_sched_waking); > - rv_attach_trace_probe("rtapp_sleep", sched_wakeup, > handle_sched_wakeup); > + rv_attach_trace_probe("rtapp_sleep", sched_exit_tp, > handle_sched_exit); > =C2=A0 rv_attach_trace_probe("rtapp_sleep", sched_set_state_tp, > handle_sched_set_state); > =C2=A0 rv_attach_trace_probe("rtapp_sleep", contention_begin, > handle_contention_begin); > =C2=A0 rv_attach_trace_probe("rtapp_sleep", contention_end, > handle_contention_end); > @@ -213,7 +213,7 @@ static int enable_sleep(void) > =C2=A0static void disable_sleep(void) > =C2=A0{ > =C2=A0 rv_detach_trace_probe("rtapp_sleep", sched_waking, > handle_sched_waking); > - rv_detach_trace_probe("rtapp_sleep", sched_wakeup, > handle_sched_wakeup); > + rv_detach_trace_probe("rtapp_sleep", sched_exit_tp, > handle_sched_exit); > =C2=A0 rv_detach_trace_probe("rtapp_sleep", sched_set_state_tp, > handle_sched_set_state); > =C2=A0 rv_detach_trace_probe("rtapp_sleep", contention_begin, > handle_contention_begin); > =C2=A0 rv_detach_trace_probe("rtapp_sleep", contention_end, > handle_contention_end);