From patchwork Tue Feb 18 03:14:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: JP Kobryn X-Patchwork-Id: 13978855 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 EA7EBC021A9 for ; Tue, 18 Feb 2025 03:15:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 17BF82800BD; Mon, 17 Feb 2025 22:15:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 12B892800A4; Mon, 17 Feb 2025 22:15:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EC0EF2800BD; Mon, 17 Feb 2025 22:15:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id CB5182800A4 for ; Mon, 17 Feb 2025 22:15:12 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 8DF01B5267 for ; Tue, 18 Feb 2025 03:15:12 +0000 (UTC) X-FDA: 83131599264.27.4C31A17 Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50]) by imf27.hostedemail.com (Postfix) with ESMTP id BE74A40008 for ; Tue, 18 Feb 2025 03:15:10 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QmxS5CzF; spf=pass (imf27.hostedemail.com: domain of inwardvessel@gmail.com designates 209.85.216.50 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=1739848510; a=rsa-sha256; cv=none; b=sUX0WfSCIjuxFjfqNAYhfnRcsuCSSgPZKgsxfmDXBlJ2cz/LS2S6i73ZeTH0QTKBFm55bU wJG8XLWq81eaUeKEcTWkWJaXnW8gyZBff008gqMD1omDtTNtUTfng8bMulbE5hnGLdxl0p v6Zht7XLKIPjdvHQl2I5t9Kaizs6hS4= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QmxS5CzF; spf=pass (imf27.hostedemail.com: domain of inwardvessel@gmail.com designates 209.85.216.50 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=1739848510; 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=mO3hb/+vVe+5fAxNnnDqDkFO7GypFlKfFguhCd8DtOs=; b=mk6asr7tAaSWCs0jxzu/pF4O3Iveyle4D2auVZa4E1/hLYmNAzzGlsYRhUXzM0mDzq5jc8 pGFZ5qDPAogvjbeSD0dfxcvGd9OfJCdevgcyRaYx8ZWZfcU6mEosrQ+0vYT3hN3KtuFYIm ue50x60wyNdbS/jbo7LsHBy7a2NjlAM= Received: by mail-pj1-f50.google.com with SMTP id 98e67ed59e1d1-2fa8ada6662so9287215a91.1 for ; Mon, 17 Feb 2025 19:15:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739848510; x=1740453310; 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=mO3hb/+vVe+5fAxNnnDqDkFO7GypFlKfFguhCd8DtOs=; b=QmxS5CzFtPMhChUinDD99kfEZbLLKTyi2c3J6zLmmkf94PYV6RQoy/o+YnJhlqwTdL g3iVgS0maPDI3Ypk3qU4jUm+dW9Z9BplDzqqR66a/peJDXXUmEuVZCuQjbHOnpWnsyO9 nbAM+CYsbkYvBaXtVi4DMJ0xnIX09RDRZWDxKH73LKXZgiSqksSycAZaU/WsBFDN1rsa SxQU+04UFb03BtHSR10c+fJJKiUhTW/ahfvZJKZ2BItnD4/+QyljJ1iacWcKE8j3Ei0v S74NHrE1WOSIgchVab1LCeDrNkI/RHa50FgkQShh4lFOk5yNy8dl0x5FAxTD2K6O+4T+ MwLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739848510; x=1740453310; 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=mO3hb/+vVe+5fAxNnnDqDkFO7GypFlKfFguhCd8DtOs=; b=GCq6aJwHVWt3ZEZx9qDHYb4QbNJNSOtFvzCAzpl2facjyw7gRsO05uprh0ReamkpNK 8nF1A52ROx60YPeXCCNnaBANwbhcfnLrnvkvDYGwPAKIglI9yHSmRji2aZQGCuyUzomC 8KdyR2MDaJofS1pc7eTGFTKiC+ShoDKjC2U+pmbTpbFxMKLBVHRgdqLozNf8N41Lu+KN S6TJUpGAPp+TbAhUFMPJi539Ymak0SU/RbAiMBHY8C+HNjm7+v7oPB/NS0+wmZb5gYbo uWudBSq9nMkEO9lceJAS/qNJRi84mzoGRzWJUVPPW5NXSgxfOHjRPbm3rR9iLYZgKdCw L46A== X-Gm-Message-State: AOJu0Yy0tDDQw8uBYv/Y/XHSLv2NRsMXGzw2Nu6TAVJKmveprIf4nOkI LoMQ9yUhjn5o889l8PywrLtubzIYhx07K0qFN0naet7ldgNU+ZD3 X-Gm-Gg: ASbGncsmY1H9V9Jnr0NwCZiIZNyY4W5lOuOIj7GjK2iU240juauJJdA+wSGTojDVt/9 LWVbcVkRS7x5Zcf7vQ1srwNava29JnP4JekJVGgghqX2XP2o3do6D/s4DU4iC3b56EmfQy8Oxsg CtqXrd2MfTKtsAlcUtkrc5XEHxvmGJ1hBenf2Jv0eoXPOeyK4Z0VFhoDr25XuZbs2g2JbV0ZAqF eHMPUjsQ2kbsUOueADhWmLjZT7k6gzOWZLsRNgC4YWQfyyMH5TLhe4hEnEMzi3a5jbgfU9J7HLz 65x6hk6hdELitTRxguEqw1O5gzgQh8vEQlcJuylz4cSwuTE3RKiB X-Google-Smtp-Source: AGHT+IHcdvcOMi0AxH886B36LGeN6TPfeRO/YTGzu+no+b1L3ofR6FaqviJ5YbkBRETnjOFBfr1SiA== X-Received: by 2002:a05:6a00:198c:b0:730:8a0a:9ef9 with SMTP id d2e1a72fcca58-7326190d9edmr18330498b3a.22.1739848509625; Mon, 17 Feb 2025 19:15:09 -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 d2e1a72fcca58-732425466besm8763451b3a.9.2025.02.17.19.15.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 19:15:09 -0800 (PST) From: JP Kobryn To: shakeel.butt@linux.dev, tj@kernel.org, mhocko@kernel.org, hannes@cmpxchg.org, yosryahmed@google.com, akpm@linux-foundation.org Cc: linux-mm@kvack.org, cgroups@vger.kernel.org, kernel-team@meta.com Subject: [PATCH 06/11] cgroup: rstat lock indirection Date: Mon, 17 Feb 2025 19:14:43 -0800 Message-ID: <20250218031448.46951-7-inwardvessel@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250218031448.46951-1-inwardvessel@gmail.com> References: <20250218031448.46951-1-inwardvessel@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: BE74A40008 X-Stat-Signature: znjhr9wuz34qpnex1t4i6tajm93ee9st X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1739848510-472832 X-HE-Meta: U2FsdGVkX1+Trwg3CNj9zusZSwR7++BsOuoreS8RJw6NqEvC1p6B+UG30KwvymRz/+Kg2GfQiVfeixSOfbrzpYjODa0QriPlQC3Cc9TvQrA3kHkZw+myrHuDke0Ou97uNM7IostL5wiPa2nvvwannCZEaSnSsgatoCN5axc94njWZyNC/UB4dZHoXca7y5GYMWFOkjZYUlIP6jCh+ExkDbBvZQjYHgpALvOKFN6wJc/c3hfllYkPi1OHk0OAnMoPKlG6B6Kux8w0lGJ4HevcV6rK2KC7XSwB9hRdlknTmp9R27p/qBYUSBJOMgtDbhrVnuDdY/U1YYGYh+CkQsyJfb4ZDKAqNQm4vyr/DvjNPvr8Z13gwGo25+gCBZ47r93jwpowmTBRba3ryup2pbR8kO5oojn7xo8tkoTHDH5prSUGthPu+eMaEfzQHwKo/IWL01x7+gCYnw27Z+KSz1bJscZ5ajRay8rHDb5+zahkVK6apq3vM1BN4RQwp+foJ5LHujhN7gjL2KBtFRCYZRJUIRCYQl0Qy9SibAMbGmN8Ngm2SoklPrT9pJQJEHZ3DBax2GBds/d3wVIyhG/ajdlYQXW1OwCLdzKCRPVffh78pX/SqRZMkX5pspKMt/bIKr7AoImuaKrNQ3IjVVEmtaO2CDZpeEI1ZAGr+zBQCpsmOFbx+4JuhwvmBsuNzgZJ6faKSevoNJ1fC50EcBmFDS9J3hICMj6ab3W+2jn25SA4ARTU281X70twvN/W9KV8483bLHfzi7kOws8Xd9vzTut41FZHdPPkArsQgBy5QfnJYt/BRGIb3KD3Mi+oiwCJVzjmlOF5JUEXV76VE/Em/BQOYojHFQGqqjhPFqdHWIGTk2EsiU9Xv1Ul9+9IyN5V3cijLypoRmkFBqgQAlCkrON2LN8Tpg4DRqyxGHl40lJeaDoaTT2AAwQRLO7YcmdSUMnazOr23FpW1ioHkEfADwq yOvamtfL 1J/X4guzDWxdLU89qmQPCJ/alc5dNXD9pNf7VjrMA/YgzNPonUcdHhs/z4S6qEw7F16Jr4v/X5/t8s0Jqd7x5DfWgmBmEQJbsRHQ+sE0hcqAJAN9SMqjT2mxHm35Tfnk3wl/xAirUGr1aztFcXnfS5S0sSPI1Yaz5upY7CUydOWnyQzlvRiI1ra5v7B7HjaY3cQwSSsJx798ddojf7nIweexNhlb6B/Zcafy2bw+/3rVTwKopLNdx0Q1pEm+RiBnsk+4W75uQeb1Csr/W7xRcRS7l/LZJYqHlXh+DmyZmVgVCL377TNayd+w+FO9GbPVmYwxKzjOediIOnyMb3RCoVht2ffQBh3tBY7+22XJBB71W9EFJQxddz2vRnA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.010120, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Instead of accessing the target lock directly via global var, access it indirectly in the form of a new parameter. Also change the ordering of the parameters to be consistent with the related per-cpu locking function _cgroup_rstat_cpu_lock(). Signed-off-by: JP Kobryn Reviewed-by: Shakeel Butt --- kernel/cgroup/rstat.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/kernel/cgroup/rstat.c b/kernel/cgroup/rstat.c index 14dd8217db64..26c75629bca2 100644 --- a/kernel/cgroup/rstat.c +++ b/kernel/cgroup/rstat.c @@ -385,7 +385,7 @@ void bpf_rstat_flush(struct cgroup *cgrp, struct cgroup *parent, int cpu) __bpf_hook_end(); /* - * Helper functions for locking cgroup_rstat_lock. + * Helper functions for locking. * * This makes it easier to diagnose locking issues and contention in * production environments. The parameter @cpu_in_loop indicate lock @@ -393,24 +393,26 @@ __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) - __acquires(&cgroup_rstat_lock) +static inline void __cgroup_rstat_lock(spinlock_t *lock, + struct cgroup *cgrp, int cpu_in_loop) + __acquires(lock) { bool contended; - contended = !spin_trylock_irq(&cgroup_rstat_lock); + contended = !spin_trylock_irq(lock); if (contended) { trace_cgroup_rstat_lock_contended(cgrp, cpu_in_loop, contended); - spin_lock_irq(&cgroup_rstat_lock); + spin_lock_irq(lock); } trace_cgroup_rstat_locked(cgrp, cpu_in_loop, contended); } -static inline void __cgroup_rstat_unlock(struct cgroup *cgrp, int cpu_in_loop) - __releases(&cgroup_rstat_lock) +static inline void __cgroup_rstat_unlock(spinlock_t *lock, + struct cgroup *cgrp, int cpu_in_loop) + __releases(lock) { trace_cgroup_rstat_unlock(cgrp, cpu_in_loop, false); - spin_unlock_irq(&cgroup_rstat_lock); + spin_unlock_irq(lock); } /* see cgroup_rstat_flush() */ @@ -434,10 +436,10 @@ static void cgroup_rstat_flush_locked(struct cgroup_rstat *rstat, struct cgroup *cgrp; cgrp = ops->cgroup_fn(rstat); - __cgroup_rstat_unlock(cgrp, cpu); + __cgroup_rstat_unlock(&cgroup_rstat_lock, cgrp, cpu); if (!cond_resched()) cpu_relax(); - __cgroup_rstat_lock(cgrp, cpu); + __cgroup_rstat_lock(&cgroup_rstat_lock, cgrp, cpu); } } } @@ -449,9 +451,9 @@ static void __cgroup_rstat_flush(struct cgroup_rstat *rstat, might_sleep(); cgrp = ops->cgroup_fn(rstat); - __cgroup_rstat_lock(cgrp, -1); + __cgroup_rstat_lock(&cgroup_rstat_lock, cgrp, -1); cgroup_rstat_flush_locked(rstat, ops); - __cgroup_rstat_unlock(cgrp, -1); + __cgroup_rstat_unlock(&cgroup_rstat_lock, cgrp, -1); } /** @@ -487,7 +489,7 @@ static void __cgroup_rstat_flush_hold(struct cgroup_rstat *rstat, might_sleep(); cgrp = ops->cgroup_fn(rstat); - __cgroup_rstat_lock(cgrp, -1); + __cgroup_rstat_lock(&cgroup_rstat_lock, cgrp, -1); cgroup_rstat_flush_locked(rstat, ops); } @@ -516,7 +518,7 @@ static void __cgroup_rstat_flush_release(struct cgroup_rstat *rstat, struct cgroup *cgrp; cgrp = ops->cgroup_fn(rstat); - __cgroup_rstat_unlock(cgrp, -1); + __cgroup_rstat_unlock(&cgroup_rstat_lock, cgrp, -1); } /**