From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F9D52C11C9 for ; Wed, 3 Dec 2025 08:21:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764750073; cv=none; b=QJJ/+Nua+eBaoZ/88Jfl+0dA8sueOg3jkvbUiQL0HNYEdOOPc7rxCag0D2FnPs8tYj02x++rtVdkuUO0wtyeuHU0Osi6ETRtl565aReh958+x2WBeprNY3WsJGzzhhHRagrdwSQN3hRSF3ug35faeeM/Z1xrOtVgvmr1jPDOKTo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764750073; c=relaxed/simple; bh=uXTOwwwZhFpnhW5885d1kH4G4YCfycBYR3n20m5+p9E=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=jUsckdiP0IiQQcqZQp8vwrNC1DiPic39x8Ay31T4F9xLJNmurgetff6brtnN7CBS1JQ8T1eSlufeqALDkMamrFXSd1luyp6d4hGTF8zvEvBX4W1m+YIPYH/nF9m9Je6gXZpg/V5U+DJPHrEtA6wtYViACKMQj8Y/vJt7rxuaVgI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=VRyvI8lm; arc=none smtp.client-ip=209.85.208.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="VRyvI8lm" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-640b0639dabso11567328a12.3 for ; Wed, 03 Dec 2025 00:21:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1764750069; x=1765354869; darn=vger.kernel.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=w1dLNcTc0WsXx7l6OsEeGvLH7CXI+zAatkWMkXFDSV8=; b=VRyvI8lmStE9yfNZNB2G3fWEiyCbHrksqp5QF1t4QbfB8kJvHH97ZsAXy5uICInl0A NXqZdozohb37D9L3BrPJvhKK+HG7AskftUxrbvAptDcIvGoxSNRj+YtI94z5AibkzJcl QLty5AbIfeETJRxwBJ9S9xR/r03C3KvQ+sOLKDf7xLEMWKwwSp5G51EW0PvwLYGCJXnA ziGsBTQzw+sbr7bOJwRWY7M0HzYS+r0R8VeJzYLC93mu0KjKNIXeaqvkSDVWCIUmJbY/ K8ZudUDWbsJgSeLoP2L5/wd8ZQX1UhJnInNyqx8La4YV5zuF9a8YHN+O2SZffZYXHZR3 smRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764750069; x=1765354869; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=w1dLNcTc0WsXx7l6OsEeGvLH7CXI+zAatkWMkXFDSV8=; b=PqfwgZY8MONq5OBRPDGzVbEFiIv37GIEoZUmDQD+1BHc9ng5bg1StA7Sb8Bk+nduiT vvGFvADoXRIybXxQgB94U59DZEl/q/54sa/TctMyLzig9vFZmKhJN3OjAEvcgfoNUW5y TAYUOEcDUSSas/3Emu4/QWzjew85IcILjc6d+clZWol9vUip2mu8BHL5uEoODDKcOo/8 bZE3aJigtZWQi8TFpP5TvuQ/VqIUfLbNDBISjpmZXzW2vb3Y2leq25npcITm+OSMxzSL /TbDA19RrBem+bAUG2O6NEViL9mB7u+G4Mu66eGUv//RpdWT/wsnLEcxxhmshZYTu5vD rV7Q== X-Forwarded-Encrypted: i=1; AJvYcCUnZ0pq+janaoUul+pBOextHf2TFC7jWWGgp22pZ2e6HjquJVpUSOVkCpyomr6JkeW1CdTwXnumJkQoLeE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy96Y6g4qpuS+OdoRc6jmAk36+e096VNqQ8E9HNf/dyqklvPoJ8 UYoo8r2b6bIDzcDV0P8MasjOlXHFkFToxcQzdPNR+WJTJqxgSi9TMOUIpfu8bywZbaw= X-Gm-Gg: ASbGncsZZhuAdCkee1ZBt2uyC+E1q1VHZ4FzveIaZ6oSrVJM6lBlJTNQ2JlcYB+2Epy kozgP67x0tZjRYZzBw1ukRVg0t0kXeRwm3bVHn+mwkvA/oej3AuXTYfBqyQedCH5siA5a7OF7l1 u2aXaWSlWRtRmijUhbaeTwfbhwplBMN624wuXvN8qSY2J3WNdYZZUPxceyDMpM2KZMtl8LoVi0V 4PBVBV9H3DOD0L5Bkb5UtjNvGPNMgVypoZ9y4eFxCV8yE1ba5f1e4I/bzcRAqGAlgPxusxR6iDS CCqA2UKaNJMVO/8SDiwtoWfMnCVMe4prffubOkFAzqstZn3Ix0wMMbAsvlBCSwhLypV0Sfc0Z3H gCA94ym0fMy6N1ctGHqH0NY42LY/rO6Czqve36+x7yhg7TmAWbkDjNuilghpm0nOo9yRtCmi8IN bfAsZ4hX5RZ2QFkA1zre5erq7y X-Google-Smtp-Source: AGHT+IGL3Xuzk+IvWUMZdZA8ZVMxU5aMmnQFc2PSzerP9aVtIfX3EYJ1y4dwSSvhYTBRlzUbv5/axA== X-Received: by 2002:a05:6402:26c7:b0:640:bce5:77a9 with SMTP id 4fb4d7f45d1cf-6479c4c1998mr1077640a12.32.1764750069559; Wed, 03 Dec 2025 00:21:09 -0800 (PST) Received: from localhost (109-81-89-155.rct.o2.cz. [109.81.89.155]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-64751061e14sm19789035a12.31.2025.12.03.00.21.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Dec 2025 00:21:09 -0800 (PST) Date: Wed, 3 Dec 2025 09:21:08 +0100 From: Michal Hocko To: Aboorva Devarajan Cc: akpm@linux-foundation.org, vbabka@suse.cz, surenb@google.com, jackmanb@google.com, hannes@cmpxchg.org, ziy@nvidia.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm/page_alloc: make percpu_pagelist_high_fraction reads lock-free Message-ID: References: <20251201060009.1420792-1-aboorvad@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20251201060009.1420792-1-aboorvad@linux.ibm.com> On Mon 01-12-25 11:30:09, Aboorva Devarajan wrote: > When page isolation loops indefinitely during memory offline, reading > /proc/sys/vm/percpu_pagelist_high_fraction blocks on pcp_batch_high_lock, > causing hung task warnings. > > Make procfs reads lock-free since percpu_pagelist_high_fraction is a simple > integer with naturally atomic reads, writers still serialize via the mutex. > > This prevents hung task warnings when reading the procfs file during > long-running memory offline operations. > > Signed-off-by: Aboorva Devarajan Looks OK. I would just add a short comment explaining that in the code. See below. Acked-by: Michal Hocko > --- > mm/page_alloc.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index ed82ee55e66a..7c8d773ed4af 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -6611,11 +6611,14 @@ static int percpu_pagelist_high_fraction_sysctl_handler(const struct ctl_table * > int old_percpu_pagelist_high_fraction; > int ret; > /* * Avoid using pcp_batch_high_lock for reads as the value is * read atomicaly and race with offlining is harmless. */ > + if (!write) > + return proc_dointvec_minmax(table, write, buffer, length, ppos); > + > mutex_lock(&pcp_batch_high_lock); > old_percpu_pagelist_high_fraction = percpu_pagelist_high_fraction; > > ret = proc_dointvec_minmax(table, write, buffer, length, ppos); > - if (!write || ret < 0) > + if (ret < 0) > goto out; > > /* Sanity checking to avoid pcp imbalance */ > -- > 2.50.1 -- Michal Hocko SUSE Labs