From patchwork Thu Jan 25 18:43:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregory Price X-Patchwork-Id: 13531498 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 8B91EC47258 for ; Thu, 25 Jan 2024 18:44:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1A6AA6B0078; Thu, 25 Jan 2024 13:44:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 12EF96B0096; Thu, 25 Jan 2024 13:44:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F11406B0098; Thu, 25 Jan 2024 13:44:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id D73CD6B0078 for ; Thu, 25 Jan 2024 13:44:04 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 7C09D120E6B for ; Thu, 25 Jan 2024 18:44:04 +0000 (UTC) X-FDA: 81718708008.08.97FB44B Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by imf09.hostedemail.com (Postfix) with ESMTP id 97B7114002C for ; Thu, 25 Jan 2024 18:44:02 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Spye/DAz"; spf=pass (imf09.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.210.195 as permitted sender) smtp.mailfrom=gourry.memverge@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=1706208242; 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=VzGhMbeDHhADN16eti5ZGSWn33ZQML077ijAcKWfxyI=; b=RsmJJI6TOXbLeAfbrYXNbqReqy4XC2oH05IOQRF58YPVSa9CzaPN6y5HWYnRr2M4BhHfpc CimEk8H+nD2OvLAWJ/IoDrAS7Kq5NYRdIOFLr2zgUEK8KPWdjTU5UOPaHZ0/4uU1CzL63S Cdi6Z6tA5cXrLbX+qJLHMWh0WFpd3XI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706208242; a=rsa-sha256; cv=none; b=SxcM3Gks7Ncs95lcuG/kgnzRzDXxwzjAXfj9d3BRrRzDQRceGIdO+SnaI2LuR5k8Zr0Bvq R9JpM2K0S9Uc09/zNq2ooFnyam8aki8V9Lkq1NZeO74RG5OanHWP+wgsCs4szrFI9s6ToG WPIM46DeVETfQcavuX1bWVA+CcOpubc= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Spye/DAz"; spf=pass (imf09.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.210.195 as permitted sender) smtp.mailfrom=gourry.memverge@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-f195.google.com with SMTP id d2e1a72fcca58-6dd87e7c355so10721b3a.0 for ; Thu, 25 Jan 2024 10:44:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706208241; x=1706813041; 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=VzGhMbeDHhADN16eti5ZGSWn33ZQML077ijAcKWfxyI=; b=Spye/DAzCGv/232sllAKvgsmwwKDcYNFdhhVoynj4aFiwuu1t7oB8aLVmJKW2r/jIa uBwhJbFDbSuD7HvhCjyY2NfCsvt8OTU9wyurrpA5TcAsmk+7xvZVJgrQvP95k5iXTVwU bhVKdxhwg1vvFoVwDTd71mWeG8pU3HW8C/L47tTMaVk5PCoQE6zudTZ4mkGFrjG8vjHR CgMoNsJRKzjKSsAUZWR/lY58V2S+lxtK0NMZ/iq2d9jsJlFWlnwoZ/+QK4rWaebzNLL8 h1ZGhE4MQzGal8y349bhBynCMD9Rz8vzPYG4ilojUjrUaUmzl5yn3UrGBWbK9IvprVlO MelQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706208241; x=1706813041; 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=VzGhMbeDHhADN16eti5ZGSWn33ZQML077ijAcKWfxyI=; b=E9mowVYLVzN6sutCSJj559uRFGtnDYGiTbVPY/jhuIdwNrhC14aVoywT3rCnmGCU5y xEL8rawxeao29g/vT19Zug4sem4KJWwxZwexAMmgOqOZK0OeD695LFfBCbXl46dxev3Q MMBbFXhf0dOxqURtnmCdqLzbnwqbIrMLXBsdjVZ9cAAD7X/dnXyUAy/EV/TKunA+Ilbv iztlnIPztDbe0qo6g/WC3bypycPi9mBtXLIYD42KfLLcQwtlwuRKCnDLvnYukkZBr251 U7qsI59Zn23Bdu59KaQN+RDBpBQAPb0KylUJ3GYtpW75NMteXN9Zi6n57FDFmhypJH2i 2rBA== X-Gm-Message-State: AOJu0Yw/owPdjh1ln1myROrTef9AmFf9uc9heJTbTXu/l2xtNQTsmCiO KMluD9J3WtXMMMSTFU60D9eiR7hnSQmB0Qk7XqAhcumP2D3RqwMuOnBbDXT6b67H X-Google-Smtp-Source: AGHT+IEcH1Tk+08R16sVhPM8oB55q9tIFfKiHt4xwLriTagfM09GAnko6cUAoLV1xiWOuP2rG1zkBg== X-Received: by 2002:a05:6a20:1e52:b0:194:f8dd:4277 with SMTP id cy18-20020a056a201e5200b00194f8dd4277mr81192pzb.106.1706208241161; Thu, 25 Jan 2024 10:44:01 -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 p14-20020aa7860e000000b006ddcf56fb78sm1815070pfn.62.2024.01.25.10.43.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jan 2024 10:44:00 -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 v3 2/4] mm/mempolicy: refactor a read-once mechanism into a function for re-use Date: Thu, 25 Jan 2024 13:43:43 -0500 Message-Id: <20240125184345.47074-3-gregory.price@memverge.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240125184345.47074-1-gregory.price@memverge.com> References: <20240125184345.47074-1-gregory.price@memverge.com> MIME-Version: 1.0 X-Stat-Signature: 4bnmtuckj1qonemy8jutqrtgfmatdmya X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 97B7114002C X-Rspam-User: X-HE-Tag: 1706208242-723468 X-HE-Meta: U2FsdGVkX19NKMn40OjvsUlCqDr/Ai6wvH/+Ye2ZiAuNppRtLJHC64RDfJqX0DMLTi4A0uYdKpDXJvZhEBrb/fQ5YWy8sOoJ86vvWR77jSwBxfHrK2BpJnkhnSDKb8SyeZoCs/Vp4yVHjx51xScVN/PTie/xMSGb9gzM6N+LmTBFJj30SThhgux/apN9ipUNAi2pNgqF1f6FwYHnj0NtM/XYBAeiV6iV1I2Rn3xIBw2N9IpDptN7FgMIboIR0V/GGl4WSpEOQK+fCbzG6e9uTbpiwjjR1cuWNJOgnno6xyLHj6975BiHT1dptk2eElnQywfE5rNrtDvixEOfLaww9veSsM5BVK0r6d+AMXex1EMSJ7cLsiz1/T3BznE50Msr+7ya+oFqI1VYl1zQpg7tA787rh7UxzE8m4NftrRtdYvqdXathrpNat3rj3I2CdCttnmi41xchvBdyNewQjXo7PfeJFQn8E/A3Kxnhm89COg027EzLNKHQSUlF0K4uY/eOi5+fIV4IUOn2XEvT1seUHskaSeA2KcrFtJuYqpLuAOFJ0XcFbRm7tfi2QDBX7HLJ6SZcPJIeYxw6PE9tXlqrJpFrzC4Iof7VXIWYHaAWJYCizyMX/ZrmjadQpyOdliqLa/NEVCsGnasIlH6dTgIcB8LtODabcuqVxC7omtG6zY7DYJL1jEfC1o6+7fOspfHO8qzINKwY28V/QQD75frMyZrdDVnEE7suwNOFp2qCCIyGFnhMP0yjRCDuxi0XhURDUgYIxDTf/Z9K/uMO2/scdX9Q0EzA07BUN+t5J5D3amzBATACT7jqLsO0OgBZHpzPXtsLdUEF/+90IDGL8X8nKIUYYzzRHAtZJB2XgmrHNeL7NKLdgzo9fNTEpBq6A52TtB4wPPr8OcuvsUQrqMqgS2C3Sr354njtxvOprosMI3yExVK+xobmhHGT0barqaFR+oABNyNIpDAlXASVwv mQWX3YrQ YSkz6zWiyarUrppWIX0rzs1STta30MQtmG6cmv4E1Evek7VyDs2SEBJwcz5xbmvUByGHYiLT0cvp2HTnSwtC2FDu+sJ8zF7inJHr2PzUfTsyxbWXEApomWHd2+Q/13u3R2enKIUC6xOvbopgMuThS67RhRvCGGU9Jy76ZJ+x7PrQgBxYv3LI9d4/gX/pWDYYSSg3T6LtdT2nWY2uTUoCV/f3M4TQvyWb0TE8kyxJZW8qdMa00peTZiiDhwjrT2Ec2RJwbHPoIY7s8eExUl6fGzk7iXEig2UbYXw/tF/Z3/EThs+nw0H6Mv2GaXDIpVrIZB+vUzoW/5Q5vGdBWsJlznRFfzsvOVBWwzVqDfrCa9GcMnEsWDJecBSq2NRsCYlLXkTdJY6U3r2Qvc3FpEAequsjl3JZTMgSuNjoXv8vHmmSkeK4Msj2zpMGfshqxarCGrFeAidQbrg5hXntlbcbXx4/RhT1wgyX8DqM4+37tgFj6gPNBOv2w8UZWvdS9XzUQ8QWbopPgRiPHVxT1rlpN+v8OHfD5/HG/EADaA+O3GtppjA8y9memJnYepLnNimBWkOJA X-Bogosity: Ham, tests=bogofilter, spamicity=0.000172, 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 f1627d45b0c8..b13c45a0bfcb 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1894,6 +1894,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 @@ -1901,20 +1915,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;