Message ID | 20240725011647.1306045-4-wangkefeng.wang@huawei.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm: memory_hotplug: improve do_migrate_range() | expand |
Hi Kefeng, kernel test robot noticed the following build errors: [auto build test ERROR on akpm-mm/mm-everything] url: https://github.com/intel-lab-lkp/linux/commits/Kefeng-Wang/mm-memory-failure-add-unmap_posioned_folio/20240725-091923 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20240725011647.1306045-4-wangkefeng.wang%40huawei.com patch subject: [PATCH 3/4] mm: migrate: add isolate_folio_to_list() config: x86_64-randconfig-004-20240726 (https://download.01.org/0day-ci/archive/20240726/202407262129.FJbkroy1-lkp@intel.com/config) compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240726/202407262129.FJbkroy1-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202407262129.FJbkroy1-lkp@intel.com/ All errors (new ones prefixed by >>): ld: mm/memory-failure.o: in function `mf_isolate_folio': >> mm/memory-failure.c:2662:(.text+0x2e8a): undefined reference to `isolate_folio_to_list' vim +2662 mm/memory-failure.c 2659 2660 static bool mf_isolate_folio(struct folio *folio, struct list_head *pagelist) 2661 { > 2662 bool isolated = isolate_folio_to_list(folio, pagelist); 2663 2664 /* 2665 * If we succeed to isolate the folio, we grabbed another refcount on 2666 * the folio, so we can safely drop the one we got from get_any_page(). 2667 * If we failed to isolate the folio, it means that we cannot go further 2668 * and we will return an error, so drop the reference we got from 2669 * get_any_page() as well. 2670 */ 2671 folio_put(folio); 2672 return isolated; 2673 } 2674
On 2024/7/26 22:21, kernel test robot wrote: > Hi Kefeng, > > kernel test robot noticed the following build errors: > > [auto build test ERROR on akpm-mm/mm-everything] > > url: https://github.com/intel-lab-lkp/linux/commits/Kefeng-Wang/mm-memory-failure-add-unmap_posioned_folio/20240725-091923 > base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything > patch link: https://lore.kernel.org/r/20240725011647.1306045-4-wangkefeng.wang%40huawei.com > patch subject: [PATCH 3/4] mm: migrate: add isolate_folio_to_list() > config: x86_64-randconfig-004-20240726 (https://download.01.org/0day-ci/archive/20240726/202407262129.FJbkroy1-lkp@intel.com/config) > compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240726/202407262129.FJbkroy1-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202407262129.FJbkroy1-lkp@intel.com/ > > All errors (new ones prefixed by >>): > > ld: mm/memory-failure.o: in function `mf_isolate_folio': >>> mm/memory-failure.c:2662:(.text+0x2e8a): undefined reference to `isolate_folio_to_list' > > OK, no CONFIG_MIGRATION, will fix in next version, > vim +2662 mm/memory-failure.c > > 2659 > 2660 static bool mf_isolate_folio(struct folio *folio, struct list_head *pagelist) and will kill mf_ioslate_folio() too, we could directly use isolate_folio_to_list() in soft_offline_in_use_page(). Thanks. > 2661 { >> 2662 bool isolated = isolate_folio_to_list(folio, pagelist); > 2663 > 2664 /* > 2665 * If we succeed to isolate the folio, we grabbed another refcount on > 2666 * the folio, so we can safely drop the one we got from get_any_page(). > 2667 * If we failed to isolate the folio, it means that we cannot go further > 2668 * and we will return an error, so drop the reference we got from > 2669 * get_any_page() as well. > 2670 */ > 2671 folio_put(folio); > 2672 return isolated; > 2673 } > 2674 >
On 25.07.24 03:16, Kefeng Wang wrote: > Add isolate_folio_to_list() helper to try to isolate HugeTLB, > no-LRU movable and LRU folios to a list, which will be reused by > do_migrate_range() from memory hotplug soon. > > Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> > --- Acked-by: David Hildenbrand <david@redhat.com>
diff --git a/mm/internal.h b/mm/internal.h index c5bd24c4fa3a..2484191c0764 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -403,6 +403,8 @@ extern unsigned long highest_memmap_pfn; */ #define MAX_RECLAIM_RETRIES 16 +bool isolate_folio_to_list(struct folio *folio, struct list_head *list); + /* * in mm/vmscan.c: */ diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 99d92565cbb0..7e0f143bd51a 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -2659,26 +2659,7 @@ EXPORT_SYMBOL(unpoison_memory); static bool mf_isolate_folio(struct folio *folio, struct list_head *pagelist) { - bool isolated = false; - - if (folio_test_hugetlb(folio)) { - isolated = isolate_hugetlb(folio, pagelist); - } else { - bool lru = !__folio_test_movable(folio); - - if (lru) - isolated = folio_isolate_lru(folio); - else - isolated = isolate_movable_page(&folio->page, - ISOLATE_UNEVICTABLE); - - if (isolated) { - list_add(&folio->lru, pagelist); - if (lru) - node_stat_add_folio(folio, NR_ISOLATED_ANON + - folio_is_file_lru(folio)); - } - } + bool isolated = isolate_folio_to_list(folio, pagelist); /* * If we succeed to isolate the folio, we grabbed another refcount on diff --git a/mm/migrate.c b/mm/migrate.c index e7296c0fb5d5..51cab1103502 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -177,6 +177,33 @@ void putback_movable_pages(struct list_head *l) } } +/* Must be called with an elevated refcount on the folio */ +bool isolate_folio_to_list(struct folio *folio, struct list_head *list) +{ + bool isolated = false; + + if (folio_test_hugetlb(folio)) { + isolated = isolate_hugetlb(folio, list); + } else { + bool lru = !__folio_test_movable(folio); + + if (lru) + isolated = folio_isolate_lru(folio); + else + isolated = isolate_movable_page(&folio->page, + ISOLATE_UNEVICTABLE); + + if (isolated) { + list_add(&folio->lru, list); + if (lru) + node_stat_add_folio(folio, NR_ISOLATED_ANON + + folio_is_file_lru(folio)); + } + } + + return isolated; +} + /* * Restore a potential migration pte to a working pte entry */
Add isolate_folio_to_list() helper to try to isolate HugeTLB, no-LRU movable and LRU folios to a list, which will be reused by do_migrate_range() from memory hotplug soon. Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> --- mm/internal.h | 2 ++ mm/memory-failure.c | 21 +-------------------- mm/migrate.c | 27 +++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 20 deletions(-)