From patchwork Sat Dec 9 06:59:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregory Price X-Patchwork-Id: 13485962 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 6A36EC4167B for ; Sat, 9 Dec 2023 06:59:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EA2946B007E; Sat, 9 Dec 2023 01:59:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E54F26B0081; Sat, 9 Dec 2023 01:59:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CA43C6B0082; Sat, 9 Dec 2023 01:59:49 -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 B60DC6B007E for ; Sat, 9 Dec 2023 01:59:49 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 8D0B9C04A9 for ; Sat, 9 Dec 2023 06:59:49 +0000 (UTC) X-FDA: 81546379698.28.54A2E37 Received: from mail-yb1-f194.google.com (mail-yb1-f194.google.com [209.85.219.194]) by imf02.hostedemail.com (Postfix) with ESMTP id BB34D80024 for ; Sat, 9 Dec 2023 06:59:47 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=byB+oTGt; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.219.194 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=1702105187; 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=5fJWjKBdWhZssADuPucbwh57xIICZA8yt0Ti8FZ2CXY=; b=PSv/EwsHqn/h7tAUf38yT8yJ2GUNM9GR8LZcG/Ki4+Yizr4OZ8elCEX+JITt5gLeAgbTlk yEiSMICMsBybc4XvSetTcCXk7HHYEww1nN6gSv6gWqe6DhDX9Nvni7vo5qi2f0U9lxsVD6 PTBNwXBVO9EcxiEcBL/X9Mv12ltbpyc= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=byB+oTGt; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.219.194 as permitted sender) smtp.mailfrom=gourry.memverge@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702105187; a=rsa-sha256; cv=none; b=k+aJ1Ho7EnkRiDCnGy68hlYQ92XP3RkWUYqTr6be9Zg3aSwqbGEZDO8detjHBhBhi85Ccl 793iQKOiEKNDys48UDrXOtj0WIUipwuZ0NZoLqQEhoPd1tbcSrGb6OH1/F4AMxG6W1C2cJ PA0M2ZAr9GTfg/Lo0jYIcqIGiVIrmoI= Received: by mail-yb1-f194.google.com with SMTP id 3f1490d57ef6-dbc38f3fbc7so2447809276.3 for ; Fri, 08 Dec 2023 22:59:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702105187; x=1702709987; 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=5fJWjKBdWhZssADuPucbwh57xIICZA8yt0Ti8FZ2CXY=; b=byB+oTGtMtbd7Rjplvw6fPy6WBgEPiqEsgqy8p5olx01+ljwS4Sl3UfGtuFege3+CR P95t2WvEUWpUfwh+1axQiERyD7jKmCJoj55BjpTrWagLP/6mXFkkE5vPqfQD1+Yp8eT6 KACWyEtfC83YfoP2MDEsEuG7ur9r82tG34jMiXDq2XZVD58ntRr8YIj29dlN0tjvL1CW D/cty8JPxsUNmoP/1NE1vZlFXlZ9KQC25AXTlOdseZ5PWqKn8mrhfc39fVRmcsEQs+YM z7KKIu17UdyPqFo+X/IEBmTTXQAz8sVwAuy6plWlKp1BZTb9tfU1epkt9Xvw9YX8ajK0 MevQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702105187; x=1702709987; 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=5fJWjKBdWhZssADuPucbwh57xIICZA8yt0Ti8FZ2CXY=; b=PedaSNSSCMsRVVip9fG6nRkqD9GNyA6NCGmB7Jnc8Se2NW40bS3WGPdKlSauyGC3cP +UYbqELyn88K/1PJu0dkzfWfqWwP6gCVFhEoYOR8PNkqrNTsDnMbdAW88JlGKcBZ3R/A IoLEmYtE7djD304XwplxRfz9u+czOYc54UtcR+6+um1gWe9+TwS0TnXqtyLvDohZDobh ca2NdbAUkJDMiXegl3B0eqZBwndkl2/AXyB03rolW2c67hKiABLfE0iuVF1PhIrvMH6E M69YaCGoPM7E8grqurznlNbrybkElwJ0uECgaqJR3IBLoHZWXPH/F0OLLF4swAMoCRMb rmvA== X-Gm-Message-State: AOJu0YwMNLcuNpR2iQpYW4f5jm2Vvd0pNmhiGmQ5cb47X/Udp3RJHaSH 97AylBq1M/IkjBRVs0yLksNhgwI6UsX6 X-Google-Smtp-Source: AGHT+IHF8XUqVMPhCWme+bTJUc1wnYluDhMFCId+PO64vQhrQCMsy2CrIazKg3YTeo7a1cynsK6z/A== X-Received: by 2002:a0d:d48c:0:b0:5d3:e835:bd67 with SMTP id w134-20020a0dd48c000000b005d3e835bd67mr948296ywd.41.1702105186764; Fri, 08 Dec 2023 22:59:46 -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 x8-20020a81b048000000b005df5d592244sm326530ywk.78.2023.12.08.22.59.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Dec 2023 22:59:46 -0800 (PST) From: Gregory Price X-Google-Original-From: Gregory Price To: linux-mm@kvack.org Cc: linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, arnd@arndb.de, tglx@linutronix.de, luto@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, mhocko@kernel.org, tj@kernel.org, ying.huang@intel.com, gregory.price@memverge.com, corbet@lwn.net, rakie.kim@sk.com, hyeongtak.ji@sk.com, honggyu.kim@sk.com, vtavarespetr@micron.com, peterz@infradead.org, jgroves@micron.com, ravis.opensrc@micron.com, sthanneeru@micron.com, emirakhur@micron.com, Hasan.Maruf@amd.com, seungjun.ha@samsung.com Subject: [PATCH v2 06/11] mm/mempolicy: allow home_node to be set by mpol_new Date: Sat, 9 Dec 2023 01:59:26 -0500 Message-Id: <20231209065931.3458-7-gregory.price@memverge.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231209065931.3458-1-gregory.price@memverge.com> References: <20231209065931.3458-1-gregory.price@memverge.com> MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: BB34D80024 X-Stat-Signature: mfaqozf1pwnmi6eincxbqfopca5mtsoz X-Rspam-User: X-HE-Tag: 1702105187-900715 X-HE-Meta: U2FsdGVkX19uKoop6wurAiBPn8SgExcCrbEqRhPtngJqAR1sFwn/adDleupZr8daOgb5ntjNdiELgs2MfY1iLBHBvPEy3j9llew9qhsvGSDsi+eQJhZo/wqFfnI/XKVUY6QZQcc3AbVZpJgX0qqBvi8bJrU7eO0SDpi1BJgb/RxeVanpibUlkJc/3jQ1UPwv1Un4y2AO6MPiWiX0s+ykrermoMKnR9znaME30X21MROEPnf9yXagClqejnjqBlwgkae52pufpUqivxc5jY5/EmpSSyewKxQugnNALZs4j2miq+e6ISsHeG2L7anz7Mz3K9OOsghiiYNBf6IBtCdN5vdMI9g8K//ohSWDaBSPR8Su26Ci+S9UExc4JdJ6YT7T0sACn19xrnxwRY+kBWBWeRTw6E7bt6hPovQvc8HvYIpxSSKGGIVULruou6gk5P/mvmr7+4FblpIYFIlEyplnxJG1BmSqXwfKh5iz/O1Vtu2w5Iv2s8wVLKJAbuKEDmkViOehkTZcdseksiRAfZv8+WREhRzx21pnqa0m2dSuxV4Yy+6MkLzAIPQptYiVqKXoc5y1Dhqs4y1X89nSicL4/RN4MTNStpy33m8dbIk80/sIBZ33V8FlL7AC7BD16DKV6c/2I3EKSdlso847a6wKk6oLfnBJRIzWArERZjzuaQnLXQGH1/rdyP0E7jKacjB9u3pELxuHLw9VR/59GSU77CCplAu590SA6UxQwpyiS9xhHCe/4wjNQJS7isGl8wUd/8IZFzPNyeO0WzNJ2Y3X6NJoCGM5XxBHnWRrQIepzp0zQVTiL72Y8TexzbghsVM3dSimYmKLa+j105snVGkAIyRAaruB/TxtGN4Tvkms897e6FXeMApzn9kJ03yIujtL9gVdg0w7ijME8uZIYlEhhhER6MYgRj86DqEJ+5cb/Eh3bpCmaqxlF/UMIKIzBSR0RR01WlUNNLTb7+jh2gP 9RI5yFPm m/LURo2kqhCiitHdScPMKxesrQISmC0Mcub9DRbLjtX4Mx+7bbt5jPF1MdR76SPti5RMwfUUWVJJPVv5qWWjmMM74oYgTQUH0+ebV0kynh99N8SL/FmJ6lhAC3h2WX+teCg3++gcZHtuWoamivnneFfQjSNVlyNuyjlCX1JBYVmao0L/MALL0HwjGtPjRwFvIFgr/Q/kX15YQykRkUOWic0OsiT8WekIl9+AvAubj9mbtUdhJyJAzKlJR/XryXYoPU29dP5giLMPS8IQ7N460y2pFX/lPN0f6C7+/1EaQNU84CiFbqKo9g4b/BoSPbf2NTw2HU/aHp2RwAOhF8iH/sPhqunEbGPba7DSurzxiwveoHUS9URuTE/viS2jlhglka8SMtBEckw2a5jUEObRa7csD6dKYRBEssmoGpgku++RQHuIWmc7uRQCxqrLb/WNo9hRFPjYPOpspwo+5AMcOgRE4E2bDljWZ8gvVN2z2/Gi2HlLk74YWUrBtmb3V+kqskL/sHTe7kw7A2+8= 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: This patch adds the plumbing into mpol_new() to allow the argument structure's home_node field to set mempolicy home node. The syscall sys_set_mempolicy_home_node was added to allow a home node to be registered for a vma. For set_mempolicy2 and mbind2 syscalls, it would be useful to add this as an extension to allow the user to submit a fully formed mempolicy configuration in a single call, rather than require multiple calls to configure a mempolicy. This will become particularly useful if/when pidfd interfaces to change process mempolicies from outside the task appear, as each call to change the mempolicy does an atomic swap of that policy in the task, rather than mutate the policy. Signed-off-by: Gregory Price --- mm/mempolicy.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index ce5b7963e9b5..446167dcebdc 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -308,6 +308,7 @@ static struct mempolicy *mpol_new(struct mempolicy_args *args) policy->flags = flags; policy->home_node = NUMA_NO_NODE; policy->wil.cur_weight = 0; + policy->home_node = args->home_node; return policy; } @@ -1621,6 +1622,7 @@ static long kernel_set_mempolicy(int mode, const unsigned long __user *nmask, args.mode = lmode; args.mode_flags = mode_flags; args.policy_nodes = &nodes; + args.home_node = NUMA_NO_NODE; return do_set_mempolicy(&args); } @@ -2980,6 +2982,8 @@ void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol) margs.mode = mpol->mode; margs.mode_flags = mpol->flags; margs.policy_nodes = &mpol->w.user_nodemask; + margs.home_node = NUMA_NO_NODE; + /* contextualize the tmpfs mount point mempolicy to this file */ npol = mpol_new(&margs); if (IS_ERR(npol)) @@ -3138,6 +3142,7 @@ void __init numa_policy_init(void) memset(&args, 0, sizeof(args)); args.mode = MPOL_INTERLEAVE; args.policy_nodes = &interleave_nodes; + args.home_node = NUMA_NO_NODE; if (do_set_mempolicy(&args)) pr_err("%s: interleaving failed\n", __func__); @@ -3152,6 +3157,7 @@ void numa_default_policy(void) memset(&args, 0, sizeof(args)); args.mode = MPOL_DEFAULT; + args.home_node = NUMA_NO_NODE; do_set_mempolicy(&args); } @@ -3274,6 +3280,8 @@ int mpol_parse_str(char *str, struct mempolicy **mpol) margs.mode = mode; margs.mode_flags = mode_flags; margs.policy_nodes = &nodes; + margs.home_node = NUMA_NO_NODE; + new = mpol_new(&margs); if (IS_ERR(new)) goto out;