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 02225D68BF0 for ; Sat, 16 Nov 2024 21:41:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 616E16B00B8; Sat, 16 Nov 2024 16:41:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5C5C46B00BA; Sat, 16 Nov 2024 16:41:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 465FC6B00BB; Sat, 16 Nov 2024 16:41:57 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 1DF236B00B8 for ; Sat, 16 Nov 2024 16:41:57 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 90E5EA0104 for ; Sat, 16 Nov 2024 21:41:56 +0000 (UTC) X-FDA: 82793279646.22.A5FB623 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by imf11.hostedemail.com (Postfix) with ESMTP id 66CC340002 for ; Sat, 16 Nov 2024 21:40:56 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=AZCYL1pL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf11.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731793250; a=rsa-sha256; cv=none; b=Oh7NadJ2Y/+3pozn7SJXwR9m0n89XMCH62YV/La/IF4ZICDmrEaXWcSKBn3wncCUDbTUeT iBgv8HIOOWuicJlfFh5G8FsP8RuzkV0xTWz8/lKtXikRbiEqVYqMTpy26AlYTw9olRj5p+ PH5IvFXONm443Yb+bkXo31O8BM0fO10= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=AZCYL1pL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf11.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731793250; 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=PAM+JMcevy7dk6/RSgQT/r9T8/npnpybDTB2TzL73lc=; b=7QI5MSvxAOV2VohoX7MIDfl7KBWRL40XQ72quXxTFX50aAMk8xozjwhOkpPo4TX7oizvSl mEOgOaHRkeQc/5032Zh8MeKO4KIYsKUyL4m9g8+Tn05gEC6kSf96GYJINe+7kuw5uAYFqF 1kMT1Co/8ltZmUfmt73kWY9xWwbY2Aw= Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4319399a411so26559335e9.2 for ; Sat, 16 Nov 2024 13:41:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731793313; x=1732398113; 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=PAM+JMcevy7dk6/RSgQT/r9T8/npnpybDTB2TzL73lc=; b=AZCYL1pLg9y7Z1AGhnCtcuSVxg4OEAr7uls6aoZVSxxX5IB5/0mr7a9/lUA5KCinG+ WD6Xj4Jk5PHW+4IsDYAM8cQfyqiH9Iegg5qn7Np15+oqIRkXkwYh8hoM3hDJhXIsNKx1 ne3P3X5MIG+jnIV1rdKzUBmVpNXz9G27GxoFFPEOLv3mnMB7xNqSrfhZ1mK0ylqmR/rB zvrPbYuNdEbasv6GzAQFdTlb/A6krLqMPiCo57v/zAqeVelz0xtiX0h7EkTR/M+Cp8qB 0A59E7Abu8MLKS2pa6WLoETiuuPTOaFFaptLXpOlmD1FL2qvchZoCXAknCEMltrViKUX 4OZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731793313; x=1732398113; 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=PAM+JMcevy7dk6/RSgQT/r9T8/npnpybDTB2TzL73lc=; b=RUgdhOXekDfUhFC5+LZwKtkFaUmzNeyOeAMxL47eADuGRAFhHpvQCc68V10+MCyzsH ceg7TtJwESdNwGnuMoBMHD5hiWQBeqBDoivFRoO5f6MvC80Tv66CitdjJfwbX43+KFuW zOECpzx8bIrsl5YIhcojv1mUj5hhcGzeJ4q4vMns5aGutw598/it11kFZ9zjZuhU4r1w pcFysSmlQ940uzdaSWWops8D5W1O7X5JsTKph78jXp3Kz4RZDVcU8BfmTbhsjUiCgkuS XP5f4FzwuAc1yY0pWwFuLLpspOtxxXRQDnEX5PKXunJqPFJhRI39QhXxYewzzqcedMjs W0xw== X-Forwarded-Encrypted: i=1; AJvYcCUfuO9k5x2g2PQzcDKCCz+pWSZ977fngStMzfSGlUOr6KBUUJnNUGU8NZpG22pbgL3EqTtYGbUNgQ==@kvack.org X-Gm-Message-State: AOJu0Yzq6IcykOQOHKFYzbfKAzoTygb9TAYa6yBknzfgiKNoRc8kvis4 A2aftvjWnhl7e/HTQnF0ds0JtXRionLLq6fJV/oo+ov9E2qSTI/k6behtD5aqSAQVd2lmO32Q6W QJ1V3+iCHBayOnhCeG/V7ytMyFVg= X-Google-Smtp-Source: AGHT+IGf6gvN4jEx9YE+20Lv/GedyixsQFvTvgnVK1Sa8wmWxB4twDEATHAbbcPt3p8ZgQ7C8Z7ymWZzsPrWh16AW54= X-Received: by 2002:a05:600c:4505:b0:431:1868:417f with SMTP id 5b1f17b1804b1-432df74be9amr71917705e9.17.1731793313022; Sat, 16 Nov 2024 13:41:53 -0800 (PST) MIME-Version: 1.0 References: <20241116014854.55141-1-alexei.starovoitov@gmail.com> <20241116194202.GR22801@noisy.programming.kicks-ass.net> In-Reply-To: From: Alexei Starovoitov Date: Sat, 16 Nov 2024 13:41:41 -0800 Message-ID: Subject: Re: [PATCH bpf-next 1/2] mm, bpf: Introduce __GFP_TRYLOCK for opportunistic page allocation To: Peter Zijlstra Cc: bpf , Andrii Nakryiko , Kumar Kartikeya Dwivedi , Andrew Morton , Vlastimil Babka , Hou Tao , Johannes Weiner , shakeel.butt@linux.dev, Michal Hocko , Tejun Heo , linux-mm , Kernel Team Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 66CC340002 X-Rspamd-Server: rspam11 X-Stat-Signature: cano6mqdhstonxo7fcy4qeaa1hd76b6z X-HE-Tag: 1731793256-932578 X-HE-Meta: U2FsdGVkX1+vmvpuge0zm2RsTxOlE9j0GvAL1HO/QeyTx6JFgM9ZJ4o8DNO50pfMz7TDIFXqe/Eym0pg+47/2LGxYmT6Mg2K3m29cKRFwut27nnlFSzOdmi+aR5NGikDoE3zJ0C6L4wvfZ9RbLPK1G+d6qQFO07m5bTHJ4Avd58BkSmv27eSdSiOC6Zb7HnbcBOV7VbvSs6en5ZQWe7rO9TiS609FtfR5LLVwmDFP3yLY/Ej1EVILOElWUBO5kPgv66cFAcxY5soto7NpTXyqZVAerScNnJNwbpQv7oB4rQGlvghDEVkg+Vtqmwf46GrpSHBO5RP/MCkA2TRl6XugTJo9KQa1X4H9oHJlvSYaQOACmrusmst4O2uiUKhwtd1CpezrphsykkhVAqZ5xrdsW0YxNTGCZrIB43IIT92Ka044Hv7mDykRzsVDB53vkSaawShOTke2ijAe0BoaGHG5gYPcvm0rEIruTeZmef208Mzq10sVNgg36ChWrJwmUBEy9LX6YLHL/xIXjpHbc1xqN1CCs5lKBN6iz0mQDcT/NWqZE561KK2fDWv8VlDJjoayrZMzGbCpfcEV8aQFL8qh8slR7oA8S1avMw8FZnFH43ui4TNbX0sNYSEfNvzSHbZAFlSMZgXwklsFa9wDcjwTOtwRl+//1hN8toLdDpnj1U+2UL60EygewPJokmlLtvIcjbbGPRYTTD1SjsH8HaahMvIJxxvbhctSlvp0GXv6IH84vBkV4wowmdCELR1c71/bOToqJI2cV5sY8CSQS7NOVur+iicl0eKXRAl4ObB5QvDfpsH0Jn6Ri97HddqPhp2UjrpBm4X8fT0lEzW/ss+1GUHLYu65dV9wEESYuM/qBI4idwfFJ2PnCNA/gjZYkI376VUc936Kjb321lciOmv1RbItyAvpzaNGTpbNFeeMui50aqLV3jvEzZlTmtWOZglUzAu547W+7ffJ67td0m ysuA/XnU l4/RMTLzY68pyNsclrzvcGRt/uf0xXY0bx4R/qZkmx5l/7MVkb+b1o5OHvNvWZJMplBHl+Amt2j+6aWwVZLi/Pez4fSzlO+Jxpfpb/3e1WWxt+1BM5C+jO9YumaUG8WN2AhHG7kKeJlLJkPPnQlyL5a58OFJxKdRwDKgLdZZDt4xby+dlmPReb2vOGbrTICxU2Hn1M+nb4UvOQ6NTp1ef+I0W7ny4XAo4/pp2OiJNT1sjChTsnLsNFaMQ3g0kT6YZ5LwyFwPRTmhQArQA73Tt5+m3jD7Vxq0lFBh4Ts9IcnmdT8B1STyWb2awij11T1h6m7xMW5Tu8k+Y5/ED1INKML7KZNGx/GLM9DM27OPkWji/mQwU9ujbdHMDlHyY8MQuQTlFNQ8ut49ojpS9Z6PXq2haBsu+jKYEqq4DReiZUktbdzfx6wXtsVgQgIUh8AkLQywPWIrMkdJfHcHpOysS0neHFJMiVxWH3d7j 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 Sat, Nov 16, 2024 at 1:34=E2=80=AFPM Alexei Starovoitov wrote: > > On Sat, Nov 16, 2024 at 1:13=E2=80=AFPM Alexei Starovoitov > wrote: > > > > On Sat, Nov 16, 2024 at 11:42=E2=80=AFAM Peter Zijlstra wrote: > > > > > > On Fri, Nov 15, 2024 at 05:48:53PM -0800, Alexei Starovoitov wrote: > > > > +static inline struct page *try_alloc_page_noprof(int nid) > > > > +{ > > > > + /* If spin_locks are not held and interrupts are enabled, use= normal path. */ > > > > + if (preemptible()) > > > > + return alloc_pages_node_noprof(nid, GFP_NOWAIT | __GF= P_ZERO, 0); > > > > > > This isn't right for PREEMPT_RT, spinlock_t will be preemptible, but = you > > > very much do not want regular allocation calls while inside the > > > allocator itself for example. > > > > I'm aware that spinlocks are preemptible in RT. > > Here is my understanding of why the above is correct... > > - preemptible() means that IRQs are not disabled and preempt_count =3D= =3D 0. > > > > - All page alloc operations are protected either by > > pcp_spin_trylock() or by spin_lock_irqsave(&zone->lock, flags) > > or both together. > > > > - In non-RT spin_lock_irqsave disables IRQs, so preemptible() > > check guarantees that we're not holding zone->lock. > > The page alloc logic can hold pcp lock when try_alloc_page() is called, > > but it's always using pcp_trylock, so it's still ok to call it > > with GFP_NOWAIT. pcp trylock will fail and zone->lock will proceed > > to acquire zone->lock. > > > > - In RT spin_lock_irqsave doesn't disable IRQs despite its name. > > It calls rt_spin_lock() which calls rcu_read_lock() > > which increments preempt_count. > > The maze of ifdef-s beat me :( > It doesn't increment in PREEMPT_RCU. > Need an additional check then. hmm. Like: if (preemptible() && !rcu_preempt_depth()) return alloc_pages_node_noprof(nid, GFP_NOWAIT | __GFP_ZERO, 0); Not pretty, but should do. wdyt?