Commit 3c305ec1 authored by Zi Yan's avatar Zi Yan Committed by Tong Tiangen
Browse files

memory tiering: count PGPROMOTE_SUCCESS when mem tiering is enabled.

mainline inclusion
from mainline-v6.12-rc1
commit ac59a1f0146f46bad7d5f8d1b20756ece43122ec
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IB8EOE

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ac59a1f0146f46bad7d5f8d1b20756ece43122ec

--------------------------------

memory tiering can be enabled/disabled at runtime and
sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING is used to
check it.  In migrate_misplaced_folio(), the check is missing when
PGPROMOTE_SUCCESS is incremented.  Add the missing check.

Link: https://lkml.kernel.org/r/20240724130115.793641-4-ziy@nvidia.com


Fixes: 33024536 ("memory tiering: hot page selection with hint page fault latency")
Reported-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Closes: https://lore.kernel.org/linux-mm/f4ae2c9c-fe40-4807-bdb2-64cf2d716c1a@huawei.com/


Signed-off-by: default avatarZi Yan <ziy@nvidia.com>
Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: "Huang, Ying" <ying.huang@intel.com>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Conflicts:
	mm/migrate.c
[context conflicts, not affect.]
Signed-off-by: default avatarTong Tiangen <tongtiangen@huawei.com>
parent 5b9ed9fb
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -2661,7 +2661,9 @@ int migrate_misplaced_folio(struct folio *folio, struct vm_area_struct *vma,
	}
	if (nr_succeeded) {
		count_vm_numa_events(NUMA_PAGE_MIGRATE, nr_succeeded);
		if (!node_is_toptier(folio_nid(folio)) && node_is_toptier(node))
		if ((sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING)
		    && !node_is_toptier(folio_nid(folio))
		    && node_is_toptier(node))
			mod_node_page_state(pgdat, PGPROMOTE_SUCCESS,
					    nr_succeeded);
	}