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 48821C0218A for ; Thu, 30 Jan 2025 20:51:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A89E72802A5; Thu, 30 Jan 2025 15:51:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A117C2802A4; Thu, 30 Jan 2025 15:51:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 81A1E2802A5; Thu, 30 Jan 2025 15:51:36 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 59B002802A4 for ; Thu, 30 Jan 2025 15:51:36 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id B9DB6140226 for ; Thu, 30 Jan 2025 20:51:35 +0000 (UTC) X-FDA: 83065314150.08.A835825 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by imf30.hostedemail.com (Postfix) with ESMTP id C7CDA8000C for ; Thu, 30 Jan 2025 20:51:33 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RKjl1iBu; spf=pass (imf30.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.128.41 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=1738270293; 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=IH/8TrCiRgxZ8RtDowE/KkPCrgCmcjbd0L4EmhGvgGM=; b=MZyg9LzzzwCcKwQYWBioAsfdnVw3yKKhDhOtEI0b4rUkJsOqjIMhRkCnAmT2Xkg12hdxXc wv1yAm9I1StitcOO38GioIXOsJEfFn1Vkf86kFSNOJYuyOv3ycwQTzE6aoo6kaZ8QLbBmT ktbBa0TQICWK0m/7lK5BglQQ8BaRKuo= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RKjl1iBu; spf=pass (imf30.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.128.41 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=1738270293; a=rsa-sha256; cv=none; b=Gw6PbBcyl9vY/IVdaczKUQhhwz4jBCjzLWzrwESTBdvL+b9jwnwV9JQQyvCgqWlT8F7MZo of7g3/b0tzc6d/RkooaqdfKVHYSLW80pBqgPc7TE8z0m33sXJU6OAFZhdgfqIFeWZDlkfx yGN5fexslyWOU+Vsw6gzwuzxzjAyfkI= Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-43675b1155bso14674165e9.2 for ; Thu, 30 Jan 2025 12:51:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738270292; x=1738875092; 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=IH/8TrCiRgxZ8RtDowE/KkPCrgCmcjbd0L4EmhGvgGM=; b=RKjl1iBui7UqiKXn+q3+y34sZex0OI0jYPIQGllO96n5DdI2v4VEjm6YAi3ho7/SK5 NngmRhZibVPD0iGnb8Q25qSUBA/v0EbS6XurpR+dKfJT5ACAFxWLcXCdTxVBMjNTEqti QTU9xmDof2nyuXhmqr3iOCt7JqlTtpOsIfh+0hatRw/JJ+i45zmotIYIR1zVfUAs5rTL B0LYBLWPru28roJvwjbqGxOqh7UNewreKKGmHG3IKDy4umuTiPtW/U0DUSd85sBgcB/k PPy+VJDJUmffoJfBz1/tn3QUX31Pkuxggb2kUJYNSk2v4J5iRhIrQbzUbpn0ZJ1R1mZz ZM4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738270292; x=1738875092; 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=IH/8TrCiRgxZ8RtDowE/KkPCrgCmcjbd0L4EmhGvgGM=; b=H9URdHIVwI1O98Cz1anZ61tPNCBzAoJ8GhYlczt54Uk5P06jzVBiEV0w7BFwyK+uFk wcFE4VqTmKkAdh+SvVUpWpD6ZOsUmhvwX3aTmfFKKa/7wyPd2/i0kVsQC1oW0FzTu+Cq IQVaKs5q7A9bYDqcU3NISWGoF7ojpNuMQ2cePvv++G+EESm69Zfbp8nVHIwA8Snn6PkK s5ow6fAJcPiroOeHTWBCIPEu1xIDBm4gV1RCJA8LCoKjjAyLzMUkHhYMh/7B76JqmYNu 8xNnzzG0HsZqZ4RVYPLaL8d2w7sjPdOaSLiD3f8dQqagYV43Ws1H7Con7cJ11fJUgqkI IoCw== X-Forwarded-Encrypted: i=1; AJvYcCU+eG1qyMslhGg5mLY/8AqxF/OQU4Trwsemom+qTcfx+gxuwMlB0j47keRrf4I0BcgyateQ2K+5qA==@kvack.org X-Gm-Message-State: AOJu0Yxf4zPWgvl942twXtCB9wbHdzWPYn8MaR4c6+pNQD759K4k6P5H 8pxzqd6Xz4Kl85UIv9PJ3u6EwUdhm6a5GysyeYMbViYPmCBsjQEe0VRT/PWx332O9c0FxQxICqc ENQgwVnp/x75wsdcylWEwtIo2PD4= X-Gm-Gg: ASbGncuxAFhagDHyXKpDgCpgF2Byzf3UttSIrGFe+BFRSCVeZp3dnKw/CDE020meS6W hHvUxI5QxzMwXzKu8Ex7MnOKSg912RUqIGPOb/5KcmJeLlp0jPHuPPOsei2fiwZMd/aQszAPe X-Google-Smtp-Source: AGHT+IEOlaqSZ26LiLus8bxkkm85sJ7AvNT2Z2/6QoPYkT/iOcJCC3z7flMxohiKT60ClGJYCOyBEWba2etDyE4Vw7o= X-Received: by 2002:a05:600c:1f10:b0:435:192:63fb with SMTP id 5b1f17b1804b1-438dc3ae816mr72407065e9.3.1738270292086; Thu, 30 Jan 2025 12:51:32 -0800 (PST) MIME-Version: 1.0 References: <20250124035655.78899-1-alexei.starovoitov@gmail.com> <20250124035655.78899-4-alexei.starovoitov@gmail.com> <20250128172137.bLPGqHth@linutronix.de> <20250129081726.vGHs_2kD@linutronix.de> In-Reply-To: <20250129081726.vGHs_2kD@linutronix.de> From: Alexei Starovoitov Date: Thu, 30 Jan 2025 12:51:21 -0800 X-Gm-Features: AWEUYZkhE-B06g2m7IyMZB5sMrPrZgb9Bh5RS-XTaq_UVfaMB4fRt5FnVh61r7w Message-ID: Subject: Re: [PATCH bpf-next v6 3/6] locking/local_lock: Introduce local_trylock_t and local_trylock_irqsave() To: Sebastian Andrzej Siewior Cc: Peter Zijlstra , bpf , Andrii Nakryiko , Kumar Kartikeya Dwivedi , Andrew Morton , Vlastimil Babka , 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: rspam07 X-Rspamd-Queue-Id: C7CDA8000C X-Stat-Signature: 97zaruphewgkodatrkw9szwozt1wkp5m X-Rspam-User: X-HE-Tag: 1738270293-855047 X-HE-Meta: U2FsdGVkX1+r+bQVJ0yl7+7OH9AXHiyfT7//KWv1OVF5kGjIm9WNhNj54oufVGcjBYBkGDMpNOBytA4yXHGH++kGArnpgnTkvcpYl6N24Sdi4f+VJzX4XjFu/+76xcVyZndbgeZZtZSy3clOrZ14NcjCBGXszmVMeliQ/1rVmAx1cublKl0E2fLUzKMBjzgVuddbOzfehkOQNxQC6tB1LaxbQA/T5FefwgJgO5qtZnwxMP8jOCBy1Cxx+iQpnkt3o2gdBcv7SSns9Xza0J+u8vDiWS2H2GJXfcRfwVNdYjujHquoK57sY0rTf3giHV5kIeBimRF95dXX82H8tZRARFEecOEVd8PDYaerlt0HkFIaj7SExIJwbk2Yo4MROnf849/4FkX+ONrkwEVle9qQfpq8X5Wvl+is+32HdvWcfbdOgkITFSKQAxO3ORjIbTB4u7A+8Un2+TTVa35VNfFYu4Pt/rlBk0g/+fqZ3lmVEJttEl6j8KLkCad4GIJs1PHnV3oUjmZgkZrstPOr3JQJ/q1JXJqJRbfD1ISVo/wJi8fdG9CoiWV16FTkxBelhmqVv+kU0thcjIDhkCVEhlxXHHQALR06OCfPGf2Oui6X+DMUDocHDHCn4Hh8+ism2JV2vhpaXEKXoJ5Yh7nvhclnvuhPkiOU9AKblsFHz0aBy/j9VaMdw1Sv1lkTthKNUt4gcLdxlVtqQ0FPo4RMlVC26PR/XAgkOZfdB9glXYeqQC7cjF2solgXnIxXCAjFKyKWBnheWrWDAaj5zPzskVPfvtOlwc+n//jFY+siDZSBPi9TnQ889oooqQMlKm5ktpZEHR8TUssl9ThD/fbKbuvxR8UUQB84/sFcGh96Divsn5P4jvGEHBKzI6kGy/jEVlEN8I3/TUGH3E4Nn1FfeZRFMLusuWvpxpQ3hXIgPuM/ccZKyJeSW0Kac7wQWh+r/rjpQPXl/rjqqaPVpcT45Gb t2HLYgQB 1az2JSMHIx6qn6XBqAwtMWuvXe2cheVQO1ERve2oIBjQ4O423vCC8yRHERXMgNBO4qoqmlbI/XAiSJzQA0coF/3J7fw4P5rW73hJMPTkZBhsP5lub/WdaCPwbKSVE/fE91myJr3ddErSab+OOTZIYv9VkZPxpsi5v/NHo5CxT2nDXlsltRxL9QQCVKapEZBVFY8SY1aC//9Zl3EeXRhwjFDc3u1Hb9ENGnQeGefxNOYLb6c3p/NfWLibOopBoLLmdVO/knKybRmGNPJUqFskEQ2qPfP6QYXYoh2rcTOlE93+QV6BATAEJhDtbaHy8oZzDbJi59GZk6R6a/37jGi6aOvjxeKaMFXSvIro10R5o8WpLClg63WgbyPpPLc4R/B8uJp3NJ6/JWPa5KQ4= X-Bogosity: Ham, tests=bogofilter, spamicity=0.030897, 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 Wed, Jan 29, 2025 at 12:17=E2=80=AFAM Sebastian Andrzej Siewior wrote: > > PeterZ, may I summon you. > > On 2025-01-28 10:50:33 [-0800], Alexei Starovoitov wrote: > > On Tue, Jan 28, 2025 at 9:21=E2=80=AFAM Sebastian Andrzej Siewior > > wrote: > > > > > > On 2025-01-23 19:56:52 [-0800], Alexei Starovoitov wrote: > > > > Usage: > > > > > > > > local_lock_t lock; // sizeof(lock) =3D=3D 0 in = !RT > > > > local_lock_irqsave(&lock, ...); // irqsave as before > > > > if (local_trylock_irqsave(&lock, ...)) // compilation error > > > > > > > > local_trylock_t lock; // sizeof(lock) =3D=3D 4 in = !RT > > > > local_lock_irqsave(&lock, ...); // irqsave and active =3D 1 > > > > if (local_trylock_irqsave(&lock, ...)) // if (!active) irqsave > > > > > > so I've been looking at this for a while and I don't like the part wh= ere > > > the type is hidden away. It is then casted back. So I tried something > > > with _Generics but then the existing guard implementation complained. > > > Then I asked myself why do we want to hide much of the implementation > > > and not make it obvious. > > > > Well, the idea of hiding extra field with _Generic is to avoid > > the churn: > > > > git grep -E 'local_.*lock_irq'|wc -l > > 42 > > This could be also hidden with a macro defining the general body and > having a place holder for "lock primitive". How would that look like? > > I think the api is clean enough and _Generic part is not exposed > > to users. > > Misuse or accidental usage is not possible either. > > See the point: > > if (local_trylock_irqsave(&lock, ...)) // compilation error > > > > So imo it's a better tradeoff. > > > > > is this anywhere near possible to accept? > > > > Other than churn it's fine. > > I can go with it if you insist, > > but casting and _Generic() I think is cleaner. > > Certainly a bit unusual pattern. > > Could you sleep on it? > > The cast there is somehow=E2=80=A6 We could have BUILD_BUG_ON() to ensure= a > stable the layout of the structs=E2=80=A6 However all this is not my call= . > > PeterZ, do you have any preferences or an outline what you would like to > see here? I still don't get the objection. This is a normal function polymorphism that is present in many languages. Consider spin_lock(). It's already vastly different in PREEMPT_RT vs not. This is polymorphism. The same function has different implementations depending on config and argument type. This patch makes local_lock_irqsave() polymorphic not only in PREEMPT_RT vs not, but also depending on local_lock_t vs localtry_lock_t argument type in !PREEMPT_RT. Anyway, if I don't hear back from Peter or you soon I'll just take your localtry_lock_t version of the patch with you being an author and your SOB (ok ?) and will make the next patch 4 to suffer all the code churn. We cannot afford to get stuck on something as trivial as this for days.