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 40564C10DC3 for ; Sat, 9 Dec 2023 06:59:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BBCB66B0082; Sat, 9 Dec 2023 01:59:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B6AE66B0083; Sat, 9 Dec 2023 01:59:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A0D286B0085; Sat, 9 Dec 2023 01:59:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 918136B0082 for ; Sat, 9 Dec 2023 01:59:58 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 5F7FB1A0296 for ; Sat, 9 Dec 2023 06:59:58 +0000 (UTC) X-FDA: 81546380076.13.BB8AA75 Received: from mail-qk1-f193.google.com (mail-qk1-f193.google.com [209.85.222.193]) by imf12.hostedemail.com (Postfix) with ESMTP id 904CD4000A for ; Sat, 9 Dec 2023 06:59:56 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UrZFSjjl; spf=pass (imf12.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.222.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=1702105196; a=rsa-sha256; cv=none; b=KlUHEXdeU3pXKgvbxIw54qwKn4u88qOy34W8VysCxnLcZND0H8DeyzZ+HAcdM0pH31p8jL uK5wzN41cf6m3wzjJLxZiyTKOcXjxxUA0GjgpBq5THk3DibLZV/snKDMdygeRtueXsV+kW +y5kqXD9kZAuA9d5wA03/TpAng3Ep2g= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UrZFSjjl; spf=pass (imf12.hostedemail.com: domain of gourry.memverge@gmail.com designates 209.85.222.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=1702105196; 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=/jpJNV10Y4Aq3La+SspO/hMcopvAOMbrsn8P/kGKMEU=; b=5FqD/ayv6V1rjTiIcKgWEj6iiA9cEu6YFS1yY/BySqJ57H8AnND7ShcNg8FqruImHmiQC3 /3xqARsDJRYgyxsDNmAIWMPNU365bmivLQ6UQ7dFFR619qqEg3/6fiXZPRuBZoC774tYBT MeH82OPV0p7xAsooRIfvA46jDrU6R6I= Received: by mail-qk1-f193.google.com with SMTP id af79cd13be357-77f347b0299so144498085a.3 for ; Fri, 08 Dec 2023 22:59:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702105195; x=1702709995; 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=/jpJNV10Y4Aq3La+SspO/hMcopvAOMbrsn8P/kGKMEU=; b=UrZFSjjlCJq7M/n6zA+LkOrrXdQ+toq2u1Hh7PB+ftMsc8mJNIj39RmwCQCA3tCt0g 8d9X8xzOXO5frKt1QhCXuDo7Hn4Vs2cdKlkLtJ/oqJArdf6CODIHQuoz1IJ9iyVYiPM9 7wgyieN8QhclqQziwjff9IsZ+Hpoca1Q2G62pncw4Q+lWj2dcaLnY4QMCXulaZ7c62Fe L4KjpYGb53DP8xz9czp5kxY+QVntv6dpGLHRqQVPMdnWlAd46Ks8tzWaoUguPrrGaZuh ulNWoxRJ+DGmDdAcI2dKOsVYBhX7Fls59V5vHA6UlgsEW7WzVLSPLd54Mm2QwfnFVoZc Yenw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702105195; x=1702709995; 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=/jpJNV10Y4Aq3La+SspO/hMcopvAOMbrsn8P/kGKMEU=; b=Sc6eXad+mvdLxVudgYBluyXzvrrc6P+kkCTs4Y+CPCGE9sk+MG37ZNG2D1iRzRYt0d CLsdsMKDu2bGeNquchk3rqrmTCT+3eEhJBvPlVCShiaVI+0attcDNO0WUuBRlQb7piNR MuD0mzdm7pYDNAA82ceSIKgLRGpr9ZsNcaxHPIwg7CsDDIgrYhGsWXSouMholket89wN 4YfO+Ak3algcGlobWIO4Un8Dic4k3FYEmuQpMM/D1Rs/t+ipp2khJpXaN2qfICGUeTtm n2GrmoFiG5+RMmsYjOnCgrV356VQW7+sZeuz3omR6ECwy1idNYWhy6vkTamk+TBdzSKV ClPg== X-Gm-Message-State: AOJu0YxCh/l1ef3+pnQ1OMuKWEIGRTwBm8xqDfNGkh5+5AhqXxmeBezO N4wHZDWRIT/xOwXVN5KdDOUA5t9WHIau X-Google-Smtp-Source: AGHT+IGq7B5WE+Xyw4YblcWAaIb3zQDtffG9M6pUeoRlky0GQTbpT4Cg4FD2j38+EVMPor4kTHolGw== X-Received: by 2002:a05:620a:2a10:b0:77f:3161:9147 with SMTP id o16-20020a05620a2a1000b0077f31619147mr1748373qkp.19.1702105195576; Fri, 08 Dec 2023 22:59:55 -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.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Dec 2023 22:59:55 -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, Frank van der Linden Subject: [PATCH v2 07/11] mm/mempolicy: add userland mempolicy arg structure Date: Sat, 9 Dec 2023 01:59:27 -0500 Message-Id: <20231209065931.3458-8-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 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 904CD4000A X-Stat-Signature: 9eug4q3xjmx3p33zjrooxgn1bjrtbi6w X-Rspam-User: X-HE-Tag: 1702105196-127344 X-HE-Meta: U2FsdGVkX1+loX1Ho4PLiZMQQPVaXLjZ6+nihcEEe+qXpXFuS5ySJPJSXuWNfeF2bx/BB2FZiBt2VFsy72w06n4+wGbp1FDVMCm4J+JrJ4Wfm0WNyk7wa8OxVrinyniauZWz5phTM8IOKSAy+WiCcxQS4EWIO0YROYQO81AorMnrnh6gzZ2+D4dM7mC3EeqvJytvdIgT7ttQDpvfkKTh/zbJZmBA5BmN4qLW5+TOpGScNoKisXw5bfRf2td7+m/0IYm+5iI00apy0LSgws59KySF+GhxDj8cpbra3plbPN0EYfSnS1u2yNGp7t634XZpG7jP0kuw9QLd5zOu0IOOiXqI65VuPmTw1Tj/bqc0AAIrYvv0KOh5cktor2WooMkhKvRVmcAkHfqghfyy9kO3iMGnH56bwu5sJoOpXi5JH0fPbSXAtW25dfeVp/GmSI7ng2heKJsscBinjvUF0kezCoeTKv1QhD9nOTbLtIKu0iXoLIY3YjxzYaPpTs1vYApST15+Q2d9azNbDRUIi/ArU/rmvvKXWlr42JIF1YUHP7K+Ak6hI5OQRkkweq6PdPAJ1zs98xua8ri7DXmFaH5/ARsLd6R4YjkI3Oxiw8Drg/j+sGPYAVfBT78dIWhm5p4/cwWLh7QSeFMrd6UIybu1PuJSq5oVGOqVqdtNA6rtOpynSQQjgco7R5ZGPm2ys/iPvCzG7/aFOFyOHqQvgVIAPmSd3lDzcshnDiA6CWWQJa+1/ia+eylSNtSDMgjzCtWjqXYxrdmBKyNoCj3/TEcrjKdpW760uAvWfzK1TofFErKX9xRrj02vdDgJzWvJTCOsbnS+ddclTy7R3r11zoXPO/y2Y2L4ap1xFPkRjAHaoIFW+v3oufOc38p+frjFjz8BKwzPXKAuSJPugI8Ml1gF7jfNXd5mdHjD0/U4I8y84wmLEYjI4M/PKZ6oRm31762yMLw+vak4yVTVP6fETrx L0LCO7dz 4pn6n0rhm+MphkQAWDsusvz7dJ+RdSKdPthHU37bxmEjMx4HUFyg+N/9Vuwv2MfzFuygtXzX9PJOeIq5XJVSrC4IA0nnHcy5Rcg52z8QItN8IkBB6TkJZQTpB0e917HK3fWdP3kXqSaiT0GlgNW34UCtFpJ/bgLupnInyjRarTicFmuq+vDxXb1TB4fc9UxgUc3v0YZn7KHEcXtZSZ89G3BlrKFNbNTttA2hLp3SbU/EtEmpIq/d9dSvXcWkLpXTn2jxgb/zW0yFlkb4CqkoCUewwB1qSChy3RlyoMhrVMfT7dphzvmxT3Tlfrz3Zsrnz8dphZ3nd+3w+BKBeXWw+eWZa9imYvAURu5/wkULuTI0FFU/5087qWHZKPjPrhDYVBwbRe+EuElV+Js2l5SJMWIXVTeydRbPPTHmDgM9SgQBALeJ4dflCCLRA0JltUR8nDxc3OEq/2jzLm0V3sCC9iHmEARSsbPOEjO7RXPoEkZmgycbZGPlT2gXaF0MJS6HtiuwS8IXwlUuT6JVs+/2ErHwkv+UVSWFQqeReQN1S5TZYrfQmmqxYYuMYs6q6CdjnjOlR5VxB0kICybEt/88yh8qApbrSeowBkNOCl2YdaEXfVrwxaTnKWg7z22fpCU5/Tj1F 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_args { __u16 mode; __u16 mode_flags; __s32 home_node; /* mbind2: policy home node */ __aligned_u64 *pol_nodes; __u64 pol_maxnodes; __u64 addr; /* get_mempolicy: policy address */ __s32 policy_node; /* get_mempolicy: policy node info */ __s32 addr_node; /* get_mempolicy: memory range policy */ }; 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 addition of that setting at the time the mempolicy is set, rather than requiring additional calls to modify the policy. 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_nodes: Policy nodemask pol_maxnodes: Max number of nodes in the policy nodemask policy_node: for get_mempolicy2. Returns extended information about a policy that was previously reported by passing MPOL_F_NODE to get_mempolicy. Instead of overriding the mode value, simply add a field. addr: for get_mempolicy2. Used with MPOL_F_ADDR to run get_mempolicy against the vma the address belongs to instead of the task. addr_node: for get_mempolicy2. Returns the node the address belongs to. Previously get_mempolicy() would override the output value of (mode) if MPOL_F_ADDR and MPOL_F_NODE were set. Instead, we extend mpol_args to do this by default if MPOL_F_ADDR is set and do away with MPOL_F_NODE. 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 | 20 +++++++++++++++++++ include/uapi/linux/mempolicy.h | 12 +++++++++++ 2 files changed, 32 insertions(+) diff --git a/Documentation/admin-guide/mm/numa_memory_policy.rst b/Documentation/admin-guide/mm/numa_memory_policy.rst index d2c8e712785b..64c5804dc40f 100644 --- a/Documentation/admin-guide/mm/numa_memory_policy.rst +++ b/Documentation/admin-guide/mm/numa_memory_policy.rst @@ -482,6 +482,26 @@ 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_args { + __u16 mode; + __u16 mode_flags; + __s32 home_node; /* mbind2: policy home node */ + __aligned_u64 pol_nodes; /* nodemask pointer */ + __u64 pol_maxnodes; + __u64 addr; /* get_mempolicy2: policy address */ + __s32 policy_node; /* get_mempolicy2: policy node information */ + __s32 addr_node; /* get_mempolicy2: memory range policy */ + }; + +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/uapi/linux/mempolicy.h b/include/uapi/linux/mempolicy.h index 1f9bb10d1a47..00a673e30047 100644 --- a/include/uapi/linux/mempolicy.h +++ b/include/uapi/linux/mempolicy.h @@ -27,6 +27,18 @@ enum { MPOL_MAX, /* always last member of enum */ }; +struct mpol_args { + /* Basic mempolicy settings */ + __u16 mode; + __u16 mode_flags; + __s32 home_node; /* mbind2: policy home node */ + __aligned_u64 pol_nodes; + __u64 pol_maxnodes; + __u64 addr; + __s32 policy_node; /* get_mempolicy: policy node info */ + __s32 addr_node; /* get_mempolicy: memory range policy */ +}; + /* Flags for set_mempolicy */ #define MPOL_F_STATIC_NODES (1 << 15) #define MPOL_F_RELATIVE_NODES (1 << 14) -- 2.39.1