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 3D3D4C3600B for ; Mon, 31 Mar 2025 15:39:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 87E7628000C; Mon, 31 Mar 2025 11:39:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 82AEC280004; Mon, 31 Mar 2025 11:39:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6CF9E28000C; Mon, 31 Mar 2025 11:39:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 4B355280004 for ; Mon, 31 Mar 2025 11:39:46 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 29D83810A2 for ; Mon, 31 Mar 2025 10:53:00 +0000 (UTC) X-FDA: 83281533720.20.9AC58B9 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by imf03.hostedemail.com (Postfix) with ESMTP id 3AB2A2000D for ; Mon, 31 Mar 2025 10:52:57 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b="W/NjeOoa"; spf=pass (imf03.hostedemail.com: domain of mhocko@suse.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743418378; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=uLzxNg5j/t2QO8pYd3KuhubdixjbDcFsY5dnvsuInnI=; b=p2q2rdF3iIiIKY53lvm4Rp4QPa3gSiRM15/u1YMUpJH7RNLqtNfvYVEjuhqoQAlPofFqxB O9eoWQTigMl4idLAP0bwR8AD19qt6/lPmmCERPZHTkmcJiSV3OzdwLh76yzDPTLWd1T4DP L8I+lSqFhkwoD6AJKFJPeImzax2J2bU= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b="W/NjeOoa"; spf=pass (imf03.hostedemail.com: domain of mhocko@suse.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743418378; a=rsa-sha256; cv=none; b=gqHvm6nTxelWqp4pBGycshCcrZh8CGkhPzI7jFlv0RnnFB+sf/Jo0pGwFuBl6Bjg3QsEj0 nw7WgqKA9uCDkxdAlp4PAvdwic7kz0xBEBtxiBcxAGZFnCOOxzKHRj1gH3EzmnS1sOfRfM 0u/d8fhBNwZ6UQckK6mDKrz1zKQ2Cro= Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5eb5ecf3217so8048436a12.3 for ; Mon, 31 Mar 2025 03:52:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1743418377; x=1744023177; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=uLzxNg5j/t2QO8pYd3KuhubdixjbDcFsY5dnvsuInnI=; b=W/NjeOoatv29CDQYPpifbNBwOVn2iZzE5elXUfeUGz0PgstaE0CAuboE3RCqFM9kMP /Aab5VRa2S/oA6tdp8HyfxvDN81FD5PuUFdJjIRhPRAPBGXZ0g/AQzmzaIPpGYDuLgyc PQH5L2ib39owPuTBewzuO4KtbcI1vXSNWsnrQub1CRUyy3bnVtBEzHm363ODHDB7lutc WQbzRd/2xs8p8o62zKDWSTKH3jBKt6fOHoULA8P7E3I1PVd53ApwTNbWrg9yQAIorOJE TV3cWbcDusKea5gTsbQlBj/aDq/ljjSU6zmwIS4IJnV/+fvOnqrQy6KgVQ2u4qLn1QrR 7J3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743418377; x=1744023177; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=uLzxNg5j/t2QO8pYd3KuhubdixjbDcFsY5dnvsuInnI=; b=NcwZ04pytUa6ON+gtpOakv7Rb473eXVEdIFQdxxrDZd/2/i9eWQbthKsiumB6Fg7MX 2uw//mxAy8xAMGyU9JJqKb8MBdR98m8GacNY8B04l+4kBlS1Y6sDDlLJgziUvVTUIQhc TpQzuWf6Kp4o9VdktCs8d3e3z8rvH/2Wo896eKGKP1KJDLmi1L21VVwE6HXRwP7YS1Em eOyS6d88LQFciCemdCMDBbsXba9fMfAKw77ht1uytdyyLqDudJDEByKdLAde288Xljet ABd4vePB5iy57OVQBp37+20kEteJAuIGPg8pmlr7+jXqtJQ+DHDEwLAynTxJaCvZ1NlX Z/Eg== X-Forwarded-Encrypted: i=1; AJvYcCXv7GzVNQP67CIai6xsDZFNiRnPpS4vEl61vu9jyRQb9GBrNd14gzG8anKF7jxRVquqv2OSEXViQg==@kvack.org X-Gm-Message-State: AOJu0YzfIP5lwe2CZgZcCp4kyNAXHfAtzdIuDVRRXz7XUMwUwXNRUtaA uPvVBz9Lqg4GXUiKPeDfdQIpoNrNxvIgVACrFHTCj2InOmKTl8mpAQa/lpCRTsc= X-Gm-Gg: ASbGncuGHkyi8xFsj2VH6cLYCdVCRjLG+CTs2x8j6JtG4bm2ImzBANUBABAhCyNuwUW 9BRQ8S5ytqCu/rfVfelU3+KAdNtxM8LB0BunXjk96gJAU8JtvHoLB901fxLYULgaQ33BED9eDWU fOgM5hUWP06t9DgIZ8g52ZAcytNGwxDK6WBXrJdEAn/moHCLxQs6GoUZbd6dnsyw1zoumoLmILF aymSrRv6AjSpivt956wOdcab6YA71in9R4wcDd9uYA/ZuXEAYCUFQkpQpPi58Sn/VfRgA72H1vm DhnD2FF5rVfeZ/BkR8nqxoyaFke0uypwTnw= X-Google-Smtp-Source: AGHT+IEXRs3zxTgQlHAMazbr0bvhWUFwCFDuedD5ulDZkwXkLhjmf3hl/TEWnlk1pA0aBh0cVkLlIg== X-Received: by 2002:a05:6402:4310:b0:5e0:8c55:536 with SMTP id 4fb4d7f45d1cf-5edfcbd2529mr8073398a12.4.1743418376707; Mon, 31 Mar 2025 03:52:56 -0700 (PDT) Received: from localhost ([193.86.92.181]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-5edc16efb06sm5451617a12.37.2025.03.31.03.52.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Mar 2025 03:52:56 -0700 (PDT) Date: Mon, 31 Mar 2025 12:52:55 +0200 From: Michal Hocko To: Alexei Starovoitov Cc: Linus Torvalds , bpf@vger.kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@kernel.org, akpm@linux-foundation.org, peterz@infradead.org, vbabka@suse.cz, bigeasy@linutronix.de, rostedt@goodmis.org, shakeel.butt@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH mm] mm/page_alloc: Avoid second trylock of zone->lock Message-ID: References: <20250331002809.94758-1-alexei.starovoitov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250331002809.94758-1-alexei.starovoitov@gmail.com> X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 3AB2A2000D X-Stat-Signature: dsdit77h3qgmod8u4qbbcubight1k3iw X-HE-Tag: 1743418377-992066 X-HE-Meta: U2FsdGVkX19V5HmOb4HZSpc4MDy6yflPLTOGBqzdLAAU35dJqjD851mRbQmD1Uo5GlA6SEgn1/jJyxRwqJDUSH/NGLg4DJg1NUMmEE3FRDO9I3q5LNQ3khDSe6AwOveiQa/CUf5eDao4vARZeKtnubB3Z3HYzu5wM77QfKzmtJ44nYxZwQNcttDxxCsleA3QrM43TszhZcrIvsz9i6IzsUfXnjSUIHu1PW3Zv5FVkhHk9ZCFjb1aPLwuTg2Dplvbw2o7C8E629w7j1su0bv90d8jn7SYsa6iGkmZ7SbYEBE1+5BpP0ANfhMSuDKHVdOvfEUDyvG4uRtZi+Q3vMperrp/Y0SpZMg7/a0gKK40b6NnP/tmpsg3mL26iUn0sImzfyQQbXKi0gfJ1bAv8KdebMqzvG6TawIoNdn2EKeTvNNUII8pm/1y5+tNZnwSLwM+T4oPMMCCmuNnu1YEsmr8KkGIizBRTRcZq+ZKZodK5Bu8MKMf8ue9wSKqX+UGNX1VlaDgu6FcqKbfEmffyIzppLHRtzGS778/4UXmxrxwJrl7KdNKc4x/XAmI/xQ0Ip4HHegqWUsTJcMPaz71QAydz76hEdcPptHKafY5UcO9vyUW3IHD6L3IxKmSAqhXwCTOhsKR4f46Smp12FTWhKHg2pFZKkWBXHIokL1Blqnbx9p0udFoRt5YSsUl8Xd3pLQOPo96lLDKXVNmsa1+hxeEMNts1Bg40xd37L4mUDOP+HHsuxriwWQys2Oor6QSSaO828i0YflrAq/2/Vf+ZmAqJLQJeaO/Sz6g122lRFjrH12Xsuxc95B4f0OO073TAkczGz2s2Tbom2iZZ67GPD4Us77As/K97ZSf9clqoxz7BcUXTnzOIV+lN/3X1Mw7ExBLaQnICmnwDXfmqJEhVRRHknf6YYBfMz6gmLZ6EA4mSYSkCQrUJsqbVLMcJi9iFxCH9VL3y2kMPdS/7EFa+Mo 4Lp0ObxL g5GoNzDc564taY1OFSM1+2OMTBIhHH6IXsfBxlHbEVdcke9ADaHHNNK4t33w8+WdGAk3tnxBae+JZF0DBnKLcdOc2Vx2F6NBrfadIdKsRkmd6jKq8RWQ+a/sKttQM+enYdj2xE8IDvb0BEmMzAC7xZy4TKk1LOXKR3lN+6ttdgHp9dBL0uztEq7Ki+xRP2P29xoVyJvdlYmSSJ2e/ETRo6RJal17q5PGPrGURUno3zTzbf1NHLiRZMZ/J/8qtJX5tlRpFADOKASXtwJijOSjH5m215KuKM2H6RPSDfhiVu+WmW7XaxK2xKBUr4+0qUMEbfYBsyhpD32qdzBQSwPHv+bInnLhgYOHwHfb3fAE0FD/a7gy5FW5iL/kNmsQM9XZg96ZmHTFBDFIQFnONzap6drrO45oZgq10i888Io5jePDt5q9mFWerhZ9Uu919FhpZky3o9Z6G1BBdlIyIo3SDnyGZvtOxzpgkH+w0l8xKWqVqxf8V5hzyiDXVBbw5uNGFdPHuPhgJWwTQOEuG664sMPSfk25ik7VtoztQK1PNeqTf091sqhdVryy/A1mo1khVZIaBTmg5zyE0Dn7O4BvoHuJcqiIKHe0REhds+9b68asPhVlIHga7ch1Mgg== 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 Sun 30-03-25 17:28:09, Alexei Starovoitov wrote: > From: Alexei Starovoitov > > spin_trylock followed by spin_lock will cause extra write cache > access. If the lock is contended it may cause unnecessary cache > line bouncing and will execute redundant irq restore/save pair. > Therefore, check alloc/fpi_flags first and use spin_trylock or > spin_lock. > > Suggested-by: Linus Torvalds > Fixes: 97769a53f117 ("mm, bpf: Introduce try_alloc_pages() for opportunistic page allocation") > Signed-off-by: Alexei Starovoitov Makes sense. Fixes tag is probably over reaching but whatever. Acked-by: Michal Hocko Thanks! > --- > mm/page_alloc.c | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index e3ea5bf5c459..ffbb5678bc2f 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -1268,11 +1268,12 @@ static void free_one_page(struct zone *zone, struct page *page, > struct llist_head *llhead; > unsigned long flags; > > - if (!spin_trylock_irqsave(&zone->lock, flags)) { > - if (unlikely(fpi_flags & FPI_TRYLOCK)) { > + if (unlikely(fpi_flags & FPI_TRYLOCK)) { > + if (!spin_trylock_irqsave(&zone->lock, flags)) { > add_page_to_zone_llist(zone, page, order); > return; > } > + } else { > spin_lock_irqsave(&zone->lock, flags); > } > > @@ -2341,9 +2342,10 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order, > unsigned long flags; > int i; > > - if (!spin_trylock_irqsave(&zone->lock, flags)) { > - if (unlikely(alloc_flags & ALLOC_TRYLOCK)) > + if (unlikely(alloc_flags & ALLOC_TRYLOCK)) { > + if (!spin_trylock_irqsave(&zone->lock, flags)) > return 0; > + } else { > spin_lock_irqsave(&zone->lock, flags); > } > for (i = 0; i < count; ++i) { > @@ -2964,9 +2966,10 @@ struct page *rmqueue_buddy(struct zone *preferred_zone, struct zone *zone, > > do { > page = NULL; > - if (!spin_trylock_irqsave(&zone->lock, flags)) { > - if (unlikely(alloc_flags & ALLOC_TRYLOCK)) > + if (unlikely(alloc_flags & ALLOC_TRYLOCK)) { > + if (!spin_trylock_irqsave(&zone->lock, flags)) > return NULL; > + } else { > spin_lock_irqsave(&zone->lock, flags); > } > if (alloc_flags & ALLOC_HIGHATOMIC) > -- > 2.47.1 -- Michal Hocko SUSE Labs