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 1B657C47DA9 for ; Tue, 30 Jan 2024 18:21:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9AECA6B008C; Tue, 30 Jan 2024 13:21:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9372D6B0092; Tue, 30 Jan 2024 13:21:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 78B9B6B0093; Tue, 30 Jan 2024 13:21: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 586A46B008C for ; Tue, 30 Jan 2024 13:21:04 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id F23FEA2109 for ; Tue, 30 Jan 2024 18:21:03 +0000 (UTC) X-FDA: 81736794006.19.74E83E4 Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by imf01.hostedemail.com (Postfix) with ESMTP id 224644000A for ; Tue, 30 Jan 2024 18:21:00 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=TnralviY; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.210.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=1706638861; 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=P3SsBm0r3LDCnRLkAzwTVLxQ2sFbW5+S1JsSVpdLy4I=; b=S3Y4Wcuu0Q1Jp1MMmB2Ekjtpn97pUnt1rizEDrygJY2/8zWjWrRmCRWCHxTQaWjN2E/eGI BtaALM/RjemjL2u4Nj0p1F4BsOjolbCavDxzc0lfZ4ibn/KjwVufppH3czi365QD/PQcTf kTv0qeeUr1Ruyee9nl0HT83pNFdv17g= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=TnralviY; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.210.196 as permitted sender) smtp.mailfrom=gourry.memverge@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706638861; a=rsa-sha256; cv=none; b=pkI/bhSKgQnqOdM3AkrapqGaltn4MZ4pyqMIehZ6mcjIVM1q9FbbHubMT0lGejIDxaJxId 2T0QRuWRT18plA85tEYTlw5l6NANsuOuQfjg/8sCnwaJFwMQM1FdOKu/y1iahQK1S49v73 Mir0G2vg4gZQeQMN1TMO8eLpoCt6UIg= Received: by mail-pf1-f196.google.com with SMTP id d2e1a72fcca58-6de28744a46so1169159b3a.3 for ; Tue, 30 Jan 2024 10:21:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706638860; x=1707243660; 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=P3SsBm0r3LDCnRLkAzwTVLxQ2sFbW5+S1JsSVpdLy4I=; b=TnralviYQHM91NhaG0ekKeKIfhpWNSzOrYcPUgpI1f02CYtGv/CN8NeGhkxzY5xQuq IuACRRnAyk50Mi5fZxtBUnZToypFa8iLSTA1aLGFB30MqoACaQFHL32VRGnF1EAvfl7H NF+EFHSepy9R/x8PPiezFoMXYJqZpT3Jqx5WQ4QQLiYbtOHLM60mAa+zBipr0/8x1i7r tpbaqM3t9gg4XliQMUvPZv0r/d/d/V17xG1dKRyI0z9lLejLA+iPOzaNLGTXGsXRWipA L+W97ppGH+9I91lFiLXFcwYqTNmw6WsPn9cx4Q84X3Nc9/x9eFr9KpAkQ9XtEplgJoPf ywWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706638860; x=1707243660; 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=P3SsBm0r3LDCnRLkAzwTVLxQ2sFbW5+S1JsSVpdLy4I=; b=wDCU3G+J4asIanjMx2NaMggU1ITDAT0TrqYXv9Zglx9GmHMEvjuMH45tB+HXt7ghrB ohKiiT5nOAR+waNPUHLgQYILu3RqSunMlUrOu70DMsJljLecCKkDlq2iclftpO62tALJ 3UGgvImP53EDTbedVB9eiwRq/E1+W+RBLegkLvJSAmTzQttb8/0VAWP4ZUJl6rgzK9su 6aVNVjYd/+8Uc9xxXJdFuCC0BSs8MPlNuAidVnZfkeFLF0GG1y+E3Bm2XWjF2QE9UBGE VHXAandDifUtCHiPRdAKyVVnYEP9kzhQi7kgMiUsOUyq53MDbzuVrazKkO2wggix9IjH Whcw== X-Gm-Message-State: AOJu0YwhWj3AAoVE4tNdXBfgPhEKuTVwaAnGt5WEnKh2KuRehPpZe33d ZWfYS0GTite6AzqMeSXr7B/GcliZpTFrq+M74JU9NQXQDbyXqn45eJj4DbYhb/vo X-Google-Smtp-Source: AGHT+IF658u5j+JGDTlh3pv0qgLkUrtejP5nowPywOp5J6L0lLHIY8AKt5LB2Ry3EAAY8M3F8cSZeQ== X-Received: by 2002:a05:6a00:9390:b0:6db:de9f:5f10 with SMTP id ka16-20020a056a00939000b006dbde9f5f10mr5976134pfb.15.1706638859932; Tue, 30 Jan 2024 10:20:59 -0800 (PST) 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 o64-20020a62cd43000000b006d9ce7d3258sm8460143pfg.204.2024.01.30.10.20.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jan 2024 10:20:59 -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 v4 2/3] mm/mempolicy: refactor a read-once mechanism into a function for re-use Date: Tue, 30 Jan 2024 13:20:45 -0500 Message-Id: <20240130182046.74278-3-gregory.price@memverge.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240130182046.74278-1-gregory.price@memverge.com> References: <20240130182046.74278-1-gregory.price@memverge.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 224644000A X-Stat-Signature: pzem3uhe18pjz4snpyudtycfkygnsk6h X-Rspam-User: X-HE-Tag: 1706638860-374085 X-HE-Meta: U2FsdGVkX197qtZozaIjAj4wdyJ+e1egydtZD1GccTRV1mtrIutLgBo5yvxJznsTPXIRdT2eZ51WBHGh9rqvBywkd8Bjh/vM5ls8mcqZVjScL1rRLM5BVzTo6MBU4uqLrOLMsAMHpFh9DdZY7RDKiqEHYfEajMsXEOPAvwFUvUHKMfK81G5AER/1XeTUJMzGBjOnZbqoc8+d5DEmF4ydb2GIYWFeHJSfgMCCtEuG04g4Ay3TXTRXNNYkcp8KsqvxUY/V8XgxM0snxDGKSDJrT0ASkcpmR4HDfi6aExEbJNNmN6SvMcdI5IuxCowSk8WCd9I7k62HU67XExO7FNXltSOvtzTRcl9K4I4ONGDyNNgGqSTudgJ3Co+dyprCexlGaHxw2c7FcrA0Wmy1E0rQj9Ny4ijo91hZ1P09eP1v9bj4QNZkuhNsNzUEyIg3kjXwbk9rIyZTa0GeHAY7+Vln5J6qEDfTLZ4Eeg0XqdsqzgKuRBJs3i7sbku18JnVf9P62DmW6aDbZMP5mXK7GcX4/piM19sWxDBYN7sB5JzLdmEYhUBqoVzBqf9m/K1jiAEJNDmOW9747tP00iDkQeEUKxbXi57fezrvVNRKgeA8E7Hj8KN/F7nJEPILfSGlPZ2Gno4a2s06mmnzmyoMTI/NS2M35jNf7sQ1I4lZXeFjfG2YGbNm5SOoZeVnmw9ODqfSz00tFytmmKQMRqExXOdS7h8pUoE8F5+MgX5Z/HFJnB5ukimf/FYRmy04SOjRh9TLCQAiBow3m0/2WI3AJd9Q6M2iaRPV6vvCB2I6LxbDLwMlGzbFo+OuC1thzLd1yCIkcpae9VWnjWo2sgiTuU5bjdFj+uhT2aWQhvA0uQIAAx1vqMN4wJkypKV6VcUcK9kgUGRSRIGh77oDLHDS374uFnd7W6pgoo1ek3s1POmBxOd4z+D65DiGxD8gPBDlCgmgnQufBpPc6hLTWGAxh8e /9eqy/mN QwsSDs9VIGBlZdkVbL3zQQlb9PSEbHFFHEa9RgU/Ou1u5Nu4PH/RYKfIa7cKKFQzZavdQM6t2UyO+HqhPi7OYq5JbmPNZeez7YsqgwUvfN1/E1JGzg+OtJvZKVlOD1txEvZK7ykhqDNai1KQAW7+QZiUR+K0WiJcNukS/NqbFP+OV8sdT0Mz0Cijbp19JofT4Lften0TectUViF1LfKLb1OOI3yMJTSbY3fHIqArD5p5mjiXM+atNBJMp8tapEFDjbrXraM3DbmfzFqayw8OMI/SwzVy6iilAPaoMFL/7oNbcPcOKSR6UE4f3bM5cM26pd5Xy8qulINaFOqWmqh0qKtbiB6fP3u+7C+fJw74igaZLjcNsES5rqVbg1dIR+LIEpXqVLaQoI+E/7KHAIbjgCcvbys5Ly7qBR/jQzpcPx7x5e5CwxdbWezVuzqzFXjNpPaWHy8QuJ8PcWc+DnRr5IFMCSG6Vq4QjhR9gKxITdHeZriR3BiwbP4psDdy1M8NpdBtRpnlCZOs1Bjx7wcx4GwLE8p/lr8tWFqzuY+XYckGe+MvTY92HWsqnN5XAOxrpAOnj 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 --- mm/mempolicy.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 440128a398ef..3bdfaf03b660 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; -- 2.39.1