* + mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch added to mm-unstable branch
@ 2024-08-16 21:42 Andrew Morton
2024-08-17 8:31 ` Kefeng Wang
0 siblings, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2024-08-16 21:42 UTC (permalink / raw)
To: mm-commits, osalvador, nao.horiguchi, linmiaohe, david,
wangkefeng.wang, akpm
The patch titled
Subject: mm: memory_hotplug: remove head variable in do_migrate_range()
has been added to the -mm mm-unstable branch. Its filename is
mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
This patch will later appear in the mm-unstable branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via the mm-everything
branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there every 2-3 working days
------------------------------------------------------
From: Kefeng Wang <wangkefeng.wang@huawei.com>
Subject: mm: memory_hotplug: remove head variable in do_migrate_range()
Date: Fri, 16 Aug 2024 17:04:31 +0800
Patch series "mm: memory_hotplug: improve do_migrate_range()", v2.
Unify hwpoisoned page handling and isolation of HugeTLB/LRU/non-LRU
movable page, also convert to use folios in do_migrate_range().
This patch (of 2):
Directly use a folio for HugeTLB and THP when calculate the next pfn, then
remove unused head variable.
Link: https://lkml.kernel.org/r/20240816090435.888946-1-wangkefeng.wang@huawei.com
Link: https://lkml.kernel.org/r/20240816090435.888946-2-wangkefeng.wang@huawei.com
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
Cc: Oscar Salvador <osalvador@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/memory_hotplug.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
--- a/mm/memory_hotplug.c~mm-memory_hotplug-remove-head-variable-in-do_migrate_range
+++ a/mm/memory_hotplug.c
@@ -1773,7 +1773,7 @@ found:
static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
{
unsigned long pfn;
- struct page *page, *head;
+ struct page *page;
LIST_HEAD(source);
static DEFINE_RATELIMIT_STATE(migrate_rs, DEFAULT_RATELIMIT_INTERVAL,
DEFAULT_RATELIMIT_BURST);
@@ -1786,14 +1786,20 @@ static void do_migrate_range(unsigned lo
continue;
page = pfn_to_page(pfn);
folio = page_folio(page);
- head = &folio->page;
- if (PageHuge(page)) {
- pfn = page_to_pfn(head) + compound_nr(head) - 1;
- isolate_hugetlb(folio, &source);
- continue;
- } else if (PageTransHuge(page))
- pfn = page_to_pfn(head) + thp_nr_pages(page) - 1;
+ /*
+ * The folio hold no reference or lock, it might be changed
+ * concurrently(eg, split), folio_nr_pages() may read garbage,
+ * but out loop could handle that as it revisits the split
+ * folio later.
+ */
+ if (folio_test_large(folio)) {
+ pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1;
+ if (folio_test_hugetlb(folio)) {
+ isolate_hugetlb(folio);
+ continue;
+ }
+ }
/*
* HWPoison pages have elevated reference counts so the migration would
_
Patches currently in -mm which might be from wangkefeng.wang@huawei.com are
mm-hugetlb-remove-left-over-comment-about-follow_huge_foo.patch
mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
mm-memory-failure-add-unmap_posioned_folio.patch
mm-memory_hotplug-check-hwpoisoned-page-firstly-in-do_migrate_range.patch
mm-migrate-add-isolate_folio_to_list.patch
mm-memory_hotplug-unify-huge-lru-non-lru-movable-folio-isolation.patch
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: + mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch added to mm-unstable branch
2024-08-16 21:42 Andrew Morton
@ 2024-08-17 8:31 ` Kefeng Wang
2024-08-18 2:28 ` Andrew Morton
0 siblings, 1 reply; 5+ messages in thread
From: Kefeng Wang @ 2024-08-17 8:31 UTC (permalink / raw)
To: Andrew Morton, mm-commits, osalvador, nao.horiguchi, linmiaohe,
david
Hi Andrew, please drop this series, patch1 has build issue(isolate_hugetlb)
when rebase, and patch2 fix it, I will resend new patches.
On 2024/8/17 5:42, Andrew Morton wrote:
>
> The patch titled
> Subject: mm: memory_hotplug: remove head variable in do_migrate_range()
> has been added to the -mm mm-unstable branch. Its filename is
> mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
>
> This patch will shortly appear at
> https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
>
> This patch will later appear in the mm-unstable branch at
> git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
>
> Before you just go and hit "reply", please:
> a) Consider who else should be cc'ed
> b) Prefer to cc a suitable mailing list as well
> c) Ideally: find the original patch on the mailing list and do a
> reply-to-all to that, adding suitable additional cc's
>
> *** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
>
> The -mm tree is included into linux-next via the mm-everything
> branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
> and is updated there every 2-3 working days
>
> ------------------------------------------------------
> From: Kefeng Wang <wangkefeng.wang@huawei.com>
> Subject: mm: memory_hotplug: remove head variable in do_migrate_range()
> Date: Fri, 16 Aug 2024 17:04:31 +0800
>
> Patch series "mm: memory_hotplug: improve do_migrate_range()", v2.
>
> Unify hwpoisoned page handling and isolation of HugeTLB/LRU/non-LRU
> movable page, also convert to use folios in do_migrate_range().
>
>
> This patch (of 2):
>
> Directly use a folio for HugeTLB and THP when calculate the next pfn, then
> remove unused head variable.
>
> Link: https://lkml.kernel.org/r/20240816090435.888946-1-wangkefeng.wang@huawei.com
> Link: https://lkml.kernel.org/r/20240816090435.888946-2-wangkefeng.wang@huawei.com
> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
> Cc: David Hildenbrand <david@redhat.com>
> Cc: Miaohe Lin <linmiaohe@huawei.com>
> Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
> Cc: Oscar Salvador <osalvador@suse.de>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> ---
>
> mm/memory_hotplug.c | 22 ++++++++++++++--------
> 1 file changed, 14 insertions(+), 8 deletions(-)
>
> --- a/mm/memory_hotplug.c~mm-memory_hotplug-remove-head-variable-in-do_migrate_range
> +++ a/mm/memory_hotplug.c
> @@ -1773,7 +1773,7 @@ found:
> static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> {
> unsigned long pfn;
> - struct page *page, *head;
> + struct page *page;
> LIST_HEAD(source);
> static DEFINE_RATELIMIT_STATE(migrate_rs, DEFAULT_RATELIMIT_INTERVAL,
> DEFAULT_RATELIMIT_BURST);
> @@ -1786,14 +1786,20 @@ static void do_migrate_range(unsigned lo
> continue;
> page = pfn_to_page(pfn);
> folio = page_folio(page);
> - head = &folio->page;
>
> - if (PageHuge(page)) {
> - pfn = page_to_pfn(head) + compound_nr(head) - 1;
> - isolate_hugetlb(folio, &source);
> - continue;
> - } else if (PageTransHuge(page))
> - pfn = page_to_pfn(head) + thp_nr_pages(page) - 1;
> + /*
> + * The folio hold no reference or lock, it might be changed
> + * concurrently(eg, split), folio_nr_pages() may read garbage,
> + * but out loop could handle that as it revisits the split
> + * folio later.
> + */
> + if (folio_test_large(folio)) {
> + pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1;
> + if (folio_test_hugetlb(folio)) {
> + isolate_hugetlb(folio);
> + continue;
> + }
> + }
>
> /*
> * HWPoison pages have elevated reference counts so the migration would
> _
>
> Patches currently in -mm which might be from wangkefeng.wang@huawei.com are
>
> mm-hugetlb-remove-left-over-comment-about-follow_huge_foo.patch
> mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
> mm-memory-failure-add-unmap_posioned_folio.patch
> mm-memory_hotplug-check-hwpoisoned-page-firstly-in-do_migrate_range.patch
> mm-migrate-add-isolate_folio_to_list.patch
> mm-memory_hotplug-unify-huge-lru-non-lru-movable-folio-isolation.patch
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: + mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch added to mm-unstable branch
2024-08-17 8:31 ` Kefeng Wang
@ 2024-08-18 2:28 ` Andrew Morton
0 siblings, 0 replies; 5+ messages in thread
From: Andrew Morton @ 2024-08-18 2:28 UTC (permalink / raw)
To: Kefeng Wang; +Cc: mm-commits, osalvador, nao.horiguchi, linmiaohe, david
On Sat, 17 Aug 2024 16:31:12 +0800 Kefeng Wang <wangkefeng.wang@huawei.com> wrote:
> Hi Andrew, please drop this series, patch1 has build issue(isolate_hugetlb)
> when rebase, and patch2 fix it, I will resend new patches.
Dropped, thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
* + mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch added to mm-unstable branch
@ 2024-08-20 5:38 Andrew Morton
0 siblings, 0 replies; 5+ messages in thread
From: Andrew Morton @ 2024-08-20 5:38 UTC (permalink / raw)
To: mm-commits, osalvador, nao.horiguchi, linmiaohe, Jonathan.Cameron,
david, wangkefeng.wang, akpm
The patch titled
Subject: mm: memory_hotplug: remove head variable in do_migrate_range()
has been added to the -mm mm-unstable branch. Its filename is
mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
This patch will later appear in the mm-unstable branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via the mm-everything
branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there every 2-3 working days
------------------------------------------------------
From: Kefeng Wang <wangkefeng.wang@huawei.com>
Subject: mm: memory_hotplug: remove head variable in do_migrate_range()
Date: Sat, 17 Aug 2024 16:49:37 +0800
Patch series "mm: memory_hotplug: improve do_migrate_range()", v2.
Unify hwpoisoned page handling and isolation of HugeTLB/LRU/non-LRU
movable page, also convert to use folios in do_migrate_range().
This patch (of 5):
Directly use a folio for HugeTLB and THP when calculate the next pfn, then
remove unused head variable.
Link: https://lkml.kernel.org/r/20240817084941.2375713-1-wangkefeng.wang@huawei.com
Link: https://lkml.kernel.org/r/20240817084941.2375713-2-wangkefeng.wang@huawei.com
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/memory_hotplug.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
--- a/mm/memory_hotplug.c~mm-memory_hotplug-remove-head-variable-in-do_migrate_range
+++ a/mm/memory_hotplug.c
@@ -1773,7 +1773,7 @@ found:
static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
{
unsigned long pfn;
- struct page *page, *head;
+ struct page *page;
LIST_HEAD(source);
static DEFINE_RATELIMIT_STATE(migrate_rs, DEFAULT_RATELIMIT_INTERVAL,
DEFAULT_RATELIMIT_BURST);
@@ -1786,14 +1786,20 @@ static void do_migrate_range(unsigned lo
continue;
page = pfn_to_page(pfn);
folio = page_folio(page);
- head = &folio->page;
- if (PageHuge(page)) {
- pfn = page_to_pfn(head) + compound_nr(head) - 1;
- isolate_hugetlb(folio, &source);
- continue;
- } else if (PageTransHuge(page))
- pfn = page_to_pfn(head) + thp_nr_pages(page) - 1;
+ /*
+ * The folio hold no reference or lock, it might be changed
+ * concurrently(eg, split), folio_nr_pages() may read garbage,
+ * but out loop could handle that as it revisits the split
+ * folio later.
+ */
+ if (folio_test_large(folio)) {
+ pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1;
+ if (folio_test_hugetlb(folio)) {
+ isolate_hugetlb(folio, &source);
+ continue;
+ }
+ }
/*
* HWPoison pages have elevated reference counts so the migration would
_
Patches currently in -mm which might be from wangkefeng.wang@huawei.com are
mm-hugetlb-remove-left-over-comment-about-follow_huge_foo.patch
mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
mm-memory-failure-add-unmap_posioned_folio.patch
mm-memory_hotplug-check-hwpoisoned-page-firstly-in-do_migrate_range.patch
mm-migrate-add-isolate_folio_to_list.patch
mm-memory_hotplug-unify-huge-lru-non-lru-movable-folio-isolation.patch
^ permalink raw reply [flat|nested] 5+ messages in thread
* + mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch added to mm-unstable branch
@ 2024-08-27 23:03 Andrew Morton
0 siblings, 0 replies; 5+ messages in thread
From: Andrew Morton @ 2024-08-27 23:03 UTC (permalink / raw)
To: mm-commits, osalvador, nao.horiguchi, linmiaohe, Jonathan.Cameron,
david, dan.carpenter, wangkefeng.wang, akpm
The patch titled
Subject: mm: memory_hotplug: remove head variable in do_migrate_range()
has been added to the -mm mm-unstable branch. Its filename is
mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
This patch will later appear in the mm-unstable branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via the mm-everything
branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there every 2-3 working days
------------------------------------------------------
From: Kefeng Wang <wangkefeng.wang@huawei.com>
Subject: mm: memory_hotplug: remove head variable in do_migrate_range()
Date: Tue, 27 Aug 2024 19:47:24 +0800
Patch series "mm: memory_hotplug: improve do_migrate_range()", v3.
Unify hwpoisoned page handling and isolation of HugeTLB/LRU/non-LRU
movable page, also convert to use folios in do_migrate_range().
This patch (of 5):
Directly use a folio for HugeTLB and THP when calculate the next pfn, then
remove unused head variable.
Link: https://lkml.kernel.org/r/20240827114728.3212578-1-wangkefeng.wang@huawei.com
Link: https://lkml.kernel.org/r/20240827114728.3212578-2-wangkefeng.wang@huawei.com
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Reviewed-by: Miaohe Lin <linmiaohe@huawei.com>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Dan Carpenter <dan.carpenter@linaro.org>
Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
Cc: Oscar Salvador <osalvador@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/memory_hotplug.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
--- a/mm/memory_hotplug.c~mm-memory_hotplug-remove-head-variable-in-do_migrate_range
+++ a/mm/memory_hotplug.c
@@ -1773,7 +1773,7 @@ found:
static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
{
unsigned long pfn;
- struct page *page, *head;
+ struct page *page;
LIST_HEAD(source);
static DEFINE_RATELIMIT_STATE(migrate_rs, DEFAULT_RATELIMIT_INTERVAL,
DEFAULT_RATELIMIT_BURST);
@@ -1786,14 +1786,20 @@ static void do_migrate_range(unsigned lo
continue;
page = pfn_to_page(pfn);
folio = page_folio(page);
- head = &folio->page;
- if (PageHuge(page)) {
- pfn = page_to_pfn(head) + compound_nr(head) - 1;
- isolate_hugetlb(folio, &source);
- continue;
- } else if (PageTransHuge(page))
- pfn = page_to_pfn(head) + thp_nr_pages(page) - 1;
+ /*
+ * No reference or lock is held on the folio, so it might
+ * be modified concurrently (e.g. split). As such,
+ * folio_nr_pages() may read garbage. This is fine as the outer
+ * loop will revisit the split folio later.
+ */
+ if (folio_test_large(folio)) {
+ pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1;
+ if (folio_test_hugetlb(folio)) {
+ isolate_hugetlb(folio, &source);
+ continue;
+ }
+ }
/*
* HWPoison pages have elevated reference counts so the migration would
_
Patches currently in -mm which might be from wangkefeng.wang@huawei.com are
mm-hugetlb-remove-left-over-comment-about-follow_huge_foo.patch
mm-remove-migration-for-hugepage-in-isolate_single_pageblock.patch
mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch
mm-memory-failure-add-unmap_poisoned_folio.patch
mm-memory_hotplug-check-hwpoisoned-page-firstly-in-do_migrate_range.patch
mm-migrate-add-isolate_folio_to_list.patch
mm-memory_hotplug-unify-huge-lru-non-lru-movable-folio-isolation.patch
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-08-27 23:03 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-27 23:03 + mm-memory_hotplug-remove-head-variable-in-do_migrate_range.patch added to mm-unstable branch Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2024-08-20 5:38 Andrew Morton
2024-08-16 21:42 Andrew Morton
2024-08-17 8:31 ` Kefeng Wang
2024-08-18 2:28 ` Andrew Morton
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.