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 DCF9DC36018 for ; Wed, 2 Apr 2025 21:41:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1C5DE280004; Wed, 2 Apr 2025 17:41:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 172E1280001; Wed, 2 Apr 2025 17:41:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F2EDD280004; Wed, 2 Apr 2025 17:41:00 -0400 (EDT) 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 D61F9280001 for ; Wed, 2 Apr 2025 17:41:00 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 7725F1CB743 for ; Wed, 2 Apr 2025 21:41:01 +0000 (UTC) X-FDA: 83290424322.20.CD9932C Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) by imf25.hostedemail.com (Postfix) with ESMTP id 8B32CA0003 for ; Wed, 2 Apr 2025 21:40:59 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="jg4XiJ/v"; spf=pass (imf25.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.128.47 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=1743630059; 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=rrWOLaML/b83w97VJppoWPqmsyehVsKuYGtUNHZ100g=; b=lcIc0C5w1jlp0+VjvKkEK+12A4o1p2zYWAavHnLiP0CVXKo/sL9LaMnd3Aj9W3vU29iHu6 sSaDRmQP4hB82KIbtFvBAW9JZWeNmniynHXGVcpUHb9soG2xwt8nuhJr4upu7L8Uj7yJMJ ckUqn7USXZ0Hxnq8SRqU1aY8093HkMQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743630059; a=rsa-sha256; cv=none; b=8MMZrnZqIZz/8SHWCRn+d0dk6SETaFUW/eIzijLEhozK1ymcWV0MhZTC6tcgpxx5+6nF1H tnvAgyG2w/6oOiSbSl+C1A73nrsN4i/NBSWsvkzKp8SJatwRzRWhy9xLOIut3wz7AEQ+Lj 2NWx7WJ+fBcVHnjL8ULSVdU1c+xV7Gg= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="jg4XiJ/v"; spf=pass (imf25.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.128.47 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-43cebe06e9eso1161095e9.3 for ; Wed, 02 Apr 2025 14:40:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743630058; x=1744234858; 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=rrWOLaML/b83w97VJppoWPqmsyehVsKuYGtUNHZ100g=; b=jg4XiJ/v6AufhTULHPfvjZk4DKhme5WcdikmsaUKIi7MUF/uDyEwTBB+aIJ5DeQBh9 95RrqsPmLjHDsSDL2skUO+ZsQVVJR5hWUoPrLz+tv1hOXHcTML5ObPlJDzAqWtfbaXNN xfb9Nq84Xj4VllKiCwiia83+0hlyFvpQKG/1SWvQ3ut6lTGeiDx1yiouTbNPz8QsCcXI 5RRKScA4Hp9uHjKnfOKdqCHvSjewrnFIbED98BEpVHZvNho3l4J4LLKmYbIMoUO9JvwG O7Ibm6+LEZ0klwPzlDO5IGUCQLA1Y9ZXFYGMCW3f1jzr7ryfu/3mtkU1RW+I7ePdiVtq mGWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743630058; x=1744234858; 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=rrWOLaML/b83w97VJppoWPqmsyehVsKuYGtUNHZ100g=; b=AtC/0zOfjWSAW5dY+A7wOKns93SAQXMSUQtYEwaR6PxuQ+tLQX4AAT6hZilpX6JSI5 FzopwEiHmwafelMoHpLTkrVpnobNV64HJiGndyGIWnL49Ly+bUdCmpVogNmbFj/XPTr3 P2GPghKZs/wghAVRlf9OuJFc4b8Glcm/KKUflTy16IRFn5eBHzhNJXi+bucCDYgqjKYR 4gcItax1ab+NvupfjZFSafcaxvG3UyFSL8X+7iTGpSXi2QI53G9QX0kz/R99XJqJPxoO Cac7zBjniafNosrF8M/rWyaf600v/9DKgr+vQMkQS2rzFpEaAKuRXms30wGMXwUQPeWj 49kw== X-Forwarded-Encrypted: i=1; AJvYcCVkx6aRjSdw0OlNuBax5F91QLAdz0T6sAcOX9jF5GZFu4jqFprr6DqqhYkQhi5SecRBZIC5vlrlUw==@kvack.org X-Gm-Message-State: AOJu0YzIEdEept5UDgwbIXdxs7vB3duahLJ0c8/fJYj4u8WqV6bziM5Q Yi4rtMXSw9zXEXNIYD9YiXi9cntaEGcJJ+FoJww+XZKxDNGg9f/XonXUzbcefKBOEdjiXb8Xm2U yqBct/iiVoglq0y0dRjUT1QzcuvQ= X-Gm-Gg: ASbGncuq/d6M/gAKFA/esZgx0R5pmsClpwrZA2QFQEML4W5baYrfyCzeP8SfEnrmN+b u+QLYoE5naZQ7TEPg3WyCyNebwRKx9GtRA2EjRX6DsxUewLz4frSgvBKvI07Oa3KFoSdritP4sj Z1l2GeYPa7L13f9/Ugr66ZrwE4ZZayyyZ+asGa3vB/1g== X-Google-Smtp-Source: AGHT+IGLrFnL5gA0ju1EqpbuuknG7HTGLWI5EOuD+T3KVXz9uu/m3gLfat2JhyGRlukZnEkTx2qsIvmDaWgjmgvvz24= X-Received: by 2002:a05:600c:1d16:b0:43c:f513:9591 with SMTP id 5b1f17b1804b1-43ec13fc2d4mr2591885e9.14.1743630057985; Wed, 02 Apr 2025 14:40:57 -0700 (PDT) MIME-Version: 1.0 References: <20250401205245.70838-1-alexei.starovoitov@gmail.com> In-Reply-To: From: Alexei Starovoitov Date: Wed, 2 Apr 2025 14:40:46 -0700 X-Gm-Features: AQ5f1JpPI0en9HyxhZYVLh2AoPDXtKe0u1fBU4PxVcauG58LjnEl74wDeNoCNSY Message-ID: Subject: Re: [PATCH v2] locking/local_lock, mm: Replace localtry_ helpers with local_trylock_t type To: Shakeel Butt Cc: Linus Torvalds , bpf , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Andrew Morton , Peter Zijlstra , Vlastimil Babka , Sebastian Sewior , Steven Rostedt , Michal Hocko , linux-mm , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 8B32CA0003 X-Stat-Signature: 7uryo3dequk76n9b3rrwd5tozipmen3q X-HE-Tag: 1743630059-225830 X-HE-Meta: U2FsdGVkX18wNtzK80zFjic+N8FDr2lTH/Zi9OUwNS8o/D0rsVem3xZEPWbye85HWtqCYhwIL5HpieP9w8XBoQrdFkuJIUh2WFsv1HtB/fQszmx1TkRBBJ8ufx9v8yx+3tqKjk1QVJxpOqmFAYSMJWhTsw32ax63UYTmgemQfRhns/v4R5kaoLgP4YqAPrSk62bCDcv8RKnyrLTss/Yc6rZLopJE/pUWDLCSgHMjbtT43KnjW5+CgCMJJezM4v4lCNHhG58QVO5sFN2pEWHMBtlNQInRJLU/mcPIgaN8fA+CGhjIc9meZsUinYvDuEItK3XvK2kpVb4LDiIMDChiRD8OmWzyxWOTsmymbKPzveD+yJVVOPNDyVOxMSNPFK9rNda+UXXUYC583nIFTJYue5a3WKCnnGfhbYF5y1rU4czSxj5eXVlKD+UqXVGFylXDv7nMSp0dR2dnkvpdVlDYEYVLS99iEUd9V1XbZr1p5DGbFsW+dKhkKyipZeNvLvv2ZfPhnotOc11Qc38zSYEyubx0rASPNn6c+phWvKLanioqp6mZc7HFXDCjBgnO7bPVgZh1kcWJ8B/9xlQk8N06uLMwM0Iucb/aXAcTRvCT4SnJJnQ0g/exOjZu3BVSPyum7daQvUhXXELESdqiS7PsYo+iJVPJKvKgoXcmHyS19JTjfz0n6cb78V3pFGLmcMaiDP/tG/QeiSWG7V7uXLY+RQIv+SrrXtW3gvE7vGv9f8yXo2M1UhlyvGMOerXNsvhJ0GTMJLWccXYV6D+u6Vlr2n3pkI155DeetNZmKtH5twFys4CQyLT39V1iNsDJqy1sRtcMx890W1kjC1p5zj8nMIqnxeCDacogAwIAowiy9mOVudrmo3dYmQ9bI+ANTx0CVA5s07c/EfpB3iItOfhrcZbBjNBUFweSJqndB6sUjAGLCtnFg4dkrEGzHU/7ik0pslEOhb4/+6mY/nUK+6w pzvsndGs mbehD/c001hbeN1FF7dTimbsdXzStZYBg0Wd58e0fnWIFabXEjeDiP5U2+pMSG/Ef78cSAjJUIZTS3agqaGq/mx5NdUVxEJYyjnUSby0Zk9whq4DHQ4RGkMnwzRbGvG1qeJST+KTctZqhL74mSVWZ7OjPSNt6qRpq2V1vCXoMI6l1lT9otdNJ8gJmWHAl7pyalG69oTR5tuVsMyqDX9lFgdWBHDOg93RQvlRI+i84tK0HBrcGhYzyrWi45eyt6iOYHcl5xZsyPH9GmHUXzI2wuKaL9iaoWV/6uskbqMufc3uuKdrICE8Ei5wu1pB3hCT4hDjsC5zkcLipnkx7Qtwqw+lrA79UnZ+qe/K64NcgYEZ+X8UJ4JiieEo18f758iEX8MZT/6rRwm3F6hvzl30yYiQlRX8P5RdeDMeQFvJjyOTUYa1xYiC2otdJ9qGZ3S9biUI2+txpDFsWkL4= 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 Wed, Apr 2, 2025 at 1:56=E2=80=AFPM Shakeel Butt wrote: > > On Tue, Apr 01, 2025 at 01:52:45PM -0700, Alexei Starovoitov wrote: > > From: Alexei Starovoitov > > > > Partially revert commit 0aaddfb06882 ("locking/local_lock: Introduce lo= caltry_lock_t"). > > Remove localtry_*() helpers, since localtry_lock() name might > > be misinterpreted as "try lock". > > > > Introduce local_trylock[_irqsave]() helpers that only work > > with newly introduced local_trylock_t type. > > Note that attempt to use local_trylock[_irqsave]() with local_lock_t > > will cause compilation failure. > > > > Usage and behavior in !PREEMPT_RT: > > > > local_lock_t lock; // sizeof(lock) =3D=3D 0 > > local_lock(&lock); // preempt disable > > local_lock_irqsave(&lock, ...); // irq save > > if (local_trylock_irqsave(&lock, ...)) // compilation error > > > > local_trylock_t lock; // sizeof(lock) =3D=3D 4 > > Is there a reason for this 'acquired' to be int? Can it be uint8_t? No > need to change anything here but I plan to change it later to compact as > much as possible within one (or two) cachline for memcg stocks. I don't see any issue. I can make it u8 right away. > > local_lock(&lock); // preempt disable, acquired =3D= 1 > > local_lock_irqsave(&lock, ...); // irq save, acquired =3D 1 > > if (local_trylock(&lock)) // if (!acquired) preempt disabl= e > > if (local_trylock_irqsave(&lock, ...)) // if (!acquired) irq save > > For above two ", acquired =3D 1" as well. I felt it would be too verbose and not accurate anyway, since irq save will be done before the check. It's a pseudo code. But sure, I can add. > > > > > The existing local_lock_*() macros can be used either with > > local_lock_t or local_trylock_t. > > With local_trylock_t they set acquired =3D 1 while local_unlock_*() cle= ars it. > > > > In !PREEMPT_RT local_lock_irqsave(local_lock_t *) disables interrupts > > to protect critical section, but it doesn't prevent NMI, so the fully > > reentrant code cannot use local_lock_irqsave(local_lock_t *) for > > exclusive access. > > > > The local_lock_irqsave(local_trylock_t *) helper disables interrupts > > and sets acquired=3D1, so local_trylock_irqsave(local_trylock_t *) from > > NMI attempting to acquire the same lock will return false. > > > > In PREEMPT_RT local_lock_irqsave() maps to preemptible spin_lock(). > > Map local_trylock_irqsave() to preemptible spin_trylock(). > > When in hard IRQ or NMI return false right away, since > > spin_trylock() is not safe due to explicit locking in the underneath > > rt_spin_trylock() implementation. Removing this explicit locking and > > attempting only "trylock" is undesired due to PI implications. > > > > The local_trylock() without _irqsave can be used to avoid the cost of > > disabling/enabling interrupts by only disabling preemption, so > > local_trylock() in an interrupt attempting to acquire the same > > lock will return false. > > > > Note there is no need to use local_inc for acquired variable, > > since it's a percpu variable with strict nesting scopes. > > > > Acked-by: Vlastimil Babka > > Signed-off-by: Alexei Starovoitov > > Reviewed-by: Shakeel Butt Thanks!