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 88588D68BFB for ; Sun, 17 Nov 2024 10:50:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D74716B009E; Sun, 17 Nov 2024 05:50:17 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D24EB6B00C3; Sun, 17 Nov 2024 05:50:17 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BEB7D6B00C4; Sun, 17 Nov 2024 05:50:17 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 94BE16B009E for ; Sun, 17 Nov 2024 05:50:17 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 09498120113 for ; Sun, 17 Nov 2024 10:50:17 +0000 (UTC) X-FDA: 82795265196.07.52CB29B Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) by imf18.hostedemail.com (Postfix) with ESMTP id 79A241C0003 for ; Sun, 17 Nov 2024 10:49:53 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=I5XhPSiD; spf=none (imf18.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731840436; 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=pshiIs3frOWk0a9YBcwoAUViLhisC1xEmCnwHIj23MA=; b=Ulp5OQIUI0IzPiUui+NTgrtcqfSOzdsGH9Sn1TM89VZuSZyIMnF01F5sD0ewu8QVQFIvbU j/UL0C30caHHkLQDqiaIO5WHf1i4ALQVilKeQwZcAu+HiADnAuCBh+k6zW6E3pXm0YZ96x Lu58pJGPuqrsZdcL7dJZ1YcVIgAZ9j8= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=I5XhPSiD; spf=none (imf18.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731840436; a=rsa-sha256; cv=none; b=RN00WwLsU9WIL1q4syYTExmq6GiCqL3zLF3AQ42yN8bpOPTYvfqqq8YJ4p6gtyidZ5T9ba VPj+asqJZuqqDQ9Ai+D7jX4u24Ohf4ZI+s38DGYn5t2qjMtO1xcdAyqrDMWQj4hOkbPslP EkgSRvuKkt8fXmqzX+0Dce/GoKc6ht8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=pshiIs3frOWk0a9YBcwoAUViLhisC1xEmCnwHIj23MA=; b=I5XhPSiDYaBULLTJ4FiFE0Cves a9n2Sg0Ig6GTtSO6ABAGVePvOdGx9abwZ9dAl5xACUslE41B285l1G4Vtjy6MVGpAEe5jhHid2tt6 HmT0i1A1C4C0bUqtghrY+lyQ4jL4ROjHFW1/UoNvMJhhVj185WyYwbrSDmhEU2sv+4fScOjrXx8Gx nu0ugpUr5XUEHbf0EN1iGvPb4JmENI3B9gRj22/dqDL3cqAWa+W62muw0oOigh1jm72GU64uW/THH BWSVA0ekDlMUmDInqcW1TriJ11Lhnyf+Up7kl1d7kdKugMG8989eg2knMCvKbhpd7ijQCxUuUPKiZ KDB5sxsQ==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by desiato.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux)) id 1tCcr0-000000007T5-3cpd; Sun, 17 Nov 2024 10:50:07 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000) id 04BC23006B7; Sun, 17 Nov 2024 11:50:06 +0100 (CET) Date: Sun, 17 Nov 2024 11:50:05 +0100 From: Peter Zijlstra To: Alexei Starovoitov 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 Subject: Re: [PATCH bpf-next 1/2] mm, bpf: Introduce __GFP_TRYLOCK for opportunistic page allocation Message-ID: <20241117105005.GA27667@noisy.programming.kicks-ass.net> References: <20241116014854.55141-1-alexei.starovoitov@gmail.com> <20241116194202.GR22801@noisy.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 79A241C0003 X-Stat-Signature: gzesferofomfosce733ofh4r3m9upefa X-Rspam-User: X-HE-Tag: 1731840593-125235 X-HE-Meta: U2FsdGVkX1/Y1L23M4pctP3uQgVs+qSAhGLaCF3HQ/vjTjgnzmGG8hKFEA9QDnSTl/QaFavRK2++Q4Nkwcjng6U6tFkW3FlABMqxNitP721nM3aHPXCRIyWKqPpc3pPKJaeryqKgv5gUV0l1Ny1V/LkKG5ClrdIqL12dakHN8K8HOm0XyMLBZggIPEGIfIPl2kBVqcvbdgvSrj7yslLEBoVG0K3du2Z12IY7lz6ga6pu637fiX5ZZR3yAcBxLHC999SECvC/xyMxc23l3GKGHxz3YGAn5/Q8jZb8QvIDVXcgAdspuocHxZVJc1xI/bGNbTaRmpM7jQqOjNR42HAKK5BEt84vE76UsX0zIAa1Aw+h3ZAa/0p/oheuQ2EDYwmy6kzu5DZEuNPO78lbzNMIyR2eA9SzqPss/RBVDr+USrR4oZ5LKdXnhkMgU8dA0fTe8w02axxq3wUKnWbVU1EPyt9cQWzobzksuW1rtYQN4bL3bOvDSp9Az2DUxgcAtliZ2c8bi4Y4O0y/EeNz7MnbImGSkmNJG+ZsvGp1IB8yqqpA9k9n1D7H84zDVSd8xEEAG3vw+8+vDkZZff5NnPEwhergmOnx+4KaXAFmp1JspMnndkYdU17ut4KY7R3f7B2p1NBKNjduyyAMZcVQU9MiRCV61J/d5WLEUbzlmQy0Rg+0QdBh6N6jCyIBuLggyd9VXQi7s3176pZjdFEKWQJY+8R6MuaPzkgtMVowAvc+p2WiWBiypZOlKLHn912ugixg1iBn5tPdYShQcgETkJug28iX3JoTIbNbv2recudEeiZu12CF82eJb8hK72E5fEaBIoI94/SkBsiv8A3Y1y0bdEiGe2EBF/cE0g8+t0kOEcOaA14AXP1FNv+GpMoOAgZjgjjeP61sJraiAu68hPYDlA8kiOM5+vyIjNxUrfBYjhbiRD43r10N64mF/v2avY/kHNNbZ4MDL5PQvssNCYi ZoSm0RXf oHnZBh3Rlvgvrwnm8Utofyq25x8sc9LPbAIPsfcfJ/rdwOELo0bm6bq5ZPmT1+O+A+lu2tsb20hpUhwcEU6PS9hLWZNFNsb+A12p2h2hW/BtwyTdoeDgfYWRUEe9wK5nS8r2cCVkKf22wbVGdu+qP4Jgpv0t5TFlrL/QqPFMd+1lrRCX9IkNoqw4wpkb+MqY8kiO2tvKohq3rvVkxS1BToqRfCSxjaQOSYPmcR0L9r8PJKmeH5UZ322rW9QkIgRs0PEG/LQyaXD86svSOqdjbKhIpn08Q7xOcPUM3l5FF9FnetBQoj7dykCgYW1KHvg3U7mAGv1xHmEDl30xX/50Vvs692rXz99uZKMM8wI382VxEMdZMcxoaGdDeE6aAv6mJ4rGXURvz5h/kSsg= 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 01:13:20PM -0800, Alexei Starovoitov wrote: > On Sat, Nov 16, 2024 at 11:42 AM 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 | __GFP_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 == 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. It does not on PREEMPT_RCU, which is mandatory for PREEMPT_RT.