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 D9289C47422 for ; Fri, 12 Jan 2024 21:08:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5CBE16B00A3; Fri, 12 Jan 2024 16:08:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 581E06B00A4; Fri, 12 Jan 2024 16:08:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3F6DE6B00A5; Fri, 12 Jan 2024 16:08:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 2EF726B00A3 for ; Fri, 12 Jan 2024 16:08:45 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 08582A0698 for ; Fri, 12 Jan 2024 21:08:45 +0000 (UTC) X-FDA: 81671898210.03.11F0214 Received: from mail-yw1-f195.google.com (mail-yw1-f195.google.com [209.85.128.195]) by imf19.hostedemail.com (Postfix) with ESMTP id 31C611A001D for ; Fri, 12 Jan 2024 21:08:43 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=baWBiCHk; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.128.195 as permitted sender) smtp.mailfrom=gourry.memverge@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1705093723; a=rsa-sha256; cv=none; b=MBhPr9cSX5tG2braYPaYOP2zFzFTp01iCdUVYF/0JIlZ+D+fLG84FKgJzkCnuTQ2oIdS4J TEb0DwtEncVxOLl/OOWsx4hpt/5IsC3bNRpO7HuhwrPClDL27qjEUU0QnqljSVLMPm6TXR uFOcGzdRq0bWRRiYKoDWtK5BKhUpw28= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=baWBiCHk; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.128.195 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=1705093723; 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=Q4S+35DUquzzrJ5+7T5okVgy43cWVNAQAsJj4jjuv6Q=; b=SAwpL/h7wTcVIownCTbVl57p2G6k6JedZ7X45+U2qsRcz79WR1RdwoJw8yQDIuqfqmIf40 Yq+uTqmkCf1H98es0PnqLKcZ+vaVmJ2TJ/f7ciidQjRM9fOzM0BiS/K8msCVzaCjbYTIR3 FcTxQnk8sio+e33Zu59fFpCWsy/uK6k= Received: by mail-yw1-f195.google.com with SMTP id 00721157ae682-5efb0e180f0so74159927b3.1 for ; Fri, 12 Jan 2024 13:08:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705093722; x=1705698522; 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=Q4S+35DUquzzrJ5+7T5okVgy43cWVNAQAsJj4jjuv6Q=; b=baWBiCHkMaKTV0lWtfeoDgggvy7Gamm+IfvNEqJh6Z821Mbv0ZTpEnOrXDFo0ziUoc pdin/dOBBr2vxKVk3EfoY/C0oSPem6tEopS+kCwpbJeObHgTKyArRwTbaqzdWRSmOhJx quzHjn94it6Z348RboMCkI7Tf4C7CtCLfXZWv8KXbVAw/E1WetVTs9CS/2vxH7D4GEp4 Q7EEGBbt0PLkY5VyeoXDoAWGrrs+eLKbJPz8cYR1PqTbtSVjr04FT3mru4BjRPTJVDs8 YrVFWQbKyoAwKNf4zm8btkvg4u6KGoZ6Bg1i4Y1oqdtLSZad+cjvR5nDeSx8PTY42HO6 Jiow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705093722; x=1705698522; 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=Q4S+35DUquzzrJ5+7T5okVgy43cWVNAQAsJj4jjuv6Q=; b=kobOwZQjwKZ4bbjTiCiT1q/KIe3L3MrJqczWZUY3Y1xUn966CHxx5MGKURQaMh4BQy xmwLfCoBM1GlyPWvT5vS08RccjGfrXgbX45MgvIHrW/SjhhxRXcO7sly0lK1ThE2Nk1V oQpk0FM6WT+gBSErs6QsAYp7I3rdvk3fMU9/dt1YtgjWhfTxAWkZYYL2/a7EG2an3LHn Xy1ahu7FbO4/ScDh8X4k86WcsbEIK9Xo10OJfnycrNuSziFbW9LZb4irlHmHgfviF2CO ToMaRCRN99zm+l3dwD4LaUfRMmlzaBJQGyaMhIT8yq+8jqgSx4uFg+uaGMicoEmPidTj Ybrg== X-Gm-Message-State: AOJu0YyobR5DWdADURmMohvc6bg7dvV/npjvkWhKsg15F6m6n/Gy7q6O BhPjm0+JpjInzf7Bf4cZj6ZFpTXpqcSmRLk= X-Google-Smtp-Source: AGHT+IGRsPgz+XwLGzAMTdr4TneBPwC3lpqbDDfg8jvgpy1U4E2BXmn++/2IbozqwE6E9QDikpPIqQ== X-Received: by 2002:a81:f201:0:b0:5e8:34a0:5284 with SMTP id i1-20020a81f201000000b005e834a05284mr1924773ywm.20.1705093722114; Fri, 12 Jan 2024 13:08:42 -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 ci24-20020a05690c0a9800b005f93cc31ff0sm1635518ywb.72.2024.01.12.13.08.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jan 2024 13:08:41 -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 2/3] mm/mempolicy: refactor a read-once mechanism into a function for re-use Date: Fri, 12 Jan 2024 16:08:33 -0500 Message-Id: <20240112210834.8035-3-gregory.price@memverge.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240112210834.8035-1-gregory.price@memverge.com> References: <20240112210834.8035-1-gregory.price@memverge.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 31C611A001D X-Stat-Signature: rerbuw9r6qowrip64r5e589w1tsjm6rk X-HE-Tag: 1705093723-394248 X-HE-Meta: U2FsdGVkX1+zgWWlN/3bycDzkudIOdtrivkb2dFd6uEddZRy1rB57dSBUvxrGBvjOVTa5B/rGQezevZ3E5LID6dgXcZYV9swvncajEUmFcIW59m6EW9okPV+MKELanBfQD2t8Zi0muif99RBPUhbFgUAmdGcAulLUJOlk0YQxDYm0AO066h76bFsY/0CGYo/PpnZT3f5TaRByt9ypBv5rrEh7gdhmhDm6Z63Uu6OMvwfU715hlYgNtCO2WM+KIT76EhbIqHtQusUwGKU/BSJ6G7wmxLHhYMelQJMXCnEFN+ubAHNJgRQ8wcUsAkxU8dJwi2NB5cT1qGx3xO0tntc4q96jyQsexJHSkz4fi/Y2+UUVbeDLMJwkeVFITnxqq0GjwQwi9BvEuJFKRd5cUZg7PQuvp4VQ4Isp/Lv4wcbTucM5138Sz14Qy1ET0IjSQ4i5t7jt/6b3ZwFQOULeg8EOMTMKTbiQmLa+2gTxGMmTQ2+3BGViqiMY47EKKEWRvqUzR42rPWGPhv3eykx+JnyNeRIJhgt6nyzqcfU1TqkomDzGroXRtCbOOathMg0AtilyWD/W8OcCj8yZp93OONa6pyiQSnispjiD5WhMKlBYflXp3iOPYSYvj7mt5dbtPZEAqAzp8HNZhQ1Bee5tUa9FtEwlYjb/KDcVXCX2OUi2eJH4ERvgjrmPK4FntP6P4BDIU2QchoDe3kBpoY1XcFnNw5AwF4asFJMMvcDfcAsW8xGHrMs0XEkN4mx0zTDv1IJKzGEsAYepgvLmNLQ2/dgPL8bcEP3tH5KkxmhhyvWWBkFwyI8NToLM0HXWf5Rf6ep7XUfo4PGS2EDVq+oU+i+V1itztaiiQ9+M65WyguSs3cD4SuebN5RZOZf7MjGEk1yYBFNH/5OjUmeXK56AbVmfxaFgYSrtYajOx9qw+B4WurEtbLv1RX9MJKyfumPCqYyXRwPAecvsqnLvRMQudV RJQHm8wV WjEPOp0fSkBTgwxRs2TXMMlLUE8F0UrLwkqfiSEveBXHbWUWtxDhsd+f+MEqbRDoknoPEH5VoO7g8LH4pz7S0KsN2RegtTj947HxxIS1hbfrq3KiyGlTzqsjIYclUeiffwPqhbCe6kkxLwR4hJIpltoodIJQGb1Us2yFRdr/6w70sl9cKQv27l9ns/lrD18EkmD2FuuDHC5KnekOLN+PNALrq48BfH0P/A9MgMBOJyIt0ZMLaj5e/wSX9YrKULSmlf4/ITA2p1KJJ7UxHy+CdVhxjBkCOHNaoUlbMzRXhHXTEKa5dfoCfUzmaPabmntDjajYPsBhdRI3i2jkwna6UHm/tKHk0am+JsBQO2tY6oV3EtqBb1ACxS4rzDAY0QOftLy8wQ0/udxXFFFBSHB1yQn0JqX04aoGm9GqhJhPToudG6w0cKfcOxBRpWdaPJyE0UdwAV0jQeTIQXi6ohkEwrIAxJYBKO7dbAJBa+WTmZz+NXJuNVGttHNboCrTHhJWfvJ7RS+lV2JTqT82/vEelmtjY6wEQwUHOvnfdvb7SbTBdEf70UH3FapF3ffHi7LVCk1/3q1EaeUNtDboHg5lz+tMJLw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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 5da4fd79fd18..0abd3a3394ef 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1907,6 +1907,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(); + __builtin_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 @@ -1914,20 +1928,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