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 3B4F4C3DA6E for ; Wed, 3 Jan 2024 22:43:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9C7D46B035A; Wed, 3 Jan 2024 17:43:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 978246B035B; Wed, 3 Jan 2024 17:43:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F1D26B035C; Wed, 3 Jan 2024 17:43:15 -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 68F856B035A for ; Wed, 3 Jan 2024 17:43:15 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 41944120135 for ; Wed, 3 Jan 2024 22:43:15 +0000 (UTC) X-FDA: 81639477150.21.C7E1432 Received: from mail-pl1-f195.google.com (mail-pl1-f195.google.com [209.85.214.195]) by imf27.hostedemail.com (Postfix) with ESMTP id 62C964000A for ; Wed, 3 Jan 2024 22:43:13 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=NH5mUe1W; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.214.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=1704321793; 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=RUHKocyjko4JE9NI2Z1eJ5WM6U4OAc9XzLqGoGJ7CFY=; b=cmgp3kM1LfZTR0hOZ710U6BhN5wf9gPkxglFYLXCL+UYjZUo1jsNz/c868IRzqO3oD7bI6 j6MiN2sMm5lZc7NKIav0vHjDwfewujluUMho+3U77BXuQLVTsONx073MEIikMJ9t1TTc0c 75PoAjUnE2C/JuDZ6+msYXvncLRpSnc= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=NH5mUe1W; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.214.195 as permitted sender) smtp.mailfrom=gourry.memverge@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704321793; a=rsa-sha256; cv=none; b=UilHyilqDScY9yUOK1wQewHw1vfNe3IwAhXEt1B64AWAqAXle3VmksNLhHH+6v9Vcuxg0X 5CtnPWs3wgINPPQ9t5c1Hq/LtIm0C8NJm0Xmd54NKEtRcj7wNDuKByzjKgOeRjM/zol8oY C5BqcnqHYTov7objkNT/2eMfyuTC+qA= Received: by mail-pl1-f195.google.com with SMTP id d9443c01a7336-1d45f182fa2so57297965ad.3 for ; Wed, 03 Jan 2024 14:43:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704321792; x=1704926592; 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=RUHKocyjko4JE9NI2Z1eJ5WM6U4OAc9XzLqGoGJ7CFY=; b=NH5mUe1WwwkdHZlTWjyz2+ygDhSdKdSncoToneujra7WFyxeoV7RC8mIPeMQYksGsB WNwlX+nkVivWtkUlID9A7m89DI6S5iEdNA8S/jEiA/lvOkfXX4NBrOE6/b0E8TaRrbUL L/aGuhF8NuyVqstIHaQIRkkb7BvTzRTObRHqaR1dnhnk4dl2fvQxKJ7pWZ8pgVBTvdh0 3TFKc5f70gQ3rOlso6jc4yAHf/YxsV8ygSeSUWdQsPqFi35oZMtuZwDJfPGh81coCj6J Essy8OqozNO4epS793dAsWaXi9UFUT9g3sxUSER70rQgDfBxjVTaZr/17u4gqR3jRBZp KXaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704321792; x=1704926592; 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=RUHKocyjko4JE9NI2Z1eJ5WM6U4OAc9XzLqGoGJ7CFY=; b=a8Z+A/vvCIWALF9wZKyTdwsZLqf+gC8wKzaKITV3QUIdLcUj8Qo7eWwkYgZMpaiTxD qomeecMusC5IJJ8tgDsFnapVNsIpsXsHRVUQLHHJiVDIxtVbxwc8dl9ie+LQhSrO5sCm mHiYnMIYWAaWYaU4L1m7JJyxbDbGfVdhbdA2NYa8kGMS+86g1BpGLPkfWfy0HnWHHGyg OCfnXJ9H4z4E3DO8I5S3kxR6VjPS4YUkateTTskoT2TPfBBF+r1xsLG1jwo5BA05QSzW 3dSnQBnS35nCuqO8M2sA4twqdH8E4MeKLyt+4IwaAl8sJMRTyuT7SbWatc5aD3Zx0MBZ NoeA== X-Gm-Message-State: AOJu0Yzp5TN0kMSLiiCFl7nfUxtOxHolAZqrcPcghgXbfj/13M46UVtO slU0Bg2Ytg02W/AJArAD4KSHOVmtA0yJD/Y= X-Google-Smtp-Source: AGHT+IE6dzpobsqtQII2rv9CF4X53MepsPxqTJ4TnvU9EOom4dXLh7CLzaRiTQ2kttaU5pcRlRYB3A== X-Received: by 2002:a17:902:d503:b0:1d4:576e:91cc with SMTP id b3-20020a170902d50300b001d4576e91ccmr19465094plg.7.1704321792227; Wed, 03 Jan 2024 14:43:12 -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 g1-20020a170902fe0100b001d36df58ba2sm24269426plj.308.2024.01.03.14.43.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jan 2024 14:43:11 -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, linux-arch@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, 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, Frank van der Linden Subject: [PATCH v6 08/12] mm/mempolicy: add userland mempolicy arg structure Date: Wed, 3 Jan 2024 17:42:05 -0500 Message-Id: <20240103224209.2541-9-gregory.price@memverge.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240103224209.2541-1-gregory.price@memverge.com> References: <20240103224209.2541-1-gregory.price@memverge.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 62C964000A X-Stat-Signature: 43ficdxi686kdf6cpmcu7qfino1pdxzf X-Rspam-User: X-HE-Tag: 1704321793-649858 X-HE-Meta: U2FsdGVkX19QdZb228H0w4GaCpbnf9hfgornUJ0kmkH+NeM9swJ5qgtUyHf4W70paJObENopA0Rqya0qzW/tplvqV434BhuWN13uWPEijqybYQ6Id3nd+xIRaELsD+Ax0ANKXZrHp+gF7boTJbPjrcrT5YDmYp00D5RzkSEG/oe417YqcXIlgb54E1rD69p5wA3FyYDobdPxBY6AjTP3mY2PnTtigB6wmCP2S1KXXEkQIOdderA4B5EwxDnBN+0TnrFncR8+rWZ7Kwva0poVUvPpx/0bELk7JsdwTsiX0dVv9ep89AXXUfNFvbaz8YqRedj1/6KR1xfKCmMVBg7Fk29CTsEKwfOQeeqzakwIGLm7Ck8Ig/4cfeuX7/yHjck27didYon3f8yvXqOObst/vGrQGNrHKlUURcVMCVZPuFPpu7YCjguBiB/cfBy0Krp0N/As3XjBCYqx1VmaRP1oLEhAVonyg0rM4ePK+s2upbBnhWe1Xa81sdfH7MqPgVTcwYBZuc1EJP439y2Xdkdy2n70XdSfveXa1R1aaD0yTlRNUTJzGlje6E5xjKMX1kSxi1AeUn9APKBS89ioOGPmpVY+8AdC2PoWU/x7z4mQWCjFoydtzEpJF+6I6162D5Ri+PGAtWyKZqPXB4CqSdIeRi2fyOLKc2FaL1W9d2hVbGeCHQgGdPs/s7Ytpic8Ya74BUa2tNh8j65dBQ2LJuAf3v26RD5wNj4kUUmqAx9DjUpeyAilLk5/ZO+CzKXMEPiih9EIuS3Qnjz9gOnFmBeC0HE/cyvE1qF5BDFFk/o9JM6XBNi37r8TjzAlS0xaOjaKQjp2MU3iWdp0o1kW8oRLuiOFtaNPiOteQ20gf0WVhqBXRZoOh+3YjqHYA+dcwwnVqIXW6Tp+Y/Wanm0ytVc4lTqODh3mUZm/lkmGSo4h/rv+jzjH2NZHkhmNlhzIiDWU87FabSUtqjfckJXXena J2H17WLA lVD5l787BFrBnSrZmeaX6Be9aRXEz94VE7nhjpV65+WqjwNhnJpN9Lpxtkg2EvsGM/yUWZ0F9YYysN66BNM4jL3G1A/wiZfLvshYQ4U37ptoiiqtvEOe52dnAOUAlWr4jEX8d1IC66VLb5NBH9e3KaR6RozaxSTWsySk6ZnlfM0f1Rl1D4I1NVfSzmN93ZjLViNK3twh2g9lJQUSmIZK9N+byv+eXH6j/Yyt6HiZJJAX7gXLLSO0skkf2v+t8uzUn/h9PQkkSZK3pRZZfh5R4i+NaMGAAyZLBN6tWiVmY4hqJvEJ6LA3XdlaMdeja3Bdc9ILvXzYQBfZpNxqxKyG5iL1zWgdfzi7tNndLpYpy+320Ay5vItdh9gy00L7Golh6xw19+ydsUvc5nzwVQ+UZskyvSd8U/187rrFy8iiM/zgwOkuIXgaZRkpe8NkFNJN+gJs9LIvGMZt2JeZfPbDuxg/bhb1cLMslgJ6EkUG7nP19mQPlLS02ypAdaeDd0Y4QMSyNzOfwgKvTefZ+5jpMFSa0L9ke4zZqGxcvWchR5CJF+ylt2Pbe8ASrWdPGltEeJR3RbroEqQqRt9I= 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 new user-api argument structure intended for set_mempolicy2 and mbind2. struct mpol_param { __u16 mode; __u16 mode_flags; __s32 home_node; /* mbind2: policy home node */ __u16 pol_maxnodes; __u8 resv[6]; __aligned_u64 *pol_nodes; }; This structure is intended to be extensible as new mempolicy extensions are added. For example, set_mempolicy_home_node was added to allow vma mempolicies to have a preferred/home node assigned. This structure allows the user to set the home node at the time mempolicy is created, rather than requiring an additional syscalls. Full breakdown of arguments as of this patch: mode: Mempolicy mode (MPOL_DEFAULT, MPOL_INTERLEAVE) mode_flags: Flags previously or'd into mode in set_mempolicy (e.g.: MPOL_F_STATIC_NODES, MPOL_F_RELATIVE_NODES) home_node: for mbind2. Allows the setting of a policy's home with the use of MPOL_MF_HOME_NODE pol_maxnodes: Max number of nodes in the policy nodemask pol_nodes: Policy nodemask The reserved field accounts explicitly for a potential memory hole in the structure. Suggested-by: Frank van der Linden Suggested-by: Vinicius Tavares Petrucci Suggested-by: Hasan Al Maruf Signed-off-by: Gregory Price Co-developed-by: Vinicius Tavares Petrucci Signed-off-by: Vinicius Tavares Petrucci --- .../admin-guide/mm/numa_memory_policy.rst | 17 +++++++++++++++++ include/linux/syscalls.h | 1 + include/uapi/linux/mempolicy.h | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/Documentation/admin-guide/mm/numa_memory_policy.rst b/Documentation/admin-guide/mm/numa_memory_policy.rst index a70f20ce1ffb..cbfc5f65ed77 100644 --- a/Documentation/admin-guide/mm/numa_memory_policy.rst +++ b/Documentation/admin-guide/mm/numa_memory_policy.rst @@ -480,6 +480,23 @@ closest to which page allocation will come from. Specifying the home node overri the default allocation policy to allocate memory close to the local node for an executing CPU. +Extended Mempolicy Arguments:: + + struct mpol_param { + __u16 mode; + __u16 mode_flags; + __s32 home_node; /* mbind2: set home node */ + __u64 pol_maxnodes; + __aligned_u64 pol_nodes; /* nodemask pointer */ + }; + +The extended mempolicy argument structure is defined to allow the mempolicy +interfaces future extensibility without the need for additional system calls. + +The core arguments (mode, mode_flags, pol_nodes, and pol_maxnodes) apply to +all interfaces relative to their non-extended counterparts. Each additional +field may only apply to specific extended interfaces. See the respective +extended interface man page for more details. Memory Policy Command Line Interface ==================================== diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index fd9d12de7e92..fb0b4b2b9bea 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -74,6 +74,7 @@ struct landlock_ruleset_attr; enum landlock_rule_type; struct cachestat_range; struct cachestat; +struct mpol_param; #include #include diff --git a/include/uapi/linux/mempolicy.h b/include/uapi/linux/mempolicy.h index 1f9bb10d1a47..109788c8be92 100644 --- a/include/uapi/linux/mempolicy.h +++ b/include/uapi/linux/mempolicy.h @@ -27,6 +27,15 @@ enum { MPOL_MAX, /* always last member of enum */ }; +struct mpol_param { + __u16 mode; + __u16 mode_flags; + __s32 home_node; /* mbind2: policy home node */ + __u16 pol_maxnodes; + __u8 resv[6]; + __aligned_u64 pol_nodes; +}; + /* Flags for set_mempolicy */ #define MPOL_F_STATIC_NODES (1 << 15) #define MPOL_F_RELATIVE_NODES (1 << 14) -- 2.39.1