From patchwork Fri Feb 2 17:02:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregory Price X-Patchwork-Id: 13543170 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 417FCC4828F for ; Fri, 2 Feb 2024 17:02:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BE9D46B0074; Fri, 2 Feb 2024 12:02:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B99D66B0075; Fri, 2 Feb 2024 12:02:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9EC746B007B; Fri, 2 Feb 2024 12:02:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 8C15D6B0074 for ; Fri, 2 Feb 2024 12:02:58 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 5E78BA02DF for ; Fri, 2 Feb 2024 17:02:58 +0000 (UTC) X-FDA: 81747483636.10.76152FE Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by imf26.hostedemail.com (Postfix) with ESMTP id AF1B6140022 for ; Fri, 2 Feb 2024 17:02:54 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZY9Le1FG; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.215.196 as permitted sender) smtp.mailfrom=gourry.memverge@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706893374; 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=5AF6y+MlS2Aaikvfug37kciivlA8KerG3tHxNDefUBs=; b=RUH3kd67HU35VOiZVlV7+m9/IsalhPpOoUoAdRPKBUoAxe2S3jOEWEmBNEoAg0kntQ0vNa +9UGX06jzkMsWq+OaeKx8c56QcyYsE9W+hEuN8xw9V+1wrrAiSE6Z19JFXifZkPdBc/Vip iEG3dkTr4ZkAcNtc/LQTMGQzEk49s5I= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZY9Le1FG; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.215.196 as permitted sender) smtp.mailfrom=gourry.memverge@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706893374; a=rsa-sha256; cv=none; b=VX802aHuNtBztSRaIVMhq2dAsGMxGTV9gClLvFC6RQLrL772O9jXNPErGCkV2wrU8T0zFt go3UtYEIijOj+lqLJBmqv3LUawTgxRVXmg8REgU8pyP249n1ATaeO8eQtORa9hkPaB2xLZ QVinazP7V0YURZGvMlTVbYRb96GzUbo= Received: by mail-pg1-f196.google.com with SMTP id 41be03b00d2f7-5cddfe0cb64so1915769a12.0 for ; Fri, 02 Feb 2024 09:02:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706893373; x=1707498173; 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=5AF6y+MlS2Aaikvfug37kciivlA8KerG3tHxNDefUBs=; b=ZY9Le1FG1lUL/kpGF2n7LKP1XfdxOdcVNVP4+JL05HlPITnzd5z+9RtlWmsCJJg6Fd L0ZtJEIDFr1AKjub4YHAxsADEEOfkHe2q4ZqmxhC/Lzy6xFYVpeG0DdpinFrBAoY0zV+ M8z2NJnqiRHmevLenE9u+ZSRKtb7fyJXaUdkurf04zWZGgDbI6Jb23ukUHKKwJVFKj9m 4ES42Akchs/m7SW56+P6ZbWXQ8NZE0JsJeo23vXaimZpnk1pv4qJlj/2ARorgWmFPZGT lLi5XT7DbDsPl+pQ5sb0+rnNJELqh3u73KaPTJ30AKjM8UphZ1iSvJx3mjBM/9nXKqhA PUiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706893373; x=1707498173; 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=5AF6y+MlS2Aaikvfug37kciivlA8KerG3tHxNDefUBs=; b=AF+jVm7LnCZ5p1NPCwfRb2uzgQy1dsnC8DVhyqUF9xe2vjSZtK4gGRDDVdVIEHwIFL XdgIxKrbEZGjde9+EQlu0C5R/p7MfSHIQzJE/UqPjrf9VKcj75z8DZS+xkElyzc29h/k zcIc35KYXDuHQ0GVVTfPMnhraOvxGiYJQ24w/J6t9zeKikSeOnBL2RRcTt8MvxsPHGlL Td/UV53g/SdGtKFbjcjwjRwXg2Esn2D9mx9twNfVYhnnhPTGWel/OzUBpNmfN0T91XQW vxr+udCu0HoEZsCZ2ublapj+g4HmkK37JA9jPVlql2YCxSHyHyRPbrPn3Wr0vHeFDfAJ j13w== X-Gm-Message-State: AOJu0YwnytuWS6cwRR7UC9w/HBqvoR1KwZ8If4WkA4aW8A+M9EAkzQGY WT8VujS8vx736cXwwLI/IuACXCBJxZFwC1P8j8NFLwHP2Y/lD/vhIR73vTuS1g== X-Google-Smtp-Source: AGHT+IGEuQgxleUGw2gTIz9dWiT2Ix+7OW0Ula2oMbyOkn4BnUCm750NIoGlS3+JmLjBQmBSRbQCPg== X-Received: by 2002:a05:6a20:11a5:b0:19c:a03f:9e5b with SMTP id v37-20020a056a2011a500b0019ca03f9e5bmr5472769pze.5.1706893373148; Fri, 02 Feb 2024 09:02:53 -0800 (PST) X-Forwarded-Encrypted: i=0; AJvYcCWxSeV0i/3cN4FkA1qBO1h6KJWwIQ3BOVFyBkzVfgpbI4zhiU+/ry+RXGd2YHfKOFGBzl679cwDxXk5cqAvgFrLqJ8O1KZXD1Q9EpnRdpm9sXcO8cisT+CHJtr5h/kDNROOF9Va7TjOLDkjaNKd3cqlWA+gy03VX/OlvH5GnHBeR1Gt8IEuBFg99qs7oWP6KwV0lu2lZAIOhl/jrWgoYjteDCd9eRR3SAXyzTTxNSidXpdoeLXuw2fYaN7t24eZGHjxJdIw3Jt/8DZvEQuRtIYRqI2CPkPFHbfeTPR/3xLlVtpPLXy+Xu6aVvWLB0fQ5U0Dxj8we/t9n9jJTkFOBwI+VcZlKD+HhZ4OLz20he5eFmQU+uwn/2HaElnr+Rbyf6+1o27Z39KUA7wphCy8EV2tylhXnl1rnPwVIskJkZ821xQmnsjd58oZDz7LH/tygJzxdoIOfpKMslnBUlBtvZ9uNS+yJiancVN5G5vUOEGuu1AAysUYar0K1cUreuu7jYnaDHcDYfLrH0x24Z/JJ9GgYh70jaKsJRu1XDCa25tYEbH+AYBkbBDh4w6Z/gIi5RkEvYlVV3BVaYTdbxs0yWEIpS5m2prUcz/8nWAigpUqhtLAlr+8EnektxAbM/I+rbmlyZ6HA1TchyHctsmFmlNHQDnLwpEBrpQUhvQHTVs= Received: from fedora.mshome.net (pool-173-79-56-208.washdc.fios.verizon.net. [173.79.56.208]) by smtp.gmail.com with ESMTPSA id z22-20020aa785d6000000b006ddddc7701fsm1866578pfn.4.2024.02.02.09.02.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Feb 2024 09:02:52 -0800 (PST) From: Gregory Price X-Google-Original-From: Gregory Price To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org, corbet@lwn.net, akpm@linux-foundation.org, gregory.price@memverge.com, honggyu.kim@sk.com, rakie.kim@sk.com, hyeongtak.ji@sk.com, mhocko@kernel.org, ying.huang@intel.com, vtavarespetr@micron.com, jgroves@micron.com, ravis.opensrc@micron.com, sthanneeru@micron.com, emirakhur@micron.com, Hasan.Maruf@amd.com, seungjun.ha@samsung.com, hannes@cmpxchg.org, dan.j.williams@intel.com Subject: [PATCH v5 2/4] mm/mempolicy: refactor a read-once mechanism into a function for re-use Date: Fri, 2 Feb 2024 12:02:36 -0500 Message-Id: <20240202170238.90004-3-gregory.price@memverge.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240202170238.90004-1-gregory.price@memverge.com> References: <20240202170238.90004-1-gregory.price@memverge.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: AF1B6140022 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: fooqj3136dnqzby3ng51saen11usmw8s X-HE-Tag: 1706893374-726036 X-HE-Meta: U2FsdGVkX1+UbaxR1WLceaPQ9hMD3JEterOw47hnBJip8ydZKe2u9rNlgZE+VMnh1G+uBkjH7D4nEUUnQvEKxRdfVGHyJxdI+7NuM4wW+1qaUIUXGZEKVH6y9TfABh0v2NbyMz5ANDWbg7VXwLc8MjQKO+8DOxLpx6LM/BdDHMsVVNxp0kOer0R8JTJZHwW82NZ8dfWa12q+JtbAwTQG7fzs6aScUvJH6+Hw+SR54CP4DFCLAulTfMKkLqab0Ec0O8dt8wsWmUzv29+6mMG1ygA5h1tOqltiqiYuZA1HLRXwL5Q7DXu6Rl//pPPm/ritn4Id/KiE/sr7vSVHz9oE7ef94Vb9OxGWcoXWVYhMXybY2o8CsJzeG3wjEBpi0FiqMXbX+GhW7612V5SJTGLRfTVJvlbEL62hUTKBNVhaTPpyfcFyZTJ2VoAxdwVqC17JpSSIiz3xKmdfbsJezC6VFUIiMncKHG74LLeV1Hf8NRU6SjGHyG/YQd6upFpI5dGYWmlLSgNuHExdgaG8OPasCluYepfkdIGaGt0UKfiErjbB+NtvKo6eiu/8T9w6SO70Y44LbyUdmPygt/t3p7dhXYumkpofX1XEjN5irlTwFRqDNLnJmRHrKghUcoTq7OGDDyMNrd/TzE7QpCBo8cdz7p/ezbCncxszWAcuVItTrCJPksInbQ2pNL+J+RXmEhUiB7Ggb8neEXyE68PSdnaUYFClqD3264Uzo8fFXS8KnqhM4DNLmyX1MabEXuxnJaSwFr8o0dKNWDzxxvZq4SIrIMN2GNMiQbQ6sZSHMflU91RezdMpJwzK+gtJBBj0WZwaA5gBkiG/KfP9O/f1Ts6MvshE5yGlxxONprZpYDtsVVV9BXiRGr1M91j5+X2H/smo7qSIV5O4i/CgesGwxOSLzDS4lmGZ1y15Z6qBTpQaJLOLrxWT3yj7rzKzEqTkRNj9DBof9q1rZpC3wSUtiPt ODScTzzY swe7KwP/4xHmCMg5esLC/roySHpJUoc59Nva59zRN2RiSfMdiAgd7V5BkPBOohgbr0QUKdL8Ae4q4CcvQiFFbd33Z5psBBefOT5qmLsCBBms6ma5Air+5kCY3K17l/knWuDYZ57KCjaJPP7R6UTT5ZRjB2sT7kEAm334Ps54roVDzerouKKXUBnLI38LPbughT0GxsnYKTgNlZs/t5RPiT2/QRqyUEVndoN1qKLl1L+xR6V/DwL6UzCzhNiLTe4k8LtZOfaWO0E/Kc/1s6selVA55fcqtVTL6nyOT8xQop0aT+22h7UgYeY8B65SBTuijNZogY94R75rs0fSihxPHo6VIzUCX2J/K6Tc/v3qDERu3D/6DBebJGso3uu5UD+JSaQtYA3u1SyKSQqzrh7qrEO6k7IG1zF8T+7utShm8VsdQrzEz8iXUfKwzVdqTxXvsffUsFlhR4bgpHFkZyfY6FHqJG7V5uLZ2VgcBQuxKf8uCroV6/zGPS0FvncSFpjONQwc1n2pejD9pTvHPIYbEX2cwoqFdH91lg2Jo4BOJoH2Gh+c= 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: move the use of barrier() to force policy->nodemask onto the stack into a function `read_once_policy_nodemask` so that it may be re-used. Suggested-by: "Huang, Ying" Signed-off-by: Gregory Price Reviewed-by: "Huang, Ying" --- mm/mempolicy.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 41e58c4c0d01..697f2a791c24 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1909,6 +1909,20 @@ unsigned int mempolicy_slab_node(void) } } +static unsigned int read_once_policy_nodemask(struct mempolicy *pol, + nodemask_t *mask) +{ + /* + * barrier stabilizes the nodemask locally so that it can be iterated + * over safely without concern for changes. Allocators validate node + * selection does not violate mems_allowed, so this is safe. + */ + barrier(); + memcpy(mask, &pol->nodes, sizeof(nodemask_t)); + barrier(); + return nodes_weight(*mask); +} + /* * Do static interleaving for interleave index @ilx. Returns the ilx'th * node in pol->nodes (starting from ilx=0), wrapping around if ilx @@ -1916,20 +1930,12 @@ unsigned int mempolicy_slab_node(void) */ static unsigned int interleave_nid(struct mempolicy *pol, pgoff_t ilx) { - nodemask_t nodemask = pol->nodes; + nodemask_t nodemask; unsigned int target, nnodes; int i; int nid; - /* - * The barrier will stabilize the nodemask in a register or on - * the stack so that it will stop changing under the code. - * - * Between first_node() and next_node(), pol->nodes could be changed - * by other threads. So we put pol->nodes in a local stack. - */ - barrier(); - nnodes = nodes_weight(nodemask); + nnodes = read_once_policy_nodemask(pol, &nodemask); if (!nnodes) return numa_node_id(); target = ilx % nnodes;