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 F2FADE7718B for ; Tue, 24 Dec 2024 01:14:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 819136B0083; Mon, 23 Dec 2024 20:14:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7CB856B0085; Mon, 23 Dec 2024 20:14:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5F7416B0088; Mon, 23 Dec 2024 20:14:19 -0500 (EST) 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 38CFA6B0083 for ; Mon, 23 Dec 2024 20:14:19 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id E6E171A1AEF for ; Tue, 24 Dec 2024 01:14:18 +0000 (UTC) X-FDA: 82928079906.03.48F223B Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) by imf13.hostedemail.com (Postfix) with ESMTP id D11DC20003 for ; Tue, 24 Dec 2024 01:13:39 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KL8sdwvU; spf=pass (imf13.hostedemail.com: domain of inwardvessel@gmail.com designates 209.85.214.176 as permitted sender) smtp.mailfrom=inwardvessel@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1735002821; a=rsa-sha256; cv=none; b=oyfDoIK1n04wHu+J8XuHDo4A06EZ12/Fz0CHIBlvv8BR50oViLKqw7kiEVPM3YeaMKqvni PCYyq3ZaWsAHrQxLfxaUFHG+WAcUs8FmOAbZI05fDGHXhFT8CS0RzSUBIP4WjfuWBOtcwD 8UDgl/wYiLEg0K3RC7uxmTanOxzJPUU= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KL8sdwvU; spf=pass (imf13.hostedemail.com: domain of inwardvessel@gmail.com designates 209.85.214.176 as permitted sender) smtp.mailfrom=inwardvessel@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=1735002821; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=zWty/mMu5b89nU3pRLtKHkGxN7KspqZ/3bLWyjMFJcg=; b=Lc1Q/te8SfdsxibnCHieCYHYgora43ppFz9SEzWAheJ2aGPeKTFCOgwTFSxoar0a0YaSJP Y/UMDIZ7vZbHjtw16Z09gMrkelea2yZUr3F1C36UeLg61q34U43XV75UpiXjq+yJchSHWQ Z/PuhoBrzCaC9j80Q5JGxaHcTFflJHc= Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-21644e6140cso47073845ad.1 for ; Mon, 23 Dec 2024 17:14:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735002856; x=1735607656; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zWty/mMu5b89nU3pRLtKHkGxN7KspqZ/3bLWyjMFJcg=; b=KL8sdwvUujhMMN8TXHjGiJKHtXIS/gJgGNJekn+RkjXoKO1O6P7yAiKGwDvSIHgy/Z sejh2Y360rOdpUj0Hl6hMe9mw9nUf0rXej0TcYV8BjtjdjejhgCWLsSu9K9VCbJs9Z3/ zRoPkaOY0qRKqWZU1T0Y/wvIF7Kb9WpyQ7Wv0EEeUtz9NH3gnORw5kOXPoqZe21T93nQ jS2QQRtIzTGYtS+L1bcIj+Gm8uE9EcC25fvpvbqNOOSQfUDeN8M1HB81YzsDzD2dKug3 AJAvu2GHxhF/t4GHsOmqdL9PWapcsus5CgO0E3WU/xMYuM2hQqjRr/XaK3ppLp0VpH4f 526Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735002856; x=1735607656; h=content-transfer-encoding:mime-version: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=zWty/mMu5b89nU3pRLtKHkGxN7KspqZ/3bLWyjMFJcg=; b=NO2gLI1ijbjj0E/4xzGdLdytjGWlmKVqgS0MsIZBbiBO5k9Xuu8obnRj6SBHTxPT7w YdRYv4im1lzE9CyPfOrvZSLIc/lygRboLln3jBvho9uRWzdiCSjauE79tIJgWw6SJfQ0 S05UtEzgumcUKCtLbVKD7QsioXMnnQQq9JPsR8OzLaB5VabMAXn/7c5JcXqXUCf1RN30 KmK86qivwxS4ahZIv6KI+lz9bcfJv2VroLdOS9m5v+TnbkH/1jMsASjhjYElXeh8ogof neL4c3HFP3rtRT+snC+xJtUVDYV+lczduHQpsB4LEoiGVbenIsuyirZEtj6CpP3Vf3vp 86XA== X-Gm-Message-State: AOJu0YyjNM0R4Sz5qwXAFod2Pp06EixY1x8XKlaEwlolnxiYF0t8V+ej Zm4zV19FYWUY6lroS7KE3kseoPAHnJ3KnmUZiAdTybiHkzwh7Sm0l2mTpQ== X-Gm-Gg: ASbGnct4QootAh2OnJ8ZcGsbd4LiZvICVrw1UWTuSXY1siMylE83cqDu93XFyS6bxW/ zUco45t5MqYcgE9TjCUy0JfIl7SftH84qm1SiN9OCWWOOrR0tlqUJIT7dqNOh38F9u+LP2DbOH0 EwjLxs6X6Pf1g3NQqzWvxkfttM/tWZLlj46mZWwq1negHyXFKCdOsapdei79FLssav4oKlCp735 pZUPAQUi8cQH/WiXR9AI/Pati+elnY4eTX+s35ot64QfFDxgUJHGem7L+at16mIFIIyY5sD3klQ tzzh5cNRE54rwUgVbQ== X-Google-Smtp-Source: AGHT+IGWsap+rf81uOwV/i5d8iA2KStdKUOzB7fbhzdvPn0+dAjQ8cTLglNwC2zy+of0DesGiNk7zA== X-Received: by 2002:a17:903:2444:b0:215:4a4e:9260 with SMTP id d9443c01a7336-219e6ea1c34mr187867835ad.14.1735002855905; Mon, 23 Dec 2024 17:14:15 -0800 (PST) Received: from saturn.. (c-67-188-127-15.hsd1.ca.comcast.net. [67.188.127.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc970c84sm79541255ad.58.2024.12.23.17.14.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Dec 2024 17:14:15 -0800 (PST) From: JP Kobryn To: shakeel.butt@linux.dev, hannes@cmpxchg.org, yosryahmed@google.com, akpm@linux-foundation.org Cc: linux-mm@kvack.org, cgroups@vger.kernel.org Subject: [PATCH 2/9 RFC] cgroup: change cgroup to css in rstat internal flush and lock funcs Date: Mon, 23 Dec 2024 17:13:55 -0800 Message-ID: <20241224011402.134009-3-inwardvessel@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241224011402.134009-1-inwardvessel@gmail.com> References: <20241224011402.134009-1-inwardvessel@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: D11DC20003 X-Stat-Signature: 8zmsz8ebpi3nky1my375ic4856k49jp5 X-Rspam-User: X-Rspamd-Server: rspam09 X-HE-Tag: 1735002819-710584 X-HE-Meta: U2FsdGVkX1+kOvrAouVaC5PN7fqumzxwAEWF1ppHPfpDSpqt/F76gx49mCRy9NcbPkgtD3pl8vYYucG277rICz539QO+RgZtL8nG11BwzWhdDNmq+0HJYZoQk/vs03XMXSmYqwDcVjwK91+zxyodJbUkvGWhM3bY+UG+DZKpuOXcM+dkwi8dKNwuxblwkPwDTYPdPYQPDVBFPxQpcAOroZ9az9sHU8b5zkpQK7QFM9T2PiJJZrUGdMjB2d8dLd4R1WLHsehLylhROUOrZGu8Dh1MtceP6rhOAIINYxETJ9A0m5DKOZ7QiEHeN+LZ4tIQlbYSGcDVtABc2gducdpxpxy8ahhn6dQV1/wSbGUcVeaXFO21iiWSe2VOhsx+Mlo6kncdWzz2Jc0Mzzpw02H8hNiAaapTSvEctNgYZoF9JlQMv4c51J2Mf4NMAYmomiGnpin+ODLnAc2XyEzquLgnGrm+T7IETRasXkFn76Vf4u6xt6d8S08z8r+YZKFtVR9JzvCMVHB4nmCLUn5UUNwtQeKXI0bicawyWuTtx817fDEPtoRo2rNuiMF78GeRl1dpMMm2N3qRaqrA/jS6bN2tdQQYcsrbxER1QBrEJqfL7Ltq/WB5Tg0Em8Zk3/7kp755zDBzsTpLPJUfIWH6yI5YOQ1p3Vqbf5KLclFZz6Wa6gOqkk6lnKLuA7/I6YJ0Nx139Yk8HVRe27G2fO5fjfSmKdiE4JPG2QpnQC81314tZJNEfnysMyMo91Ij4bk1b4bkYE2Fvp6nWORjmC7qOVU6FRniRe0uWKkMa2AmpIfolJRXEGxA2nk3RrOhvj6/Zt8VReQvz/Uhr1rdM358z6xGS0TrptJGAgto4Bs56JXn5JiNKhF2iBiPM0riOnEPtm/LANGWIaKALs42An3xD/LpVzCBEtIy8Q8ag7w9Txa3D7udoCAvbYN+o8SodT5SqyzXNfWWILENgaxq+AxSKSh 10Nmaf7H HWcI/kINutW4MnUxjFHJvbP1FoqVH23k7V24zxxkY+5S7mJXKIptnQyOypp7Kknr/DyabRSoOx/cDOI3Wqt/6NkQy7ZHmA3aOMA/LzA8bFbKGhdjCJtVGw8l0uubrKGtG6cxte6KF1GjMG9iYVSFNtQUg/PJ2gPrUQQ+FK2nze5AUt9u/AHpbTUHbC8xmrJ23aabkEdhWjJ3sZpgetEivW27ufK7Mbs1+k5wybCjgbZpBx0aF9uSy/Uqo9xrCZ73T1dDdZCZ11jxneSBPKt7Q1nKr6TDKOrOMoMM5KPyM2iZFZJK6LbnPcrKK3YQwfmBu3lwJ6NOpTxTyL90cTF4WKHduYIUNIDD16AA50vy7dI5Syb7ghQkjltAMbw== X-Bogosity: Unsure, tests=bogofilter, spamicity=0.493654, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Change select function calls to accept a cgroup_subsys_state instead of a cgroup. Signed-off-by: JP Kobryn --- kernel/cgroup/rstat.c | 45 ++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/kernel/cgroup/rstat.c b/kernel/cgroup/rstat.c index 1ed0f3aab0d9..1b7ef8690a09 100644 --- a/kernel/cgroup/rstat.c +++ b/kernel/cgroup/rstat.c @@ -201,8 +201,10 @@ static struct cgroup *cgroup_rstat_push_children(struct cgroup *head, * within the children list and terminated by the parent cgroup. An exception * here is the cgroup root whose updated_next can be self terminated. */ -static struct cgroup *cgroup_rstat_updated_list(struct cgroup *root, int cpu) +static struct cgroup *cgroup_rstat_updated_list(struct cgroup_subsys_state *root_css, + int cpu) { + struct cgroup *root = root_css->cgroup; raw_spinlock_t *cpu_lock = per_cpu_ptr(&cgroup_rstat_cpu_lock, cpu); struct cgroup_rstat_cpu *rstatc = cgroup_rstat_cpu(root, cpu); struct cgroup *head = NULL, *parent, *child; @@ -280,9 +282,11 @@ __bpf_hook_end(); * value -1 is used when obtaining the main lock else this is the CPU * number processed last. */ -static inline void __cgroup_rstat_lock(struct cgroup *cgrp, int cpu_in_loop) +static inline void __cgroup_rstat_lock(struct cgroup_subsys_state *css, + int cpu_in_loop) __acquires(&cgroup_rstat_lock) { + struct cgroup *cgrp = css->cgroup; bool contended; contended = !spin_trylock_irq(&cgroup_rstat_lock); @@ -293,15 +297,18 @@ static inline void __cgroup_rstat_lock(struct cgroup *cgrp, int cpu_in_loop) trace_cgroup_rstat_locked(cgrp, cpu_in_loop, contended); } -static inline void __cgroup_rstat_unlock(struct cgroup *cgrp, int cpu_in_loop) +static inline void __cgroup_rstat_unlock(struct cgroup_subsys_state *css, + int cpu_in_loop) __releases(&cgroup_rstat_lock) { + struct cgroup *cgrp = css->cgroup; + trace_cgroup_rstat_unlock(cgrp, cpu_in_loop, false); spin_unlock_irq(&cgroup_rstat_lock); } /* see cgroup_rstat_flush() */ -static void cgroup_rstat_flush_locked(struct cgroup *cgrp) +static void cgroup_rstat_flush_locked(struct cgroup_subsys_state *css) __releases(&cgroup_rstat_lock) __acquires(&cgroup_rstat_lock) { int cpu; @@ -309,27 +316,27 @@ static void cgroup_rstat_flush_locked(struct cgroup *cgrp) lockdep_assert_held(&cgroup_rstat_lock); for_each_possible_cpu(cpu) { - struct cgroup *pos = cgroup_rstat_updated_list(cgrp, cpu); + struct cgroup *pos = cgroup_rstat_updated_list(css, cpu); for (; pos; pos = pos->rstat_flush_next) { - struct cgroup_subsys_state *css; + struct cgroup_subsys_state *css_iter; cgroup_base_stat_flush(pos, cpu); bpf_rstat_flush(pos, cgroup_parent(pos), cpu); rcu_read_lock(); - list_for_each_entry_rcu(css, &pos->rstat_css_list, + list_for_each_entry_rcu(css_iter, &pos->rstat_css_list, rstat_css_node) - css->ss->css_rstat_flush(css, cpu); + css_iter->ss->css_rstat_flush(css_iter, cpu); rcu_read_unlock(); } /* play nice and yield if necessary */ if (need_resched() || spin_needbreak(&cgroup_rstat_lock)) { - __cgroup_rstat_unlock(cgrp, cpu); + __cgroup_rstat_unlock(css, cpu); if (!cond_resched()) cpu_relax(); - __cgroup_rstat_lock(cgrp, cpu); + __cgroup_rstat_lock(css, cpu); } } } @@ -349,13 +356,11 @@ static void cgroup_rstat_flush_locked(struct cgroup *cgrp) */ __bpf_kfunc void cgroup_rstat_flush(struct cgroup_subsys_state *css) { - struct cgroup *cgrp = css->cgroup; - might_sleep(); - __cgroup_rstat_lock(cgrp, -1); - cgroup_rstat_flush_locked(cgrp); - __cgroup_rstat_unlock(cgrp, -1); + __cgroup_rstat_lock(css, -1); + cgroup_rstat_flush_locked(css); + __cgroup_rstat_unlock(css, -1); } /** @@ -370,11 +375,9 @@ __bpf_kfunc void cgroup_rstat_flush(struct cgroup_subsys_state *css) void cgroup_rstat_flush_hold(struct cgroup_subsys_state *css) __acquires(&cgroup_rstat_lock) { - struct cgroup *cgrp = css->cgroup; - might_sleep(); - __cgroup_rstat_lock(cgrp, -1); - cgroup_rstat_flush_locked(cgrp); + __cgroup_rstat_lock(css, -1); + cgroup_rstat_flush_locked(css); } /** @@ -384,9 +387,7 @@ void cgroup_rstat_flush_hold(struct cgroup_subsys_state *css) void cgroup_rstat_flush_release(struct cgroup_subsys_state *css) __releases(&cgroup_rstat_lock) { - struct cgroup *cgrp = css->cgroup; - - __cgroup_rstat_unlock(cgrp, -1); + __cgroup_rstat_unlock(css, -1); } int cgroup_rstat_init(struct cgroup *cgrp) -- 2.47.1