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 BCA08C71136 for ; Fri, 13 Jun 2025 16:33:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 586FA6B0089; Fri, 13 Jun 2025 12:33:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 536FD6B008C; Fri, 13 Jun 2025 12:33:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 44D406B0092; Fri, 13 Jun 2025 12:33:34 -0400 (EDT) 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 253676B0089 for ; Fri, 13 Jun 2025 12:33:34 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 99550C0C1D for ; Fri, 13 Jun 2025 16:33:33 +0000 (UTC) X-FDA: 83550923106.09.9ABE26E Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf06.hostedemail.com (Postfix) with ESMTP id AC00D18000B for ; Fri, 13 Jun 2025 16:33:31 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XLpkkMO3; spf=pass (imf06.hostedemail.com: domain of bijan311@gmail.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=bijan311@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=1749832411; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Va7AE6ZRu0tUcIQ8yzYRsNan45fKyNNXoobCqFtK7Vc=; b=vWfW1WJOJ8ENUKL6ffVlvXmH81vBUNL48MwpavhcAArzblqIpZp6QylteFw7SkrDUnpigT SbRBObBPZdrONv4ksD5kHRCjAP2UP4OKjLADnkwwWkdQZrnyP5M0pFiSLF58K+odZIY4oF hrac9dt+dVu1THrs3TWFs1cpa0LhCXM= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XLpkkMO3; spf=pass (imf06.hostedemail.com: domain of bijan311@gmail.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=bijan311@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749832411; a=rsa-sha256; cv=none; b=F2AC/b/mlGHClDnXFLZv27ymm3991azjAnyjI7/AbXyUTpKt9vxxSoNcSNns78yOW2+lNR BydZcdZVylumI5wbLTUHkN5c22qRHIqV3tgTAUWTQpXCFz8rC6B09E2Rd6lMN8oR8wvWu6 EBBtmEVm66dlFOSMfhfiTnyySx8uDSo= Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-ade326e366dso404857266b.3 for ; Fri, 13 Jun 2025 09:33:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749832410; x=1750437210; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Va7AE6ZRu0tUcIQ8yzYRsNan45fKyNNXoobCqFtK7Vc=; b=XLpkkMO3Aw0LfnFIOePP7RFo2Lr50PnEG8cHqI1EgIO8eAxQnn5WddhZKsgFe4z07P n1PE1pM+Qp4NvndilZcfImfMnXtvOGAskSOWXnNoTjeLFgW1wExDZ99tFeiPiJcKeiep Ee7qJUkSQpMN/R/CfbLioaJl8hJU5AVQwPc+66P+znDfPdVU2BRpyXDJIua7SkxNYRr3 jwEHvOjlpoDKxrAvHrvBmo29g5O9aikzSf0kUDdthnukjYp8swTo3D+5MyzGnkXuXlbK nXiGDe2EqI502GH6fgsFTS7vuMano5AmqtEsI+pdbWymGU1B4edU6WDQKBUUzbRBN5cN eOwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749832410; x=1750437210; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Va7AE6ZRu0tUcIQ8yzYRsNan45fKyNNXoobCqFtK7Vc=; b=FlYTn7P61+XLhZbPjKh1Gy41NOOcVZeZGE0WhOJyfyV+z7ejXjzmFsMc4wkroUcTIk YtCx46OBmr5XMcDdXNfPP5z479rXnm640rkRmz0vFtT29+5qn1wnuwdeXbBUkxmXYU+Y NjTnEEZGQSDm4Dht4tvfP9cx5afGsNLyZxQ5AZ0oksISioWGA/r27Tuo2CUtTZ7ZzRaf UMhucPTt7tvwEYnn88qzZIuHq+9HEkElnIee3nlGEBFayFE8aqt/71H2L2Ya8/uogWkG XPNYAEtB77mWIa8JNBXnN7HapTA1htDl+V5KmD/O1vvOUrEs3YQCkmW9fo/B9R5Vhhri fpNw== X-Gm-Message-State: AOJu0Yws1k2EtKiyalk9fZLVVk1eS2eEbUuG063JLDZP4NT6CFw3Kqsc wnj4qp2Lb6o0qsysLaIZLypIfYAKkvyFvYo6NkQPZC7dH0Y44jxWGyG07UUIa0o4re+792dMYWr RbOVU0A8tLbDxJOnuP1t/VUbO4pjCpkA= X-Gm-Gg: ASbGnctt7RJdvsF/KAJdX1mHWZCDYsFWuAPrSh5x/R1Ile3fnlcYwzmT+4SMA6xPPru q8uc1bdzbK2TltZXBTVcQiZc1UmwzZ3BgqJiwisdIO23IvZ4owgcvCXa9MAQOLPDx02J/NspBS3 XUY75j9aWmmDjNUQtt2BmY3tQtlX805yfTVmqI+ERBXdbhPgp/y6I123hPzyVojLKmrM12x9jIj DnD X-Google-Smtp-Source: AGHT+IG/OBkyK/agG2UVMmJWvTU1QMm4SmGMs9KD3Ezvf+J2tTxEtlceU4dEUBXWyJAHxcNkqh7edre0kjWHg3dWMyQ= X-Received: by 2002:a17:906:fe0c:b0:ad8:93a3:299c with SMTP id a640c23a62f3a-adec5436bc6mr372908166b.10.1749832409926; Fri, 13 Jun 2025 09:33:29 -0700 (PDT) MIME-Version: 1.0 References: <20250612181330.31236-1-bijan311@gmail.com> <20250612181330.31236-2-bijan311@gmail.com> <5a50eeba-b26d-4913-8016-45278608a1ee@redhat.com> In-Reply-To: <5a50eeba-b26d-4913-8016-45278608a1ee@redhat.com> From: Bijan Tabatabai Date: Fri, 13 Jun 2025 11:33:18 -0500 X-Gm-Features: AX0GCFuazzkdI3MgkIT3-iQtcMQlbIVIrSXGr9CiMXXa7M0L7hQSrqNXvr4KFyU Message-ID: Subject: Re: [RFC PATCH 1/4] mm/mempolicy: Expose policy_nodemask() in include/linux/mempolicy.h To: David Hildenbrand Cc: linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, sj@kernel.org, akpm@linux-foundation.org, corbet@lwn.net, ziy@nvidia.com, matthew.brost@intel.com, joshua.hahnjy@gmail.com, rakie.kim@sk.com, byungchul@sk.com, gourry@gourry.net, ying.huang@linux.alibaba.com, apopple@nvidia.com, bijantabatab@micron.com, venkataravis@micron.com, emirakhur@micron.com, ajayjoshi@micron.com, vtavarespetr@micron.com, damon@lists.linux.dev Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: AC00D18000B X-Stat-Signature: hxuw7yxthwxk45k6w87ia77ohabbjbeu X-Rspam-User: X-HE-Tag: 1749832411-627772 X-HE-Meta: U2FsdGVkX1+K7JFx6M34bSdEfq39r/+ByikOG57KUeXOTjzllcRG9yapq3yua7y9msHI+IcVxylwVFFn3AWfI7uTCtWbXm78qw9N1WkROj1mBf/cP+R4v6rizy/x/nTw23kcToN3TMPjdBkTERl5xkvzqRa/90p2nHARVbvyuQM0NFd2AYbtpV3r0gTY2BTPTTwMn34hNEKhPlHqRnMva8SrA1g3MWg2rgoohNfmTqwyZ3ZBXCQdok/ApgX8c41F0nT4QOW6AhQJuNsmqkbLsPYrwx2cNqr9BfTxDGoRfal3Uw7KCuT5Y17GgEmQUOgae+V/sXdEtd58wsSd+olmI6VRWAfnZazzFdidOyqgWArAykFWxXZxYYhjRRNSwDs4n5pzcU3nvjPRHw5peS+LP6yhzByEKLSIVQ1jMYvaQftG+sbFd6cvzQewXF7Y4Gnmf/eEe3xabHJ+YXpuxwiQomALfVAqY+WO0hUnY1LhCL5SXM4U2CLXh5iFu8C2szjJRFrVkjfw7UwVSXS3QTNeW/tdNZzjkIy6yVl1w4oG6oKvZPStiPiZZ4IHEp6Ah+WLGySuNDtuCd03TwlGwPzqURfAzxAHHz194AADvQRPMlOI004RLACOTX1Sp/eO8f0StFPR+mZZlWHcMm6bBWi6K6NoIHiX++w0aTUyd3nikKAoZqkqBAi5kVbELBLRqyOWlzioDEmHIXDD56P/SXgLBrkh5+WtQm0l/0Va6vZWI5ZgLuRsWtlglxex0XJG92uZFjr6TJgGBu0j3am0UEcq/aFgBLai4VrZcYsIHN8C/7rMAVNJtFAPbPUHfejwx3WqcvsUwsbnXM4b0IcHZzmAuQzmpXux7e15LMxNaS756VNb+oFo8mESdgI3qORA7bn0Iw32qOiL1d3hK4j5ArVcLbZjHVuS7OBLpuVgN1PvzUnqsSz07fOTPUGsz8yFvxqD4cqwTyQT1rAU/CYAgbO jPE0ZfOW KK46e1DIc6xEy+TYwnGcbuThf6Y54NqhTM1dnfdAVBXagb+WeoUIFbrmWbzxjPqzlIjhwAgECfSBSSWYg9zdVxzrlrRb19nkzKN79O1e4/1dIatRMJDnclGSD28GFNtRBFyWa44/6+jexGTsEl94gf748Nr8oAHufWLLPme6eTjEw2xpb6+qgXIMUd1M45bvRUg/QexZ/pnvHNf4x8w/F8xNKpUWeMFTMNrxvt55RH86c/PaZRwWQDzsp85kc5ka/lMw4MuwT4UNp8YkeRtYoQ0rI1PDbNYWDEPEkrzCD3yYHvI0GaIxAev+InoWrTxnoNgLgPHJNrWtbpF8Ir43tPkmf+9+uRazXYxMImj0LnxutE3d+lW3KAC41Dy6uxwUDJqnxkz4Kz5YkTFNNltuazPY9T+b25OCOfwxMAOiboXHmWCmSf/3WJmWBvZ3HX8oxOi5KosgzBpbGZxlogJ/e9K3kvzbtUzBoFzOCgkXonJRZZMpdd+ERIg3dQeUfkbPO2MmcBgG9NSr5Vkye1PoLxSV4eJwMGNp6XrLCYOuAmhra2rxxOKesYgUZ1g== 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: On Fri, Jun 13, 2025 at 8:45=E2=80=AFAM David Hildenbrand wrote: > > On 12.06.25 20:13, Bijan Tabatabai wrote: > > From: Bijan Tabatabai > > > > This patch is to allow DAMON to call policy_nodemask() so it can > > determine where to place a page for interleaving. > > > > Signed-off-by: Bijan Tabatabai > > --- > > include/linux/mempolicy.h | 9 +++++++++ > > mm/mempolicy.c | 4 +--- > > 2 files changed, 10 insertions(+), 3 deletions(-) > > > > diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h > > index 0fe96f3ab3ef..e96bf493ff7a 100644 > > --- a/include/linux/mempolicy.h > > +++ b/include/linux/mempolicy.h > > @@ -133,6 +133,8 @@ struct mempolicy *__get_vma_policy(struct vm_area_s= truct *vma, > > struct mempolicy *get_vma_policy(struct vm_area_struct *vma, > > unsigned long addr, int order, pgoff_t *ilx); > > bool vma_policy_mof(struct vm_area_struct *vma); > > +nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy *pol, > > + pgoff_t ilx, int *nid); > > > > extern void numa_default_policy(void); > > extern void numa_policy_init(void); > > @@ -232,6 +234,13 @@ static inline struct mempolicy *get_vma_policy(str= uct vm_area_struct *vma, > > return NULL; > > } > > > > +static inline nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy = *pol, > > + pgoff_t ilx, int *nid) > > +{ > > + *nid =3D NUMA_NO_NODE; > > + return NULL; > > +} > > + > > static inline int > > vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst= ) > > { > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > > index 3b1dfd08338b..54f539497e20 100644 > > --- a/mm/mempolicy.c > > +++ b/mm/mempolicy.c > > @@ -596,8 +596,6 @@ static const struct mempolicy_operations mpol_ops[M= POL_MAX] =3D { > > > > static bool migrate_folio_add(struct folio *folio, struct list_head *= foliolist, > > unsigned long flags); > > -static nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy *pol, > > - pgoff_t ilx, int *nid); > > > > static bool strictly_unmovable(unsigned long flags) > > { > > @@ -2195,7 +2193,7 @@ static unsigned int interleave_nid(struct mempoli= cy *pol, pgoff_t ilx) > > * Return a nodemask representing a mempolicy for filtering nodes for > > * page allocation, together with preferred node id (or the input nod= e id). > > */ > > -static nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy *pol, > > +nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy *pol, > > pgoff_t ilx, int *nid) > > { > > nodemask_t *nodemask =3D NULL; > > You actually only care about the nid for your use case. > > Maybe we should add > > get_vma_policy_node() that internally does a get_vma_policy() to then > give you only the node back. > > If get_vma_policy() is not the right thing (see my reply to patch #2), > of course a get_task_policy_node() could be added. > > -- > Cheers, > > David / dhildenb Hi David, I did not use get_vma_policy or mpol_misplaced, which I believe is the closest function that exists for what I want in this patch, because those functions seem to assume they are called inside of the task that the folio/vma is mapped to. More specifically, mpol_misplaced assumes it is being called within a page fault. This doesn't work for us, because we call it inside of a kdamond process. I would be open to adding a new function that takes in a folio, vma, address, and task_struct and returns the nid the folio should be placed on. It could pos= sibly be implemented as a function internal to mpol_misplaced because the two wou= ld be very similar. How would you propose we handle MPOL_BIND and MPOL_PREFFERED_MANY in this function? mpol_misplaced chooses a nid based on the node and cpu the fault occurred on, which we wouldn't have in a kdamond context. The two options I= see are either: 1. return the nid of the first node in the policy's nodemask 2. return NUMA_NO_NODE I think I would lean towards the first. Thanks, Bijan