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 6D012C4332F for ; Wed, 13 Dec 2023 22:41:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0871C6B043E; Wed, 13 Dec 2023 17:41:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 00F8E6B043F; Wed, 13 Dec 2023 17:41:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DAF436B0440; Wed, 13 Dec 2023 17:41:35 -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 C1EBC6B043E for ; Wed, 13 Dec 2023 17:41:35 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 8FDC68039C for ; Wed, 13 Dec 2023 22:41:35 +0000 (UTC) X-FDA: 81563268150.14.B68C9DD Received: from mail-yw1-f193.google.com (mail-yw1-f193.google.com [209.85.128.193]) by imf28.hostedemail.com (Postfix) with ESMTP id B64ECC0009 for ; Wed, 13 Dec 2023 22:41:33 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Sv8fWItg; spf=pass (imf28.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.128.193 as permitted sender) smtp.mailfrom=gourry.memverge@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702507293; a=rsa-sha256; cv=none; b=3Eo4/ZZNw4X+LaPOIJy1alChPY1jRLlphwZOFHZ9Jz81v9hm1IKJy3gApduOc1G9nKxh91 C4zw/oeHXM7SyQGs5Mm3Ttw0JEQwnH1aJRWuo08T6ZuDOYLYNjKl+lW1Jy/xZVIqFxfY9C +jJNaSP4qDiCvxv2zNBL0QdHhI89yM0= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Sv8fWItg; spf=pass (imf28.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.128.193 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=1702507293; 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=kuinRDVwejGOUKweWBi5ia3P52oTVKxYpBkFwLpVf+w=; b=evmz7tfllQdKg+sfuHjJw2Y6+GYPsNkLuK3SYdzDplnMlQ2LWCCsUH7uiNzo4uMYw2Imab Xdtk9VhxxZ45JAs2TM5BdcClgYn32qrFosh6VxWf5ZznB28tiG0cfmaCglkD9wBevqaV5v e/cIQ39Iqfu+qZLCRyG9aKTkAiwuHQk= Received: by mail-yw1-f193.google.com with SMTP id 00721157ae682-5e2f9e9a2e8so9246847b3.3 for ; Wed, 13 Dec 2023 14:41:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702507293; x=1703112093; 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=kuinRDVwejGOUKweWBi5ia3P52oTVKxYpBkFwLpVf+w=; b=Sv8fWItgLW0E1rT9bZXI5fZZ4G/+kn2X0PwvyNWo0j+VeWPfzQShoKQfi+PSNtAoz1 PNCNqHewi/1wgZ+qdFyIlZTxxu7lG6mbdDgO3D9x2J0W2Zv5CSQ8cYkOG3isWYw3j5O6 Q7ABL5vBMeG/KBj80+Y0W9BkeZowdDf6fbs9/mgiEkbJIcydFCE9b8omCBoyjF7UUbZL sNziZ7iksYUEjlqgtTS0aCgLcTJDlBhcQENOi3sfYwJcCJi0zoeZYrqwvLWEm/zfQ5N/ 409944sYPvIhNBl1fqIgYiHuhRfNkiZFwspRiDJW3cME3yYwjrfnTWZhDEbfmaQhIKjK 8e8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702507293; x=1703112093; 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=kuinRDVwejGOUKweWBi5ia3P52oTVKxYpBkFwLpVf+w=; b=uO4zMpd0AxsO6aWDNj1F3keHKQ7VmvwDhkqArEbbghrhttXYBtRyXysdGHk6LKivEC r0SDslTeXpRO5Qw0fW7zc7KznsBJMhI3FjSU0rWT2D4nGsXPkAN3aqXsPCVMudGxVGln hZ8kGrjCGNMbzW7BQBRGniI/sXz6RZMXTdzUvGM9YcNnYVSEidzIB5LbMaPspSYwMZLh RSH7QpktwVqVWqZtkbKa25UM+CesEL4X9Al461jNqhdqx8oi4HdVZ9d5Iuh3o3quvtXo c2WudeoQLnn4/ptB/WSllzO4Jz5J5fZRNzhaG64oEpcuXZaKuPvlj+2oD2cHzeLHMP+C hLag== X-Gm-Message-State: AOJu0YwtnMkRSSOns0GGpKwrMwWDqB5Q+i8lJT1+O56K51BpBZIn/vIg mdNKGTulFPaiT/o1vsyNieyVaDiUhBe+ X-Google-Smtp-Source: AGHT+IHE+bJ2FUrqt3NqWqPmzMopz8vaM/IYN23kqVq6QW7HNCHLcVB3AOGmYUfKzjdNksIM6oT1Ig== X-Received: by 2002:a81:d248:0:b0:5d8:10a1:f504 with SMTP id m8-20020a81d248000000b005d810a1f504mr8354579ywl.82.1702507292772; Wed, 13 Dec 2023 14:41:32 -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 v4-20020a818504000000b005d9729068f5sm5050583ywf.42.2023.12.13.14.41.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Dec 2023 14:41:32 -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-kernel@vger.kernel.org, linux-api@vger.kernel.org, x86@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, 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 v3 06/11] mm/mempolicy: allow home_node to be set by mpol_new Date: Wed, 13 Dec 2023 17:41:13 -0500 Message-Id: <20231213224118.1949-7-gregory.price@memverge.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231213224118.1949-1-gregory.price@memverge.com> References: <20231213224118.1949-1-gregory.price@memverge.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: B64ECC0009 X-Stat-Signature: y15m7s7cjptb9nioczgh9jiicqpcks6d X-Rspam-User: X-HE-Tag: 1702507293-320186 X-HE-Meta: U2FsdGVkX1+j/OG5xZJ+9Q0GkNb5bBehMMVrbkYy64QlOdZn0D4MC0ZMxftlcjmRIC519w0A3reH92KORn7se0bdBnPNEVbXb9VSd3pWwXR8vZfacityGoZlETW/lwNgaqWJzPpFVFf/QeKPGyl+3jTElMoxnEYbezSjC6E3rpGSIoofz+f1nZGmKTStlFaBYoudsr1IMhnUqXnjrTnHH36doJncYxNbqy6nBw8PC6oezaR/4zAqjKS8Fm+ctz28e8pEvOm7hi4PS6c2HL6AqZx1NgVo6f5H9cuhJqtdpIYW2FeLkk87y1FBJ6r5t0u+GQHBH7djnqQ4wudaG4I8FWe2sDadA/puObg3msqIt73btYrFq+VWTQBeYJC3pAUi61KWKdiE2F3wCZEtGuvzzCDHbphmCzstkIUh+QX8qHE93MWjNRcX+hwW7g48ChQY+rkTYIe1KaenZH/jHA/a3JGG7F/6ZPp5BicwXDB8Jm9Y35SGmrvdYbVSmZF892lum5U8mr3UIt7YtvMCtqHuU2uUdzduWpyaSMJdhokT9qKlbRIOcNTnwZEvbOHtexHMx48UQGh4igA6qR/0EnAZ6wzteID0xq1ZU5j/t2ow1rjK8s/YYmmzyN15Or7/JHwzLkqHmvZpYrZ9OF2UC+dbWSjwzkPkZcHHh2DW56y6/l7VVuFBPJZUT1nEPpew6ForFSXsfGvOPOkgu3xIBvp0t/NgcgRkTZYDlSSZjEwvtTTcqJ7PMoiQyMWLSWLQRr+yi8Xk9Mno/TPOUchz19PJUREh66mcxkZmjy3En2k+iKlEBK9LU+aYhs6oYO+73cQGSRS7LkhpO0syQdD8pX7wcPw/PXgADHGcUeh0PlDy12mXTbYp8dtZcIeRBmhrv0pkTAaFqaOM90K8Umw44mx4WtMhDJVl0GPVvgHaRAQoGSHaQ2dVgTa9toxygS3kfay1KTn3KSf4YR0O2nWPvNv XVaWSk1z gnofmWQOX/EUPAZRaXFK6x7RYZ96Re0AHmaZRoyFQnemV363hjud3N/tEJwNRVKgxmIWLvOM4IpBAFuDDKzLQ9ZDS0q/5qmVOv2qBdxPgV0+9moBOwCJho0ml+BCULLQyJ7OfjJTFrEG5jCZNwcuXb0AiE5RbsnTdVuDJzM5lwevrD46K7071SDAPGHJ0OIyyI2tvDjwFEuSZKgIlZ6HR04n+oCwxqrEVO8MyRlFO6vxbBw3hzKIe58M9Jt0rA5dA/FGZxCuVdATIpY338YUMqTo9NLNaDxvi7DBSyLA4r/8F0WRO23KdeHZV4UVxbFqdYKcezYLa1anQekjIqjRb8c1qOIYS7fD3Rw2WzZw5tq46eZT/0OngmAtrZuF2jeonRNJR+aZwP7hHElTUMCJwbMxTktAylr/fCUU7OsROYF9VuGeDiTaKGwlVFC/6EbW/XSvbJaH4wGxOYnWOTFSi+l8DZGRU3cQBenjqr65rtdii+m/u4EuewMEuWSouR91+MRNrF65G9btrUQM= 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 be set during mempolicy creation. 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 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 7956edcc57fd..705ddf1ccdd9 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -306,7 +306,7 @@ static struct mempolicy *mpol_new(struct mempolicy_args *args) atomic_set(&policy->refcnt, 1); policy->mode = mode; policy->flags = flags; - policy->home_node = NUMA_NO_NODE; + policy->home_node = args->home_node; policy->wil.cur_weight = 0; return policy; @@ -1625,6 +1625,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); } @@ -2985,6 +2986,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)) @@ -3143,6 +3146,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__); @@ -3157,6 +3161,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); } @@ -3279,6 +3284,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; -- 2.39.1