From patchwork Mon Nov 4 17:52:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kairui Song X-Patchwork-Id: 13861757 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 F010DD1BDD5 for ; Mon, 4 Nov 2024 17:55:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6E2E16B008C; Mon, 4 Nov 2024 12:55:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 691C26B0092; Mon, 4 Nov 2024 12:55:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 50BF86B0093; Mon, 4 Nov 2024 12:55:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 28CA96B008C for ; Mon, 4 Nov 2024 12:55:04 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 4A6781C1B37 for ; Mon, 4 Nov 2024 17:55:03 +0000 (UTC) X-FDA: 82749163350.28.B8AFE1B Received: from mail-pg1-f182.google.com (mail-pg1-f182.google.com [209.85.215.182]) by imf15.hostedemail.com (Postfix) with ESMTP id 9307EA0005 for ; Mon, 4 Nov 2024 17:54:28 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Tr7Jj/Rx"; spf=pass (imf15.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.215.182 as permitted sender) smtp.mailfrom=ryncsn@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=1730742737; h=from:from:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=gRTR4u71/5k0GKWZY0aR2dLAZ3MdIKwjTz5ojnEJCYA=; b=Ims7YZMs9uKovP6LBcpWTda8xf6CRaSV+htaeiaqW2KEslu1VRyQbIzfKgILfj74hwXdbJ 4qyKvEx4Hb+ZGp4gthsMs5AJXsQ98WKos3C7lPg6PjO9m6bie4gqCuGEiNw2UVsvwSJIfo 91Z5WZpbUtk/KVzeR6tJdFTDVrTRQAU= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Tr7Jj/Rx"; spf=pass (imf15.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.215.182 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730742737; a=rsa-sha256; cv=none; b=QDlv9j5dokG8LW7ITvLNjSSmJ/coFBlSA5gmw5f3rUzbETN5Nns3jnWlMwIHmJyGZQv+sq 7Vro6BwVGORogmcgLjrAWL6pCGApo0kiNM+heUjgn/Tj1NkAh6Ym+PnHMB+KL3zNCq+Dtz r09egjAFc473FX5bjsG/V2hVlWNO4CY= Received: by mail-pg1-f182.google.com with SMTP id 41be03b00d2f7-7eae96e6624so3290199a12.2 for ; Mon, 04 Nov 2024 09:55:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730742900; x=1731347700; darn=kvack.org; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=gRTR4u71/5k0GKWZY0aR2dLAZ3MdIKwjTz5ojnEJCYA=; b=Tr7Jj/RxjLryYkMX3Vc5ijdL+c0V1122rlbyp0NTL3lESgX2B4Bc2Rr2pW+N66ETV5 2013OT1LMwvTVCGmwdM9StJ1aR/bVriGp1c7BIgyjqQsbTdCs9YreOL+o0Q8zm4dH71z QNQw1n+7VrTL2NSb5Xc//j4T/LWrrlAXAJcjc5SugxURRb0ONw3uKIecO1TVq6pPZXEK jpz6dSPZeY5PKWWdzLMmjpdKPdDOu5FlyhHIhHYxDCxnwS6K4IXEstFQzOfKkVc32A8M MivudrCw45ySNe037wTRXg6OsrLHwKdZ00zJRIhYpIwEhOWZ/Cnvk7yJyQeaJlHH/tMF i8aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730742900; x=1731347700; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=gRTR4u71/5k0GKWZY0aR2dLAZ3MdIKwjTz5ojnEJCYA=; b=BxAyTv82v/JcuLUyIpAEsVzLEFGGTfm1DdM2Fs12wRrGH+iP5Ui1P95G19WxdcJQ7I HKkpgAs38kWjiLCHv7thT6KLvnWVPGRVYaYNjtv4hxeUXEqWd4lTl+D286XNHWNYgjxO mZplT9ya6/xH77ZaXafjyj+18ejtSvrgHfDeqDtmj3JZFrbcd10tcj/O8h5DI3kIBA5O YGHCFUhTbbSMRT05G6qWsCRectj/zv54NzMe6pWGHhHU3Ew5YTaufOOpG2PScbcGNUXt bCMq+z53mKnmotX7JevcUMwsht5IFxI4cyjLqfT+HB7s2vLBFOMA+At4kcWxIGWMWb/h AWqA== X-Gm-Message-State: AOJu0YzArAZV9e7FYxH4MG3kuF7tVcSUoz8MP4tgxePw6n/5pFTsLlJe FXCuJHcNcAV85NpJdfjWn84NThcZ1rYKluQ6JbCGv1ZOWlALqoLVSYgZtnbXldE= X-Google-Smtp-Source: AGHT+IEH6inVkjKT4+groMvSWdnpVy/1uu73SUBRjO1KRAszhe1IQSdHDoafHlMnPuy75/JgZF9wUQ== X-Received: by 2002:a05:6a20:b925:b0:1d9:6a6b:faf4 with SMTP id adf61e73a8af0-1d9a83d6639mr32856124637.15.1730742899565; Mon, 04 Nov 2024 09:54:59 -0800 (PST) Received: from KASONG-MC4.tencent.com ([106.37.121.39]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-720bc1e5f5bsm7777039b3a.55.2024.11.04.09.54.55 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 04 Nov 2024 09:54:59 -0800 (PST) From: Kairui Song To: linux-mm@kvack.org Cc: Andrew Morton , Matthew Wilcox , Johannes Weiner , Roman Gushchin , Waiman Long , Shakeel Butt , Michal Hocko , Chengming Zhou , Qi Zheng , Muchun Song , Kairui Song Subject: [PATCH v3 1/6] mm/list_lru: don't pass unnecessary key parameters Date: Tue, 5 Nov 2024 01:52:52 +0800 Message-ID: <20241104175257.60853-2-ryncsn@gmail.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241104175257.60853-1-ryncsn@gmail.com> References: <20241104175257.60853-1-ryncsn@gmail.com> Reply-To: Kairui Song MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 9307EA0005 X-Stat-Signature: z9hagwitdf87qxbfu469o3yzrjb8w49j X-Rspam-User: X-HE-Tag: 1730742868-462590 X-HE-Meta: U2FsdGVkX1+xjnii0uNltr/UmlJZmkDCN1ggaIGDqkZfByLzyT8bYpU0FitLpw0zBBzPHeWeOm56+8wJtJxGpt3H38eWz/4lD/W/btuRUFBScCqbbJ1OjE5+Cky+Tz8erfDN2eKe1yzPr8HZ4vQ+bwlr3wWEoVSdxExllDWNqKt4cgcbHAAtPpgyS47dfpuxZWvMHNoJnBHmlWsmTHOWPYUQtOFlapa98oABNg71EC8nuQ3856PLEhDOnPQx2+kiLPAi1zVjkTv8bbikmbpLcCndr5zefxEgViA4rZt/3t5MjEqWvIIzoVrbphrO87xS7zkQHS25R6j0CI+WmqYWHhV+CueYb8TOIuP6/gAbldcEra/jrwWmtukQIekH3U4q9tns56iAqA5TjqFB6GHwl0U/IUWeNNB+e3I4crwCDXAX+CVUmkROcfk7hScirwO1Q2OIrXcL7hpSjvsux9bJSaSvIW4pQzh1tkCaaS9Iw8FX8N89vDihjGw29gGX1O/roJCQ5MfhR4Dj3sTVY+rME8um3+fsWhENGkfrHctye36PFKGVSyAWQCiw4UxSxNXVTkk0DNOvM990ysYKOKkhMklhzBXFi1f+jxq7pCNODt1lQkiWRnOVEkmuZlrgL2hovycECUFuYnZ0/KZXagHe/OcZc/svQ6dSyofOgbiZcFdAE0f7FyC/6RI3PYJHx+XrrumR7Sf7/FEOjt9rRe22ugRRCnXrkS6YK1OD1B305QgljOZUsiIY9L8Yp5CxNyqM5IKq3tYZkT4RZ8RfczcnFN3LJdQSuOPkPsk/D6tenilzJxOI9KFSNGNdY5UJRksQz6NDdBPZgf5blbHs3jlSaAU0XULJFoTDREJOdlqDllHse3+2dHxxi1OdCXjXhctlaugVdmoUTM/WjXAslQfEUMYM+7PrPEfx3Me1lufGwaQNwKhUAym33BssrsbUDLJWPUYTis51m3TFGVEN79r K1uLupPl +FhDTkl2fhWL++lFjBFvUQwpFEzatrdezS2mydUP6BhGySto/M8rm4lk1HjlNHLGn+Jt28wBgjUZ5ioIyIw1f6OHSzwwvK7iomQL+pJzKesLR8e97TFc40tZImpaQTJyfhxqhrRySLziEE77+7DFIWQyLKJ3UGnGhmkTLhphNz0A5H5TMF1JzhNqloGhtB4hKxGZ4QLpKWIMt5nQwuwq/JMDzaWhwTg6oWYC8DzUY2Znu1QELrP70L0hlRbq/HVer8E8OhQvlHER7S8QdGbQ8VpJiRfSC5Azj5qo+TJ86Zt66q/L6L7T0KBgMYpjTmJJ0jlk67CRYO1DmPManfijmCpgPbWIa9cU9I7lUEMeHti6xlTZQHxS7HVE68iMvH/yySISuc5Wu7ckl97mvn2lmRHYLMuDD7mTNPSpHqWCElP6REl2jOraBoSp15PuvdC7eae/UlhWm+EEpYLThMdcPBT0+6909gG4wwlg2mUDanyz8pp45q3qZ2FAF5r7g/Hgits4b4Sks8rKlddH9jjjtoyCOMKBFgJO/DHh9WHTRHC0DgxMLE6BZvS2V2pa4AI8TD0tC 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: From: Kairui Song When LOCKDEP is not enabled, lock_class_key is an empty struct that is never used. But the list_lru initialization function still takes a placeholder pointer as parameter, and the compiler cannot optimize it because the function is not static and exported. Remove this parameter and move it inside the list_lru struct. Only use it when LOCKDEP is enabled. Kernel builds with LOCKDEP will be slightly larger, while !LOCKDEP builds without it will be slightly smaller (the common case). Signed-off-by: Kairui Song Acked-by: Shakeel Butt --- include/linux/list_lru.h | 18 +++++++++++++++--- mm/list_lru.c | 9 +++++---- mm/workingset.c | 4 ++-- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/include/linux/list_lru.h b/include/linux/list_lru.h index 5099a8ccd5f4..eba93f6511f3 100644 --- a/include/linux/list_lru.h +++ b/include/linux/list_lru.h @@ -56,16 +56,28 @@ struct list_lru { bool memcg_aware; struct xarray xa; #endif +#ifdef CONFIG_LOCKDEP + struct lock_class_key *key; +#endif }; void list_lru_destroy(struct list_lru *lru); int __list_lru_init(struct list_lru *lru, bool memcg_aware, - struct lock_class_key *key, struct shrinker *shrinker); + struct shrinker *shrinker); #define list_lru_init(lru) \ - __list_lru_init((lru), false, NULL, NULL) + __list_lru_init((lru), false, NULL) #define list_lru_init_memcg(lru, shrinker) \ - __list_lru_init((lru), true, NULL, shrinker) + __list_lru_init((lru), true, shrinker) + +static inline int list_lru_init_memcg_key(struct list_lru *lru, struct shrinker *shrinker, + struct lock_class_key *key) +{ +#ifdef CONFIG_LOCKDEP + lru->key = key; +#endif + return list_lru_init_memcg(lru, shrinker); +} int memcg_list_lru_alloc(struct mem_cgroup *memcg, struct list_lru *lru, gfp_t gfp); diff --git a/mm/list_lru.c b/mm/list_lru.c index 9b7ff06e9d32..ea7dc9fa4d05 100644 --- a/mm/list_lru.c +++ b/mm/list_lru.c @@ -562,8 +562,7 @@ static void memcg_destroy_list_lru(struct list_lru *lru) } #endif /* CONFIG_MEMCG */ -int __list_lru_init(struct list_lru *lru, bool memcg_aware, - struct lock_class_key *key, struct shrinker *shrinker) +int __list_lru_init(struct list_lru *lru, bool memcg_aware, struct shrinker *shrinker) { int i; @@ -583,8 +582,10 @@ int __list_lru_init(struct list_lru *lru, bool memcg_aware, for_each_node(i) { spin_lock_init(&lru->node[i].lock); - if (key) - lockdep_set_class(&lru->node[i].lock, key); +#ifdef CONFIG_LOCKDEP + if (lru->key) + lockdep_set_class(&lru->node[i].lock, lru->key); +#endif init_one_lru(&lru->node[i].lru); } diff --git a/mm/workingset.c b/mm/workingset.c index a2b28e356e68..df3937c5eedc 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -823,8 +823,8 @@ static int __init workingset_init(void) if (!workingset_shadow_shrinker) goto err; - ret = __list_lru_init(&shadow_nodes, true, &shadow_nodes_key, - workingset_shadow_shrinker); + ret = list_lru_init_memcg_key(&shadow_nodes, workingset_shadow_shrinker, + &shadow_nodes_key); if (ret) goto err_list_lru;