From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2647FE77188 for ; Wed, 15 Jan 2025 02:23:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AC71F6B0099; Tue, 14 Jan 2025 21:23:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A76636B009A; Tue, 14 Jan 2025 21:23:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 93DEB6B009B; Tue, 14 Jan 2025 21:23:38 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 769996B0099 for ; Tue, 14 Jan 2025 21:23:38 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 1AF61C0795 for ; Wed, 15 Jan 2025 02:23:38 +0000 (UTC) X-FDA: 83008090116.17.9A030A9 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by imf27.hostedemail.com (Postfix) with ESMTP id 3A3C74000F for ; Wed, 15 Jan 2025 02:23:35 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CnzJom7H; spf=pass (imf27.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.128.51 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736907816; h=from:from:sender: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:dkim-signature; bh=zBELE3X2SMyc3MQcTfgyuVEYPx80Dr26GwrfXs8KHHI=; b=Z+X5j9DIk+O1/oFPY0ur0a9/nUAqAB5NSu2O58KAD95F02CMNDAtb3tcD2RFSNH2KGcfAm jYmOqyu/9eKUjRuHbj+4RG/sADDjQErbcjEVjQGf/+Hu2NrKeW0ocTyBn1QV9rm4vAdfMc hjyqTDCVhYgexEoyLSifLLsdQ2j7NaM= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CnzJom7H; spf=pass (imf27.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.128.51 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736907816; a=rsa-sha256; cv=none; b=G8fi9ubNhcqkqwuoBZsdD/hu4Jg4Q3PV92bnS6ByZLSwiXSzFcW/BOSy+Ap+GArhVRZns2 VuWjiI+r9m4S9EqDsz4NkkoAI7AFvS9wmZAA+9WIae4mNrwaSQJc8aWaMB+eAiDm38zGH+ 1Nqyd3EGkhPUecYzXAxGUBelJ6f+wVg= Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-43618283d48so44179265e9.1 for ; Tue, 14 Jan 2025 18:23:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736907815; x=1737512615; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=zBELE3X2SMyc3MQcTfgyuVEYPx80Dr26GwrfXs8KHHI=; b=CnzJom7H5qgeUJsBLE8oW7uQeVe8bL1TPNtRxWplNen2VinIViCcO+h1dpMThdeB2e /xzhifPbdapW1YcvM411tWNJMaGc69FgheFLMwIgLKzlFDXYDQtJsS+HAeQqlNzQks6W g6c5UvhVqYc71EfQ7WPyujz/QzzAwNO2tFqL8DJeNRxRLhydsF6GGzZdvZwF0xfnvFn0 3ScWK4ZErNafbGS/2JliF+0+QkoqiySo2Hm1AoHZzSNpJ4gCPo3YShsGUYTU9F9er3lH 4/wquXGuB2DYETKCqPLfEG14p1+LdSKJCGvJbDjI2pe2u3RmaRLV7Wy+Y0GkIwii2FOE Nn8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736907815; x=1737512615; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zBELE3X2SMyc3MQcTfgyuVEYPx80Dr26GwrfXs8KHHI=; b=k/eWKokGruTchLGlu0oVlMX/8+Givp/ZcvzQzi5tVocIbJumgCvLR6c4ok6/KyxGc8 iZcOkIGJrvQgn1clmK9qYeTEmDkoXoBayB02n+oZU++pTQtDY7kfoM/UgH+bafq15rCL uC+Ecjj7Ugl2APhEUMTjeNFpQv5bkhLbFDxvPTbLYRZxNsCzqbJH1zvHsIDHt84E0/Yw 3En2jwPBtYpofLYvgurScI4gIfCdsNbXN4P25fG+LxsQnDdETPI2DBAGqxxKGCReDqww EFn6fMAf75PK9Lrq6u7shiq9AU2WKsk0x/nCDuDYyB4MOIrKu3Z8RDb94IDb+5fDj7tY 8ljg== X-Forwarded-Encrypted: i=1; AJvYcCV+66ra9xbtvwxJMHBDusy0hLat+FSKl9CYmC3wgbl0Ai6vRZmS28IFwlrW4y7Zd1xJoXrcn3KnlQ==@kvack.org X-Gm-Message-State: AOJu0Yxwe7KgiGAJvK9A2fV7C3DlcO/sqw+38jiVCsqnfGSd2xKMl0l6 OCFWbQgAer+k9Axml1X1ZBEYXnqzyE0pA26XAO/lxe29TmlYbH+Pps07FPQ5g52FAF8TNGiWRSK A/Eqvb5rm7CJzeQVhSxEMuNPWrm8= X-Gm-Gg: ASbGncur+1PvP+KUcj9CXssnUiBk3h0bBXBEz62S7k/NV0PuBiHSgUxQo18CB9wy5Hj vm/wMRfQAfVDFE/GNYnl+ns/MhxG7psl7OY+VC2dtyussY5vQuMRMdQ== X-Google-Smtp-Source: AGHT+IFty0foJe60xmSvupYhhse18eyk3EN8EjMD86WVUwloMtbCpwcJm5NueA8gMdYKKXKopGj8DS3tftFF9TYpGOE= X-Received: by 2002:a5d:5f52:0:b0:385:fa2e:a33e with SMTP id ffacd0b85a97d-38a8733a284mr24871047f8f.43.1736907814624; Tue, 14 Jan 2025 18:23:34 -0800 (PST) MIME-Version: 1.0 References: <20250115021746.34691-1-alexei.starovoitov@gmail.com> <20250115021746.34691-4-alexei.starovoitov@gmail.com> In-Reply-To: <20250115021746.34691-4-alexei.starovoitov@gmail.com> From: Alexei Starovoitov Date: Tue, 14 Jan 2025 18:23:21 -0800 X-Gm-Features: AbW1kvbtCTgZp92cF7D97Rt4YDzwJOgeAm26rHANr0zM9wy90QvXZf0H5wZaYbo Message-ID: Subject: Re: [PATCH bpf-next v5 3/7] locking/local_lock: Introduce local_trylock_irqsave() To: bpf Cc: Andrii Nakryiko , Kumar Kartikeya Dwivedi , Andrew Morton , Peter Zijlstra , Vlastimil Babka , Sebastian Sewior , Steven Rostedt , Hou Tao , Johannes Weiner , Shakeel Butt , Michal Hocko , Matthew Wilcox , Thomas Gleixner , Jann Horn , Tejun Heo , linux-mm , Kernel Team Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 3A3C74000F X-Rspam-User: X-Stat-Signature: mdg6qwubitxebccd7xow4niyyxe4gicb X-HE-Tag: 1736907815-237442 X-HE-Meta: U2FsdGVkX18sPGmvNP8Ty2G04ezLY8R9kJJBhs9tdOuPOFLUg0cscIQlX7dp64hOKM63zp6/qHe2d3mArUT0duAjQQKYv2kQ/3QiS89VOKX+472wdPQhsUyR0fnG5Y8je6QdloNbEcIgw1arJ1aMscXS3ptLwiKncChHwQ/YozJgr+9lVrQpf7VDiorO7HHRdyyIEnrMl18/wXagvRpWfYJOcwB4v06Io/o8hrbhjlklfnplvqGtgisnt2+neOmyCLlwmepm5Ccra09vzY6H+Olq8bxi95aP3/n8SpbTOCpJ2nbp4ykj6WLd+TyG/Zby+iyMqhuO6PJgKqyV1E6ywBrMj504gVCsgUW9NYrN/9ZxvCtZEk/tn3OE4zpzAJaPg7JQFeBt5gdqY35ahqjj/T+kC90pp9P9a237wb1dB9ajSYHHeXD5WZb9lWJdMfnnPO1cc9zdrsSRgwYMOoJxkcumErFnmMWgwaWjkq1bGOqyYj9e7HsCAZOCZITjwXt7ZtZqhAsonc8QB1GSEKY3YvWWiwmUF4rNNprgjlZnPqWVBmusNlk6HNtvNsvGYPvQ+/FDq9D4YAyjIHbYNM8I4VQEZonysGqtQ8/WmH8BAWwTzsRkWA6IESZVInlmRRTbIPPZEU3/HFafK4OZGguYWyabeeuAhdTkL548r2Nw5THBsCNgMBQG0sLesjp8WAm+gaV81Fp+ZRp6j/BUxx21jPV2W3h/S+sBHgv7DYbF1gvYDgIF4z3SEktifs24FejEVIcJ2HYclPYwlDpiSQ31epFyFAKZeVU2m5Xsxl/c31w+S5CMFAVQMJiUeC/S12M50LaC69Ax6HGb2gPDwOAoWM/y+5X7uMbk7tuPH5dIxLwvkG4SbJuWgIjl0EJQgAtsNnLa44QI1gwT/qocBVJ9+REMDRQmvzpEZXq7vbtAP60lAhrETUXFUzEDvfFYxgMFZ8k6ie1oOKreADlKaR7 iFQgj3+F fn0nmMYfRe6kx+SdjieiOiQ07oAH8XpmoaZVxS2hgpG3z6WqHFts/tASWZs4ySUq2xmrCW8dlJy0FWiwwNiHme936mIqEEO+afoQO4HZnCAf1eRXpR33VVmZNu9EzdjF0GpsEigTfBxOY/Dqhy0qL7R32KpfPE6dfJGK+7eJQn6/iKooFf5zvJRPPQLTgfsGlKxN2AzrNAEBSVa3YMSuPOAFtee6z/YRIvb7ndzaWvkHrp4eSCfrMcNj1uYn6j0KfEPKOMG9/lA6NzwuzUjRXcrjGETbM8J+q6sLrvj4gvz0EnDTYFn6bdhEu/GPIt3Bvfu5aBIVFIqj2jxon+it2FlaNZ6hDl+Z/iUPjAJ7+rfhvSe8sFb/0xvCMTSZECo+SEZdiMG6ChpymyEumvy2uXLraLeKxw9JIaLMsMEuJRREcyiYHVYlJ2Qsrmgoq9GOOGv6B X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Jan 14, 2025 at 6:18=E2=80=AFPM Alexei Starovoitov wrote: > > From: Alexei Starovoitov > > Similar to local_lock_irqsave() introduce local_trylock_irqsave(). > This is inspired by 'struct local_tryirq_lock' in: > https://lore.kernel.org/all/20241112-slub-percpu-caches-v1-5-ddc0bdc27e05= @suse.cz/ > > Use spin_trylock in PREEMPT_RT when not in hard IRQ and not in NMI > and fail instantly otherwise, since spin_trylock is not safe from IRQ > due to PI issues. > > In !PREEMPT_RT use simple active flag to prevent IRQs or NMIs > reentering locked region. > > Note there is no need to use local_inc for active flag. > If IRQ handler grabs the same local_lock after READ_ONCE(lock->active) > already completed it has to unlock it before returning. > Similar with NMI handler. So there is a strict nesting of scopes. > It's a per cpu lock. Multiple cpus do not access it in parallel. > > Signed-off-by: Alexei Starovoitov > --- > include/linux/local_lock.h | 9 ++++ > include/linux/local_lock_internal.h | 76 ++++++++++++++++++++++++++--- > 2 files changed, 78 insertions(+), 7 deletions(-) > > diff --git a/include/linux/local_lock.h b/include/linux/local_lock.h > index 091dc0b6bdfb..84ee560c4f51 100644 > --- a/include/linux/local_lock.h > +++ b/include/linux/local_lock.h > @@ -30,6 +30,15 @@ > #define local_lock_irqsave(lock, flags) \ > __local_lock_irqsave(lock, flags) > > +/** > + * local_trylock_irqsave - Try to acquire a per CPU local lock, save and= disable > + * interrupts. Always fails in RT when in_hardirq= or NMI. > + * @lock: The lock variable > + * @flags: Storage for interrupt flags > + */ > +#define local_trylock_irqsave(lock, flags) \ > + __local_trylock_irqsave(lock, flags) > + > /** > * local_unlock - Release a per CPU local lock > * @lock: The lock variable > diff --git a/include/linux/local_lock_internal.h b/include/linux/local_lo= ck_internal.h > index 8dd71fbbb6d2..93672127c73d 100644 > --- a/include/linux/local_lock_internal.h > +++ b/include/linux/local_lock_internal.h > @@ -9,6 +9,7 @@ > #ifndef CONFIG_PREEMPT_RT > > typedef struct { > + int active; > #ifdef CONFIG_DEBUG_LOCK_ALLOC > struct lockdep_map dep_map; > struct task_struct *owner; > @@ -22,7 +23,7 @@ typedef struct { > .wait_type_inner =3D LD_WAIT_CONFIG, \ > .lock_type =3D LD_LOCK_PERCPU, \ > }, \ > - .owner =3D NULL, > + .owner =3D NULL, .active =3D 0 Sebastian, could you please review/ack this patch ? I looked through all current users of local_lock and the extra active flag will be in the noise in all cases. So I don't see any runtime/memory concerns while extra lockdep_assert to catch reentrance issues in RT and !RT will certainly help long term.