From: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
To: Michal Hocko <mhocko@suse.com>, "Huang, Ying" <ying.huang@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Donet Tom <donettom@linux.ibm.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Dave Hansen <dave.hansen@linux.intel.com>,
Mel Gorman <mgorman@suse.de>,
Ben Widawsky <ben.widawsky@intel.com>,
Feng Tang <feng.tang@intel.com>,
Andrea Arcangeli <aarcange@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Rik van Riel <riel@surriel.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Matthew Wilcox <willy@infradead.org>,
Mike Kravetz <mike.kravetz@oracle.com>,
Vlastimil Babka <vbabka@suse.cz>,
Dan Williams <dan.j.williams@intel.com>,
Hugh Dickins <hughd@google.com>,
Kefeng Wang <wangkefeng.wang@huawei.com>,
Suren Baghdasaryan <surenb@google.com>
Subject: Re: [PATCH 1/3] mm/mempolicy: Use the already fetched local variable
Date: Sun, 03 Mar 2024 11:47:47 +0530 [thread overview]
Message-ID: <875xy3ltys.fsf@kernel.org> (raw)
In-Reply-To: <ZdRq9EM1mDFXBiiO@tiehlicka>
Michal Hocko <mhocko@suse.com> writes:
> On Tue 20-02-24 15:22:07, Huang, Ying wrote:
> [...]
>> This isn't an issue now, because mpol_misplaced() are always called with
>> PTL held. And, we can still keep thiscpu local variable.
>
> yes, this is the case but it would be better if we made that assumption
> official by lockdep_assert_held
>
How about this folded into this patch?
2 files changed, 12 insertions(+), 4 deletions(-)
mm/memory.c | 6 ++++--
mm/mempolicy.c | 10 ++++++++--
modified mm/memory.c
@@ -4879,9 +4879,11 @@ static vm_fault_t do_fault(struct vm_fault *vmf)
return ret;
}
-int numa_migrate_prep(struct folio *folio, struct vm_area_struct *vma,
+int numa_migrate_prep(struct folio *folio, struct vm_fault *vmf,
unsigned long addr, int page_nid, int *flags)
{
+ struct vm_area_struct *vma = vmf->vma;
+
folio_get(folio);
/* Record the current PID acceesing VMA */
@@ -4893,7 +4895,7 @@ int numa_migrate_prep(struct folio *folio, struct vm_area_struct *vma,
*flags |= TNF_FAULT_LOCAL;
}
- return mpol_misplaced(folio, vma, addr);
+ return mpol_misplaced(folio, vmf, addr);
}
static vm_fault_t do_numa_page(struct vm_fault *vmf)
modified mm/mempolicy.c
@@ -2495,18 +2495,24 @@ static inline bool mpol_preferred_should_numa_migrate(int exec_node, int folio_n
* Return: NUMA_NO_NODE if the page is in a node that is valid for this
* policy, or a suitable node ID to allocate a replacement folio from.
*/
-int mpol_misplaced(struct folio *folio, struct vm_area_struct *vma,
+int mpol_misplaced(struct folio *folio, struct vm_fault *vmf,
unsigned long addr)
{
struct mempolicy *pol;
pgoff_t ilx;
struct zoneref *z;
int curnid = folio_nid(folio);
+ struct vm_area_struct *vma = vmf->vma;
int thiscpu = raw_smp_processor_id();
- int thisnid = cpu_to_node(thiscpu);
+ int thisnid = numa_node_id();
int polnid = NUMA_NO_NODE;
int ret = NUMA_NO_NODE;
+ /*
+ * Make sure ptl is held so that we don't preempt and we
+ * have a stable smp processor id
+ */
+ lockdep_assert_held(vmf->ptl);
pol = get_vma_policy(vma, addr, folio_order(folio), &ilx);
if (!(pol->flags & MPOL_F_MOF))
goto out;
[back]
next prev parent reply other threads:[~2024-03-03 6:18 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-17 7:31 [PATCH 1/3] mm/mempolicy: Use the already fetched local variable Donet Tom
2024-02-17 7:31 ` [PATCH 2/3] mm/mempolicy: Avoid the fallthrough with MPOLD_BIND in mpol_misplaced Donet Tom
2024-02-19 12:02 ` Michal Hocko
2024-02-19 15:18 ` Donet Tom
2024-02-17 7:31 ` [PATCH 3/3] mm/numa_balancing:Allow migrate on protnone reference with MPOL_PREFERRED_MANY policy Donet Tom
2024-02-19 12:07 ` Michal Hocko
2024-02-19 13:44 ` Donet Tom
2024-02-20 6:36 ` Huang, Ying
2024-02-20 6:44 ` Aneesh Kumar K.V
2024-02-20 7:23 ` Huang, Ying
2024-02-20 7:46 ` Aneesh Kumar K.V
2024-02-20 8:01 ` Huang, Ying
2024-02-19 14:20 ` Michal Hocko
2024-02-19 15:07 ` Donet Tom
2024-02-19 19:12 ` Michal Hocko
2024-02-20 3:57 ` Aneesh Kumar K.V
2024-02-20 8:48 ` Michal Hocko
2024-02-26 13:09 ` Donet Tom
2024-02-20 7:18 ` Huang, Ying
2024-02-20 7:53 ` Aneesh Kumar K.V
2024-02-20 7:58 ` Huang, Ying
2024-03-03 6:16 ` Aneesh Kumar K.V
2024-03-04 1:59 ` Huang, Ying
2024-02-18 21:38 ` [PATCH 1/3] mm/mempolicy: Use the already fetched local variable Andrew Morton
2024-02-19 8:34 ` Donet Tom
2024-02-20 1:21 ` Andrew Morton
2024-02-20 4:10 ` Aneesh Kumar K.V
2024-02-20 6:25 ` Huang, Ying
2024-02-20 6:32 ` Aneesh Kumar K.V
2024-02-20 7:03 ` Aneesh Kumar K.V
2024-02-20 7:22 ` Huang, Ying
2024-02-20 9:03 ` Michal Hocko
2024-03-03 6:17 ` Aneesh Kumar K.V [this message]
2024-03-04 1:49 ` Huang, Ying
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=875xy3ltys.fsf@kernel.org \
--to=aneesh.kumar@kernel.org \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=ben.widawsky@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=donettom@linux.ibm.com \
--cc=feng.tang@intel.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=mhocko@suse.com \
--cc=mike.kravetz@oracle.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=riel@surriel.com \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
--cc=wangkefeng.wang@huawei.com \
--cc=willy@infradead.org \
--cc=ying.huang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.