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 49CA72ED141 for ; Wed, 12 Aug 2026 12:34:10 +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=1786538052; cv=none; b=r9jb6dP4kYz9HUNkDPoDafN8aEKGPdpGBFNcN9098MLXHl3/npgP8sRS76quaE9IHM3uJxnP0G3vO4cDh9w3Wdpi7U7Q8GU44V9Vr3FB8mqwXjT/oGK0EM5OKHGqzpQ4eU0GCSJsOUB1OTHWEXvqGwlPhhfoSTLVwUC8U0bjL/E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786538052; c=relaxed/simple; bh=iUlWoPsj9zWfMV7ORBYQvDQGFSz1+CRbt/3HJBF8hJI=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=Xyv13n9KBWV5WSEL0gf7cCXwTwjzF9RAniFYSDxlSLPkOc8lh6U/M2plYFgF8ucFn3ymSn8lXjiPJ5gXwsYk0vBuVoCGc2F2APZCZGQ/1qRPi0uk35wGdNPD8FH9EVXnM1seg8nazK/fj0c9KG4x/A3YgqZ0xluIlt8ZblS59tA= 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=TS1Ug6wi; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=TOsRR0U2; 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="TS1Ug6wi"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="TOsRR0U2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1786538049; 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=Nv5ly0m1D08U/TFFN+ZAY0FDeBAmpfUnhFFvB/yjXXM=; b=TS1Ug6wi7/JGIovo7GbDdJGYoHe9lvVRT0nwys7dGroKGlnfp0Gb+k0b6wWI3ukQLwWi1n tqBKtNj0WMOv+aydYgwaPkG4SUfq/r3+nCtgtJq2dcr++0MtA5DpnfK9kqr8kmEsBOeN1a BczaX/144Sm2Zsnqnp+QdZZ2PQQBexs= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-602-k0uIjsbzMYWKMOrBs9x93Q-1; Wed, 12 Aug 2026 08:34:08 -0400 X-MC-Unique: k0uIjsbzMYWKMOrBs9x93Q-1 X-Mimecast-MFC-AGG-ID: k0uIjsbzMYWKMOrBs9x93Q_1786538047 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4954dcd6131so8584315e9.3 for ; Wed, 12 Aug 2026 05:34:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1786538047; x=1787142847; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:content-type :autocrypt:references:in-reply-to:date:cc:to:from:subject:message-id :from:to:cc:subject:date:message-id:reply-to:content-type; bh=Nv5ly0m1D08U/TFFN+ZAY0FDeBAmpfUnhFFvB/yjXXM=; b=TOsRR0U2tlx1ORtfYkQN6yMvIcVcozt32FApweRP5wB4IURS+IWqgsHRqg0tQ0kLFb /i6ForFhLwwn7SWkRQOEUIK1GarcMHAmpY+nhYUn39aSKqBzIkOqXHvm8RDFUNZ/vUAm 8Xf4I5EHpN+63jmvNs2GOgKGseAxIa0JDd3vtI7rTyztt/pqmoqISkRVREEF0YwfqVSI O+Zuogq/k2YMdj45sPOMCEL0Rf1+p0mnD8TNVRLYMdJnxWFX/5tkm4xRVfbGK1P0pH6P qxHxpql4lIy9ldssgL/j85luCp0wyAjApMCBqU8/VaXZHmM0/hDXD4zDwZUwYhZqxoob WP8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786538047; x=1787142847; h=mime-version:user-agent:content-transfer-encoding:content-type :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:content-type; bh=Nv5ly0m1D08U/TFFN+ZAY0FDeBAmpfUnhFFvB/yjXXM=; b=OSV06tt/lcCvVEY56XoBFTkTMoOPWi4gkFf84md6anu5srNZM+QwT3plpbQt7nkz5p WnXD/rWjnL5SR9MAAa0qcJ40sRuSVb38qM2mKUfx2znVxCbeJX/4aLC3VG8zz7ThNgA1 E4h2z8ro+mI952QmdmlDS33RT5aY5FuvE+H8s7375dkZf9Z8Xhmx180JCpBvdjbvxW+I Il5XZtEjmi5btsukxB9G92Y0Fu1yxekpEmPUqkbe3ugFO1u0foGsg+ufOZDOkLT8arfM x+ZV/Vl8UD66P+fJKy05e/Vtq29VmVgEJQgOI0MgmAjlZJH+/o+XN0DTgCwPpniW1zhQ Omzw== X-Forwarded-Encrypted: i=1; AHgh+Roe/QbX8S2AZ2f+ajpvpudcfihVGAqRuMZIxWMGMYidczldi+nxbK2dFpnMP/oePuAVmUdWDvuDiHhrlDo=@vger.kernel.org X-Gm-Message-State: AOJu0YyIQr07LoevkDCUr6vZfUwgk0LhYRVG8wGB30bbUybnn5duuRDA LLE5X0s5f20jG8ze1sRwyUtElJn6zXG5zrm+kkug0mYWEmdL1JS2MABzcU3W1PWwwzDGW7FgF0P TOs89oSI2FubDLdfgJGa8XE3c5dBI2UWK8u7zezvW12DGlj+iWKrVNavLAqjXQHD9Gw== X-Gm-Gg: AR+sD10WgcB7DOPgRqtna/hA74lJxmQrD1z8A1IsriG18q0maiGLRNOW1sMZVxkFUaT rhS1RIREVWqa5TeCyTYlrorjFhTKE7qOCnG/yxFTpcpUTnTOAtctoEQMuWYeQBw6V8EYrAPnV5l lkt9XlspCFzzBWi4u4oH5oHEDirZ0gM0KwXnXv6odbZFl1bWDLwlFo4xifTLkAbQZLJL0+K1tAd akc1sm7p4hZLN2kjx3I4doVS6LQfY1W4Gollzoz0osZSD0rkkRX2A5F3UG937c5W4sc46CDHeBC bWGxUYq0OCmsFhIviS09uVv84pwEZVVgni32eikRRpkqZ65OQgVSk2akswDMaKKvsfaX7Sthpi2 5OzhjBAvLfgan3Txsr5eYaDv+y7IF X-Received: by 2002:a05:600c:1f82:b0:499:5c3c:41a5 with SMTP id 5b1f17b1804b1-4997bf88a5emr59165885e9.0.1786538046684; Wed, 12 Aug 2026 05:34:06 -0700 (PDT) X-Received: by 2002:a05:600c:1f82:b0:499:5c3c:41a5 with SMTP id 5b1f17b1804b1-4997bf88a5emr59164975e9.0.1786538046200; Wed, 12 Aug 2026 05:34:06 -0700 (PDT) Received: from gmonaco-thinkpadt14gen3.rmtit.csb ([185.168.96.228]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48150c088c9sm7294272f8f.13.2026.08.12.05.34.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:34:04 -0700 (PDT) Message-ID: <38decc4f7ef5b6f03b37705c7e97f22a7e40d7e2.camel@redhat.com> Subject: Re: [PATCH v3 1/4] rv/reactors: use context-sensitive lockdep wait type in rv_react() From: Gabriele Monaco To: wen.yang@linux.dev Cc: Nam Cao , linux-trace-kernel@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas =?ISO-8859-1?Q?Wei=DFschuh?= Date: Wed, 12 Aug 2026 14:34:03 +0200 In-Reply-To: <26526e555baa5118325b2383e9f7f0f8f9b6a199.1786294920.git.wen.yang@linux.dev> References: <26526e555baa5118325b2383e9f7f0f8f9b6a199.1786294920.git.wen.yang@linux.dev> 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.2 (3.60.2-1.fc44) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 On Mon, 2026-08-10 at 01:10 +0800, wen.yang@linux.dev wrote: > From: Wen Yang >=20 > Reactors must not explicitly take locks, so they should comply with > LD_WAIT_FREE.=C2=A0 However, reactor callbacks can run with preemption > enabled on any kernel (not just PREEMPT_RT).=C2=A0 If a timer interrupt > fires during the callback, the interrupt exit path schedules and > acquires rq->__lock (LD_WAIT_SPIN) while the lockdep override map that > declared LD_WAIT_FREE is still held, triggering a spurious > "Invalid wait context" warning: >=20 > =C2=A0=C2=A0=C2=A0 [ BUG: Invalid wait context ] > =C2=A0=C2=A0=C2=A0 context-{5:5} > =C2=A0=C2=A0=C2=A0 1 lock held by kunit_try_catch/209: > =C2=A0=C2=A0=C2=A0=C2=A0 #0: (rv_react_map-wait-type-override){+.+.}-{1:1= } > =C2=A0=C2=A0=C2=A0 kunit_try_catch/209 is trying to lock: > =C2=A0=C2=A0=C2=A0 ffff8a743ed3e8a0 (&rq->__lock){-...}-{2:2} >=20 > Fixes: 69d8895cb9a9 ("rv: Add explicit lockdep context for reactors") > Suggested-by: Gabriele Monaco You came up with the idea, I at most suggested how I'd like it worded in th= e comment. Anyway, I'd appreciate comments/acks from the other folks in the loop, but = from my side this looks good. Reviewed-by: Gabriele Monaco Thanks, Gabriele > Signed-off-by: Wen Yang > Cc: Thomas Wei=C3=9Fschuh > --- > =C2=A0kernel/trace/rv/rv_reactors.c | 20 +++++++++++++++----- > =C2=A01 file changed, 15 insertions(+), 5 deletions(-) >=20 > diff --git a/kernel/trace/rv/rv_reactors.c b/kernel/trace/rv/rv_reactors.= c > index 2f5fc8d18dea..5830229210e8 100644 > --- a/kernel/trace/rv/rv_reactors.c > +++ b/kernel/trace/rv/rv_reactors.c > @@ -465,18 +465,28 @@ int init_rv_reactors(struct dentry *root_dir) > =C2=A0 > =C2=A0void rv_react(struct rv_monitor *monitor, const char *msg, ...) > =C2=A0{ > - static DEFINE_WAIT_OVERRIDE_MAP(rv_react_map, LD_WAIT_FREE); > + /* > + * Reactors must not explicitly take locks, so they should be > + * LD_WAIT_FREE.=C2=A0 However, reactor callbacks can run with preempti= on > + * enabled, meaning the preempting code (e.g. the scheduler taking > + * rq->__lock at LD_WAIT_SPIN) may violate that constraint.=C2=A0 Use > + * LD_WAIT_SPIN in preemptible contexts to avoid false-positive > lockdep > + * reports; keep LD_WAIT_FREE in NMI/hardirq where preemption is > + * disabled and the scheduler cannot run. > + */ > + static DEFINE_WAIT_OVERRIDE_MAP(rv_react_map,=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 LD_WAIT_SPIN); > + static DEFINE_WAIT_OVERRIDE_MAP(rv_react_map_atomic, LD_WAIT_FREE); > + struct lockdep_map * __maybe_unused map; > =C2=A0 va_list args; > =C2=A0 > =C2=A0 if (!rv_reacting_on() || !monitor->react) > =C2=A0 return; > =C2=A0 > + map =3D (in_nmi() || in_hardirq()) ? &rv_react_map_atomic : > &rv_react_map; > =C2=A0 va_start(args, msg); > - > - lock_map_acquire_try(&rv_react_map); > + lock_map_acquire_try(map); > =C2=A0 monitor->react(msg, args); > - lock_map_release(&rv_react_map); > - > + lock_map_release(map); > =C2=A0 va_end(args); > =C2=A0} > =C2=A0EXPORT_SYMBOL_GPL(rv_react);