All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [android-common:android14-kiwi-6.1 336/336] mm/compaction.c:816: warning: Function parameter or member 'cc_ext' not described in 'isolate_migratepages_block'
Date: Mon, 19 Oct 2026 16:19:43 +0200	[thread overview]
Message-ID: <202610191640.fwTK8mIG-lkp@intel.com> (raw)

tree:   https://android.googlesource.com/kernel/common android14-kiwi-6.1
head:   85239205a20932568f405bb06f7dc3187e755674
commit: d6f18f121b7c664094629f6af4d9f43acb7185cc [336/336] ANDROID: mm: do not allow file-backed pages from CMA
config: x86_64-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20261019/202610191640.fwTK8mIG-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261019/202610191640.fwTK8mIG-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/202610191640.fwTK8mIG-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> mm/compaction.c:816: warning: Function parameter or member 'cc_ext' not described in 'isolate_migratepages_block'
>> mm/compaction.c:816: warning: Excess function parameter 'cc' description in 'isolate_migratepages_block'


vim +816 mm/compaction.c

748446bb6b5a939 Mel Gorman              2010-05-24   795  
2fe86e000407612 Michal Nazarewicz       2012-01-30   796  /**
edc2ca612496792 Vlastimil Babka         2014-10-09   797   * isolate_migratepages_block() - isolate all migrate-able pages within
edc2ca612496792 Vlastimil Babka         2014-10-09   798   *				  a single pageblock
2fe86e000407612 Michal Nazarewicz       2012-01-30   799   * @cc:		Compaction control structure.
edc2ca612496792 Vlastimil Babka         2014-10-09   800   * @low_pfn:	The first PFN to isolate
edc2ca612496792 Vlastimil Babka         2014-10-09   801   * @end_pfn:	The one-past-the-last PFN to isolate, within same pageblock
89f6c88a6ab4a11 Hugh Dickins            2022-03-22   802   * @mode:	Isolation mode to be used.
2fe86e000407612 Michal Nazarewicz       2012-01-30   803   *
2fe86e000407612 Michal Nazarewicz       2012-01-30   804   * Isolate all pages that can be migrated from the range specified by
edc2ca612496792 Vlastimil Babka         2014-10-09   805   * [low_pfn, end_pfn). The range is expected to be within same pageblock.
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   806   * Returns errno, like -EAGAIN or -EINTR in case e.g signal pending or congestion,
369fa227c21949b Oscar Salvador          2021-05-04   807   * -ENOMEM in case we could not allocate a page, or 0.
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   808   * cc->migrate_pfn will contain the next pfn to scan.
2fe86e000407612 Michal Nazarewicz       2012-01-30   809   *
edc2ca612496792 Vlastimil Babka         2014-10-09   810   * The pages are isolated on cc->migratepages list (not required to be empty),
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   811   * and cc->nr_migratepages is updated accordingly.
748446bb6b5a939 Mel Gorman              2010-05-24   812   */
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   813  static int
d6f18f121b7c664 Minchan Kim             2023-01-12   814  isolate_migratepages_block(struct compact_control_ext *cc_ext, unsigned long low_pfn,
89f6c88a6ab4a11 Hugh Dickins            2022-03-22   815  			unsigned long end_pfn, isolate_mode_t mode)
748446bb6b5a939 Mel Gorman              2010-05-24  @816  {
d6f18f121b7c664 Minchan Kim             2023-01-12   817  	struct compact_control *cc = cc_ext->cc;
5f438eee8f2e972 Andrey Ryabinin         2019-03-05   818  	pg_data_t *pgdat = cc->zone->zone_pgdat;
b7aba6984dc0485 Mel Gorman              2011-01-13   819  	unsigned long nr_scanned = 0, nr_isolated = 0;
fa9add641b1b1c5 Hugh Dickins            2012-05-29   820  	struct lruvec *lruvec;
b8b2d8253236331 Xiubo Li                2014-10-09   821  	unsigned long flags = 0;
6168d0da2b479ce Alex Shi                2020-12-15   822  	struct lruvec *locked = NULL;
bb13ffeb9f6bfeb Mel Gorman              2012-10-08   823  	struct page *page = NULL, *valid_page = NULL;
89f6c88a6ab4a11 Hugh Dickins            2022-03-22   824  	struct address_space *mapping;
e34d85f0e3c60f7 Joonsoo Kim             2015-02-11   825  	unsigned long start_pfn = low_pfn;
fdd048e12c9a46d Vlastimil Babka         2016-05-19   826  	bool skip_on_failure = false;
fdd048e12c9a46d Vlastimil Babka         2016-05-19   827  	unsigned long next_skip_pfn = 0;
e380bebe4771548 Mel Gorman              2019-03-05   828  	bool skip_updated = false;
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   829  	int ret = 0;
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   830  
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   831  	cc->migrate_pfn = low_pfn;
748446bb6b5a939 Mel Gorman              2010-05-24   832  
748446bb6b5a939 Mel Gorman              2010-05-24   833  	/*
748446bb6b5a939 Mel Gorman              2010-05-24   834  	 * Ensure that there are not too many pages isolated from the LRU
748446bb6b5a939 Mel Gorman              2010-05-24   835  	 * list by either parallel reclaimers or compaction. If there are,
748446bb6b5a939 Mel Gorman              2010-05-24   836  	 * delay for some time until fewer pages are isolated
748446bb6b5a939 Mel Gorman              2010-05-24   837  	 */
5f438eee8f2e972 Andrey Ryabinin         2019-03-05   838  	while (unlikely(too_many_isolated(pgdat))) {
d20bdd571ee5c99 Zi Yan                  2020-11-13   839  		/* stop isolation if there are still pages not migrated */
d20bdd571ee5c99 Zi Yan                  2020-11-13   840  		if (cc->nr_migratepages)
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   841  			return -EAGAIN;
d20bdd571ee5c99 Zi Yan                  2020-11-13   842  
f9e35b3b41f47c4 Mel Gorman              2011-06-15   843  		/* async migration should just abort */
e0b9daeb453e602 David Rientjes          2014-06-04   844  		if (cc->mode == MIGRATE_ASYNC)
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   845  			return -EAGAIN;
f9e35b3b41f47c4 Mel Gorman              2011-06-15   846  
c3f4a9a2b082c53 Mel Gorman              2021-11-05   847  		reclaim_throttle(pgdat, VMSCAN_THROTTLE_ISOLATED);
748446bb6b5a939 Mel Gorman              2010-05-24   848  
748446bb6b5a939 Mel Gorman              2010-05-24   849  		if (fatal_signal_pending(current))
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   850  			return -EINTR;
748446bb6b5a939 Mel Gorman              2010-05-24   851  	}
748446bb6b5a939 Mel Gorman              2010-05-24   852  
cf66f0700c8f1d7 Mel Gorman              2019-03-05   853  	cond_resched();
aeef4b83806f49a David Rientjes          2014-06-04   854  
fdd048e12c9a46d Vlastimil Babka         2016-05-19   855  	if (cc->direct_compaction && (cc->mode == MIGRATE_ASYNC)) {
fdd048e12c9a46d Vlastimil Babka         2016-05-19   856  		skip_on_failure = true;
fdd048e12c9a46d Vlastimil Babka         2016-05-19   857  		next_skip_pfn = block_end_pfn(low_pfn, cc->order);
fdd048e12c9a46d Vlastimil Babka         2016-05-19   858  	}
fdd048e12c9a46d Vlastimil Babka         2016-05-19   859  
748446bb6b5a939 Mel Gorman              2010-05-24   860  	/* Time to isolate some pages for migration */
748446bb6b5a939 Mel Gorman              2010-05-24   861  	for (; low_pfn < end_pfn; low_pfn++) {
29c0dde830f8c08 Vlastimil Babka         2015-09-08   862  
fdd048e12c9a46d Vlastimil Babka         2016-05-19   863  		if (skip_on_failure && low_pfn >= next_skip_pfn) {
fdd048e12c9a46d Vlastimil Babka         2016-05-19   864  			/*
fdd048e12c9a46d Vlastimil Babka         2016-05-19   865  			 * We have isolated all migration candidates in the
fdd048e12c9a46d Vlastimil Babka         2016-05-19   866  			 * previous order-aligned block, and did not skip it due
fdd048e12c9a46d Vlastimil Babka         2016-05-19   867  			 * to failure. We should migrate the pages now and
fdd048e12c9a46d Vlastimil Babka         2016-05-19   868  			 * hopefully succeed compaction.
fdd048e12c9a46d Vlastimil Babka         2016-05-19   869  			 */
fdd048e12c9a46d Vlastimil Babka         2016-05-19   870  			if (nr_isolated)
fdd048e12c9a46d Vlastimil Babka         2016-05-19   871  				break;
fdd048e12c9a46d Vlastimil Babka         2016-05-19   872  
fdd048e12c9a46d Vlastimil Babka         2016-05-19   873  			/*
fdd048e12c9a46d Vlastimil Babka         2016-05-19   874  			 * We failed to isolate in the previous order-aligned
fdd048e12c9a46d Vlastimil Babka         2016-05-19   875  			 * block. Set the new boundary to the end of the
fdd048e12c9a46d Vlastimil Babka         2016-05-19   876  			 * current block. Note we can't simply increase
fdd048e12c9a46d Vlastimil Babka         2016-05-19   877  			 * next_skip_pfn by 1 << order, as low_pfn might have
fdd048e12c9a46d Vlastimil Babka         2016-05-19   878  			 * been incremented by a higher number due to skipping
fdd048e12c9a46d Vlastimil Babka         2016-05-19   879  			 * a compound or a high-order buddy page in the
fdd048e12c9a46d Vlastimil Babka         2016-05-19   880  			 * previous loop iteration.
fdd048e12c9a46d Vlastimil Babka         2016-05-19   881  			 */
fdd048e12c9a46d Vlastimil Babka         2016-05-19   882  			next_skip_pfn = block_end_pfn(low_pfn, cc->order);
fdd048e12c9a46d Vlastimil Babka         2016-05-19   883  		}
fdd048e12c9a46d Vlastimil Babka         2016-05-19   884  
8b44d2791f91256 Vlastimil Babka         2014-10-09   885  		/*
8b44d2791f91256 Vlastimil Babka         2014-10-09   886  		 * Periodically drop the lock (if held) regardless of its
670105a25608aff Mel Gorman              2019-08-02   887  		 * contention, to give chance to IRQs. Abort completely if
670105a25608aff Mel Gorman              2019-08-02   888  		 * a fatal signal is pending.
8b44d2791f91256 Vlastimil Babka         2014-10-09   889  		 */
c036ddffe4acb0a Miaohe Lin              2022-04-28   890  		if (!(low_pfn % COMPACT_CLUSTER_MAX)) {
6168d0da2b479ce Alex Shi                2020-12-15   891  			if (locked) {
6168d0da2b479ce Alex Shi                2020-12-15   892  				unlock_page_lruvec_irqrestore(locked, flags);
6168d0da2b479ce Alex Shi                2020-12-15   893  				locked = NULL;
6168d0da2b479ce Alex Shi                2020-12-15   894  			}
6168d0da2b479ce Alex Shi                2020-12-15   895  
6168d0da2b479ce Alex Shi                2020-12-15   896  			if (fatal_signal_pending(current)) {
6168d0da2b479ce Alex Shi                2020-12-15   897  				cc->contended = true;
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04   898  				ret = -EINTR;
6168d0da2b479ce Alex Shi                2020-12-15   899  
670105a25608aff Mel Gorman              2019-08-02   900  				goto fatal_pending;
670105a25608aff Mel Gorman              2019-08-02   901  			}
b2eef8c0d09101b Andrea Arcangeli        2011-03-22   902  
6168d0da2b479ce Alex Shi                2020-12-15   903  			cond_resched();
6168d0da2b479ce Alex Shi                2020-12-15   904  		}
6168d0da2b479ce Alex Shi                2020-12-15   905  
b7aba6984dc0485 Mel Gorman              2011-01-13   906  		nr_scanned++;
748446bb6b5a939 Mel Gorman              2010-05-24   907  
748446bb6b5a939 Mel Gorman              2010-05-24   908  		page = pfn_to_page(low_pfn);
dc9086004b3d5db Mel Gorman              2012-02-08   909  
e380bebe4771548 Mel Gorman              2019-03-05   910  		/*
e380bebe4771548 Mel Gorman              2019-03-05   911  		 * Check if the pageblock has already been marked skipped.
e380bebe4771548 Mel Gorman              2019-03-05   912  		 * Only the aligned PFN is checked as the caller isolates
e380bebe4771548 Mel Gorman              2019-03-05   913  		 * COMPACT_CLUSTER_MAX at a time so the second call must
e380bebe4771548 Mel Gorman              2019-03-05   914  		 * not falsely conclude that the block should be skipped.
e380bebe4771548 Mel Gorman              2019-03-05   915  		 */
ee0913c47196102 Kefeng Wang             2022-09-07   916  		if (!valid_page && pageblock_aligned(low_pfn)) {
4af12d04e71c2d0 Miaohe Lin              2022-04-28   917  			if (!isolation_suitable(cc, page)) {
e380bebe4771548 Mel Gorman              2019-03-05   918  				low_pfn = end_pfn;
9df41314390b81a Alex Shi                2020-12-15   919  				page = NULL;
e380bebe4771548 Mel Gorman              2019-03-05   920  				goto isolate_abort;
e380bebe4771548 Mel Gorman              2019-03-05   921  			}
bb13ffeb9f6bfeb Mel Gorman              2012-10-08   922  			valid_page = page;
e380bebe4771548 Mel Gorman              2019-03-05   923  		}
bb13ffeb9f6bfeb Mel Gorman              2012-10-08   924  
369fa227c21949b Oscar Salvador          2021-05-04   925  		if (PageHuge(page) && cc->alloc_contig) {
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   926  			ret = isolate_or_dissolve_huge_page(page, &cc->migratepages);
369fa227c21949b Oscar Salvador          2021-05-04   927  
369fa227c21949b Oscar Salvador          2021-05-04   928  			/*
369fa227c21949b Oscar Salvador          2021-05-04   929  			 * Fail isolation in case isolate_or_dissolve_huge_page()
369fa227c21949b Oscar Salvador          2021-05-04   930  			 * reports an error. In case of -ENOMEM, abort right away.
369fa227c21949b Oscar Salvador          2021-05-04   931  			 */
369fa227c21949b Oscar Salvador          2021-05-04   932  			if (ret < 0) {
369fa227c21949b Oscar Salvador          2021-05-04   933  				 /* Do not report -EBUSY down the chain */
369fa227c21949b Oscar Salvador          2021-05-04   934  				if (ret == -EBUSY)
369fa227c21949b Oscar Salvador          2021-05-04   935  					ret = 0;
66fe1cf7f581593 Miaohe Lin              2022-04-28   936  				low_pfn += compound_nr(page) - 1;
369fa227c21949b Oscar Salvador          2021-05-04   937  				goto isolate_fail;
369fa227c21949b Oscar Salvador          2021-05-04   938  			}
369fa227c21949b Oscar Salvador          2021-05-04   939  
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   940  			if (PageHuge(page)) {
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   941  				/*
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   942  				 * Hugepage was successfully isolated and placed
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   943  				 * on the cc->migratepages list.
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   944  				 */
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   945  				low_pfn += compound_nr(page) - 1;
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   946  				goto isolate_success_no_list;
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   947  			}
ae37c7ff79f1f03 Oscar Salvador          2021-05-04   948  
369fa227c21949b Oscar Salvador          2021-05-04   949  			/*
369fa227c21949b Oscar Salvador          2021-05-04   950  			 * Ok, the hugepage was dissolved. Now these pages are
369fa227c21949b Oscar Salvador          2021-05-04   951  			 * Buddy and cannot be re-allocated because they are
369fa227c21949b Oscar Salvador          2021-05-04   952  			 * isolated. Fall-through as the check below handles
369fa227c21949b Oscar Salvador          2021-05-04   953  			 * Buddy pages.
369fa227c21949b Oscar Salvador          2021-05-04   954  			 */
369fa227c21949b Oscar Salvador          2021-05-04   955  		}
369fa227c21949b Oscar Salvador          2021-05-04   956  
c122b2087ab9419 Joonsoo Kim             2014-04-07   957  		/*
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   958  		 * Skip if free. We read page order here without zone lock
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   959  		 * which is generally unsafe, but the race window is small and
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   960  		 * the worst thing that can happen is that we skip some
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   961  		 * potential isolation targets.
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   962  		 */
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   963  		if (PageBuddy(page)) {
ab130f9108dcf20 Matthew Wilcox (Oracle  2020-10-15   964) 			unsigned long freepage_order = buddy_order_unsafe(page);
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   965  
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   966  			/*
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   967  			 * Without lock, we cannot be sure that what we got is
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   968  			 * a valid page order. Consider only values in the
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   969  			 * valid order range to prevent low_pfn overflow.
c122b2087ab9419 Joonsoo Kim             2014-04-07   970  			 */
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   971  			if (freepage_order > 0 && freepage_order < MAX_ORDER)
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   972  				low_pfn += (1UL << freepage_order) - 1;
c122b2087ab9419 Joonsoo Kim             2014-04-07   973  			continue;
99c0fd5e51c4479 Vlastimil Babka         2014-10-09   974  		}
9927af740b1b9b1 Mel Gorman              2011-01-13   975  
bc835011afbea39 Andrea Arcangeli        2011-01-13   976  		/*
29c0dde830f8c08 Vlastimil Babka         2015-09-08   977  		 * Regardless of being on LRU, compound pages such as THP and
1da2f328fa643bd Rik van Riel            2020-04-01   978  		 * hugetlbfs are not to be compacted unless we are attempting
1da2f328fa643bd Rik van Riel            2020-04-01   979  		 * an allocation much larger than the huge page size (eg CMA).
1da2f328fa643bd Rik van Riel            2020-04-01   980  		 * We can potentially save a lot of iterations if we skip them
1da2f328fa643bd Rik van Riel            2020-04-01   981  		 * at once. The check is racy, but we can consider only valid
1da2f328fa643bd Rik van Riel            2020-04-01   982  		 * values and the only danger is skipping too much.
bc835011afbea39 Andrea Arcangeli        2011-01-13   983  		 */
1da2f328fa643bd Rik van Riel            2020-04-01   984  		if (PageCompound(page) && !cc->alloc_contig) {
21dc7e023611fbc David Rientjes          2017-11-17   985  			const unsigned int order = compound_order(page);
edc2ca612496792 Vlastimil Babka         2014-10-09   986  
d3c85bad89b9153 Vlastimil Babka         2017-11-17   987  			if (likely(order < MAX_ORDER))
21dc7e023611fbc David Rientjes          2017-11-17   988  				low_pfn += (1UL << order) - 1;
fdd048e12c9a46d Vlastimil Babka         2016-05-19   989  			goto isolate_fail;
2a1402aa044b55c Mel Gorman              2012-10-08   990  		}
2a1402aa044b55c Mel Gorman              2012-10-08   991  
bda807d4445414e Minchan Kim             2016-07-26   992  		/*
bda807d4445414e Minchan Kim             2016-07-26   993  		 * Check may be lockless but that's ok as we recheck later.
bda807d4445414e Minchan Kim             2016-07-26   994  		 * It's possible to migrate LRU and non-lru movable pages.
bda807d4445414e Minchan Kim             2016-07-26   995  		 * Skip any other type of page
bda807d4445414e Minchan Kim             2016-07-26   996  		 */
bda807d4445414e Minchan Kim             2016-07-26   997  		if (!PageLRU(page)) {
bda807d4445414e Minchan Kim             2016-07-26   998  			/*
bda807d4445414e Minchan Kim             2016-07-26   999  			 * __PageMovable can return false positive so we need
bda807d4445414e Minchan Kim             2016-07-26  1000  			 * to verify it under page_lock.
bda807d4445414e Minchan Kim             2016-07-26  1001  			 */
bda807d4445414e Minchan Kim             2016-07-26  1002  			if (unlikely(__PageMovable(page)) &&
bda807d4445414e Minchan Kim             2016-07-26  1003  					!PageIsolated(page)) {
bda807d4445414e Minchan Kim             2016-07-26  1004  				if (locked) {
6168d0da2b479ce Alex Shi                2020-12-15  1005  					unlock_page_lruvec_irqrestore(locked, flags);
6168d0da2b479ce Alex Shi                2020-12-15  1006  					locked = NULL;
bda807d4445414e Minchan Kim             2016-07-26  1007  				}
bda807d4445414e Minchan Kim             2016-07-26  1008  
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1009  				if (!isolate_movable_page(page, mode))
bda807d4445414e Minchan Kim             2016-07-26  1010  					goto isolate_success;
bda807d4445414e Minchan Kim             2016-07-26  1011  			}
bda807d4445414e Minchan Kim             2016-07-26  1012  
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1013  			goto isolate_fail;
bda807d4445414e Minchan Kim             2016-07-26  1014  		}
29c0dde830f8c08 Vlastimil Babka         2015-09-08  1015  
829ae0f81ce093d Gavin Shan              2022-11-24  1016  		/*
829ae0f81ce093d Gavin Shan              2022-11-24  1017  		 * Be careful not to clear PageLRU until after we're
829ae0f81ce093d Gavin Shan              2022-11-24  1018  		 * sure the page is not being freed elsewhere -- the
829ae0f81ce093d Gavin Shan              2022-11-24  1019  		 * page release code relies on it.
829ae0f81ce093d Gavin Shan              2022-11-24  1020  		 */
829ae0f81ce093d Gavin Shan              2022-11-24  1021  		if (unlikely(!get_page_unless_zero(page)))
829ae0f81ce093d Gavin Shan              2022-11-24  1022  			goto isolate_fail;
829ae0f81ce093d Gavin Shan              2022-11-24  1023  
119d6d59dcc0980 David Rientjes          2014-04-03  1024  		/*
119d6d59dcc0980 David Rientjes          2014-04-03  1025  		 * Migration will fail if an anonymous page is pinned in memory,
119d6d59dcc0980 David Rientjes          2014-04-03  1026  		 * so avoid taking lru_lock and isolating it unnecessarily in an
119d6d59dcc0980 David Rientjes          2014-04-03  1027  		 * admittedly racy check.
119d6d59dcc0980 David Rientjes          2014-04-03  1028  		 */
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1029  		mapping = page_mapping(page);
829ae0f81ce093d Gavin Shan              2022-11-24  1030  		if (!mapping && (page_count(page) - 1) > total_mapcount(page))
829ae0f81ce093d Gavin Shan              2022-11-24  1031  			goto isolate_fail_put;
119d6d59dcc0980 David Rientjes          2014-04-03  1032  
73e64c51afc56d4 Michal Hocko            2016-12-14  1033  		/*
73e64c51afc56d4 Michal Hocko            2016-12-14  1034  		 * Only allow to migrate anonymous pages in GFP_NOFS context
73e64c51afc56d4 Michal Hocko            2016-12-14  1035  		 * because those do not depend on fs locks.
73e64c51afc56d4 Michal Hocko            2016-12-14  1036  		 */
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1037  		if (!(cc->gfp_mask & __GFP_FS) && mapping)
829ae0f81ce093d Gavin Shan              2022-11-24  1038  			goto isolate_fail_put;
9df41314390b81a Alex Shi                2020-12-15  1039  
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1040  		/* Only take pages on LRU: a check now makes later tests safe */
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1041  		if (!PageLRU(page))
9df41314390b81a Alex Shi                2020-12-15  1042  			goto isolate_fail_put;
9df41314390b81a Alex Shi                2020-12-15  1043  
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1044  		/* Compaction might skip unevictable pages but CMA takes them */
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1045  		if (!(mode & ISOLATE_UNEVICTABLE) && PageUnevictable(page))
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1046  			goto isolate_fail_put;
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1047  
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1048  		/*
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1049  		 * To minimise LRU disruption, the caller can indicate with
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1050  		 * ISOLATE_ASYNC_MIGRATE that it only wants to isolate pages
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1051  		 * it will be able to migrate without blocking - clean pages
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1052  		 * for the most part.  PageWriteback would require blocking.
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1053  		 */
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1054  		if ((mode & ISOLATE_ASYNC_MIGRATE) && PageWriteback(page))
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1055  			goto isolate_fail_put;
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1056  
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1057  		if ((mode & ISOLATE_ASYNC_MIGRATE) && PageDirty(page)) {
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1058  			bool migrate_dirty;
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1059  
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1060  			/*
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1061  			 * Only pages without mappings or that have a
9d0ddc0cb575fd4 Matthew Wilcox (Oracle  2022-06-06  1062) 			 * ->migrate_folio callback are possible to migrate
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1063  			 * without blocking. However, we can be racing with
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1064  			 * truncation so it's necessary to lock the page
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1065  			 * to stabilise the mapping as truncation holds
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1066  			 * the page lock until after the page is removed
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1067  			 * from the page cache.
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1068  			 */
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1069  			if (!trylock_page(page))
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1070  				goto isolate_fail_put;
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1071  
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1072  			mapping = page_mapping(page);
5490da4f06d182b Matthew Wilcox (Oracle  2022-06-06  1073) 			migrate_dirty = !mapping ||
9d0ddc0cb575fd4 Matthew Wilcox (Oracle  2022-06-06  1074) 					mapping->a_ops->migrate_folio;
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1075  			unlock_page(page);
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1076  			if (!migrate_dirty)
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1077  				goto isolate_fail_put;
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1078  		}
89f6c88a6ab4a11 Hugh Dickins            2022-03-22  1079  
9df41314390b81a Alex Shi                2020-12-15  1080  		/* Try isolate the page */
9df41314390b81a Alex Shi                2020-12-15  1081  		if (!TestClearPageLRU(page))
9df41314390b81a Alex Shi                2020-12-15  1082  			goto isolate_fail_put;
9df41314390b81a Alex Shi                2020-12-15  1083  
b1baabd995ab8e8 Matthew Wilcox (Oracle  2021-06-28  1084) 		lruvec = folio_lruvec(page_folio(page));
6168d0da2b479ce Alex Shi                2020-12-15  1085  
69b7189f12e0064 Vlastimil Babka         2014-10-09  1086  		/* If we already hold the lock, we can skip some rechecking */
6168d0da2b479ce Alex Shi                2020-12-15  1087  		if (lruvec != locked) {
6168d0da2b479ce Alex Shi                2020-12-15  1088  			if (locked)
6168d0da2b479ce Alex Shi                2020-12-15  1089  				unlock_page_lruvec_irqrestore(locked, flags);
6168d0da2b479ce Alex Shi                2020-12-15  1090  
6168d0da2b479ce Alex Shi                2020-12-15  1091  			compact_lock_irqsave(&lruvec->lru_lock, &flags, cc);
6168d0da2b479ce Alex Shi                2020-12-15  1092  			locked = lruvec;
6168d0da2b479ce Alex Shi                2020-12-15  1093  
e809c3fedeeb806 Matthew Wilcox (Oracle  2021-06-28  1094) 			lruvec_memcg_debug(lruvec, page_folio(page));
e380bebe4771548 Mel Gorman              2019-03-05  1095  
e380bebe4771548 Mel Gorman              2019-03-05  1096  			/* Try get exclusive access under lock */
e380bebe4771548 Mel Gorman              2019-03-05  1097  			if (!skip_updated) {
e380bebe4771548 Mel Gorman              2019-03-05  1098  				skip_updated = true;
e380bebe4771548 Mel Gorman              2019-03-05  1099  				if (test_and_set_skip(cc, page, low_pfn))
e380bebe4771548 Mel Gorman              2019-03-05  1100  					goto isolate_abort;
e380bebe4771548 Mel Gorman              2019-03-05  1101  			}
2a1402aa044b55c Mel Gorman              2012-10-08  1102  
29c0dde830f8c08 Vlastimil Babka         2015-09-08  1103  			/*
29c0dde830f8c08 Vlastimil Babka         2015-09-08  1104  			 * Page become compound since the non-locked check,
29c0dde830f8c08 Vlastimil Babka         2015-09-08  1105  			 * and it's on LRU. It can only be a THP so the order
29c0dde830f8c08 Vlastimil Babka         2015-09-08  1106  			 * is safe to read and it's 0 for tail pages.
29c0dde830f8c08 Vlastimil Babka         2015-09-08  1107  			 */
1da2f328fa643bd Rik van Riel            2020-04-01  1108  			if (unlikely(PageCompound(page) && !cc->alloc_contig)) {
d8c6546b1aea843 Matthew Wilcox (Oracle  2019-09-23  1109) 				low_pfn += compound_nr(page) - 1;
9df41314390b81a Alex Shi                2020-12-15  1110  				SetPageLRU(page);
9df41314390b81a Alex Shi                2020-12-15  1111  				goto isolate_fail_put;
bc835011afbea39 Andrea Arcangeli        2011-01-13  1112  			}
d99fd5feb0ac1d5 Alex Shi                2021-02-24  1113  		}
fa9add641b1b1c5 Hugh Dickins            2012-05-29  1114  
1da2f328fa643bd Rik van Riel            2020-04-01  1115  		/* The whole page is taken off the LRU; skip the tail pages. */
1da2f328fa643bd Rik van Riel            2020-04-01  1116  		if (PageCompound(page))
1da2f328fa643bd Rik van Riel            2020-04-01  1117  			low_pfn += compound_nr(page) - 1;
bc835011afbea39 Andrea Arcangeli        2011-01-13  1118  
748446bb6b5a939 Mel Gorman              2010-05-24  1119  		/* Successfully isolated */
46ae6b2cc2a4790 Yu Zhao                 2021-02-24  1120  		del_page_from_lru_list(page, lruvec);
1da2f328fa643bd Rik van Riel            2020-04-01  1121  		mod_node_page_state(page_pgdat(page),
9de4f22a60f7319 Huang Ying              2020-04-06  1122  				NR_ISOLATED_ANON + page_is_file_lru(page),
6c357848b44b401 Matthew Wilcox (Oracle  2020-08-14  1123) 				thp_nr_pages(page));
b6c750163c0d138 Joonsoo Kim             2014-04-07  1124  
b6c750163c0d138 Joonsoo Kim             2014-04-07  1125  isolate_success:
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1126  		list_add(&page->lru, &cc->migratepages);
ae37c7ff79f1f03 Oscar Salvador          2021-05-04  1127  isolate_success_no_list:
38935861d85a4d9 Zi Yan                  2020-11-13  1128  		cc->nr_migratepages += compound_nr(page);
d6f18f121b7c664 Minchan Kim             2023-01-12  1129  		if (!PageAnon(page))
d6f18f121b7c664 Minchan Kim             2023-01-12  1130  			cc_ext->nr_migrate_file_pages += compound_nr(page);
38935861d85a4d9 Zi Yan                  2020-11-13  1131  		nr_isolated += compound_nr(page);
b717d6b93b54ec2 William Lam             2022-07-11  1132  		nr_scanned += compound_nr(page) - 1;
748446bb6b5a939 Mel Gorman              2010-05-24  1133  
804d3121ba5f03a Mel Gorman              2019-03-05  1134  		/*
804d3121ba5f03a Mel Gorman              2019-03-05  1135  		 * Avoid isolating too much unless this block is being
cb2dcaf023c2cf1 Mel Gorman              2019-03-05  1136  		 * rescanned (e.g. dirty/writeback pages, parallel allocation)
cb2dcaf023c2cf1 Mel Gorman              2019-03-05  1137  		 * or a lock is contended. For contention, isolate quickly to
cb2dcaf023c2cf1 Mel Gorman              2019-03-05  1138  		 * potentially remove one source of contention.
804d3121ba5f03a Mel Gorman              2019-03-05  1139  		 */
38935861d85a4d9 Zi Yan                  2020-11-13  1140  		if (cc->nr_migratepages >= COMPACT_CLUSTER_MAX &&
cb2dcaf023c2cf1 Mel Gorman              2019-03-05  1141  		    !cc->rescan && !cc->contended) {
31b8384a555d94c Hillf Danton            2012-01-10  1142  			++low_pfn;
748446bb6b5a939 Mel Gorman              2010-05-24  1143  			break;
748446bb6b5a939 Mel Gorman              2010-05-24  1144  		}
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1145  
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1146  		continue;
9df41314390b81a Alex Shi                2020-12-15  1147  
9df41314390b81a Alex Shi                2020-12-15  1148  isolate_fail_put:
9df41314390b81a Alex Shi                2020-12-15  1149  		/* Avoid potential deadlock in freeing page under lru_lock */
9df41314390b81a Alex Shi                2020-12-15  1150  		if (locked) {
6168d0da2b479ce Alex Shi                2020-12-15  1151  			unlock_page_lruvec_irqrestore(locked, flags);
6168d0da2b479ce Alex Shi                2020-12-15  1152  			locked = NULL;
9df41314390b81a Alex Shi                2020-12-15  1153  		}
9df41314390b81a Alex Shi                2020-12-15  1154  		put_page(page);
9df41314390b81a Alex Shi                2020-12-15  1155  
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1156  isolate_fail:
369fa227c21949b Oscar Salvador          2021-05-04  1157  		if (!skip_on_failure && ret != -ENOMEM)
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1158  			continue;
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1159  
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1160  		/*
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1161  		 * We have isolated some pages, but then failed. Release them
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1162  		 * instead of migrating, as we cannot form the cc->order buddy
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1163  		 * page anyway.
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1164  		 */
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1165  		if (nr_isolated) {
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1166  			if (locked) {
6168d0da2b479ce Alex Shi                2020-12-15  1167  				unlock_page_lruvec_irqrestore(locked, flags);
6168d0da2b479ce Alex Shi                2020-12-15  1168  				locked = NULL;
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1169  			}
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1170  			putback_movable_pages(&cc->migratepages);
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1171  			cc->nr_migratepages = 0;
d6f18f121b7c664 Minchan Kim             2023-01-12  1172  			cc_ext->nr_migrate_file_pages = 0;
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1173  			nr_isolated = 0;
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1174  		}
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1175  
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1176  		if (low_pfn < next_skip_pfn) {
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1177  			low_pfn = next_skip_pfn - 1;
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1178  			/*
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1179  			 * The check near the loop beginning would have updated
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1180  			 * next_skip_pfn too, but this is a bit simpler.
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1181  			 */
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1182  			next_skip_pfn += 1UL << cc->order;
fdd048e12c9a46d Vlastimil Babka         2016-05-19  1183  		}
369fa227c21949b Oscar Salvador          2021-05-04  1184  
369fa227c21949b Oscar Salvador          2021-05-04  1185  		if (ret == -ENOMEM)
369fa227c21949b Oscar Salvador          2021-05-04  1186  			break;
31b8384a555d94c Hillf Danton            2012-01-10  1187  	}
748446bb6b5a939 Mel Gorman              2010-05-24  1188  
99c0fd5e51c4479 Vlastimil Babka         2014-10-09  1189  	/*
99c0fd5e51c4479 Vlastimil Babka         2014-10-09  1190  	 * The PageBuddy() check could have potentially brought us outside
99c0fd5e51c4479 Vlastimil Babka         2014-10-09  1191  	 * the range to be scanned.
99c0fd5e51c4479 Vlastimil Babka         2014-10-09  1192  	 */
99c0fd5e51c4479 Vlastimil Babka         2014-10-09  1193  	if (unlikely(low_pfn > end_pfn))
99c0fd5e51c4479 Vlastimil Babka         2014-10-09  1194  		low_pfn = end_pfn;
99c0fd5e51c4479 Vlastimil Babka         2014-10-09  1195  
9df41314390b81a Alex Shi                2020-12-15  1196  	page = NULL;
9df41314390b81a Alex Shi                2020-12-15  1197  
e380bebe4771548 Mel Gorman              2019-03-05  1198  isolate_abort:
c67fe3752abe6ab Mel Gorman              2012-08-21  1199  	if (locked)
6168d0da2b479ce Alex Shi                2020-12-15  1200  		unlock_page_lruvec_irqrestore(locked, flags);
9df41314390b81a Alex Shi                2020-12-15  1201  	if (page) {
9df41314390b81a Alex Shi                2020-12-15  1202  		SetPageLRU(page);
9df41314390b81a Alex Shi                2020-12-15  1203  		put_page(page);
9df41314390b81a Alex Shi                2020-12-15  1204  	}
748446bb6b5a939 Mel Gorman              2010-05-24  1205  
50b5b094e683f8e Vlastimil Babka         2014-01-21  1206  	/*
804d3121ba5f03a Mel Gorman              2019-03-05  1207  	 * Updated the cached scanner pfn once the pageblock has been scanned
804d3121ba5f03a Mel Gorman              2019-03-05  1208  	 * Pages will either be migrated in which case there is no point
804d3121ba5f03a Mel Gorman              2019-03-05  1209  	 * scanning in the near future or migration failed in which case the
804d3121ba5f03a Mel Gorman              2019-03-05  1210  	 * failure reason may persist. The block is marked for skipping if
804d3121ba5f03a Mel Gorman              2019-03-05  1211  	 * there were no pages isolated in the block or if the block is
804d3121ba5f03a Mel Gorman              2019-03-05  1212  	 * rescanned twice in a row.
50b5b094e683f8e Vlastimil Babka         2014-01-21  1213  	 */
804d3121ba5f03a Mel Gorman              2019-03-05  1214  	if (low_pfn == end_pfn && (!nr_isolated || cc->rescan)) {
e380bebe4771548 Mel Gorman              2019-03-05  1215  		if (valid_page && !skip_updated)
e380bebe4771548 Mel Gorman              2019-03-05  1216  			set_pageblock_skip(valid_page);
e380bebe4771548 Mel Gorman              2019-03-05  1217  		update_cached_migrate(cc, low_pfn);
e380bebe4771548 Mel Gorman              2019-03-05  1218  	}
bb13ffeb9f6bfeb Mel Gorman              2012-10-08  1219  
e34d85f0e3c60f7 Joonsoo Kim             2015-02-11  1220  	trace_mm_compaction_isolate_migratepages(start_pfn, low_pfn,
e34d85f0e3c60f7 Joonsoo Kim             2015-02-11  1221  						nr_scanned, nr_isolated);
b7aba6984dc0485 Mel Gorman              2011-01-13  1222  
670105a25608aff Mel Gorman              2019-08-02  1223  fatal_pending:
7f354a548d1cb6b David Rientjes          2017-02-22  1224  	cc->total_migrate_scanned += nr_scanned;
397487db696cae0 Mel Gorman              2012-10-19  1225  	if (nr_isolated)
010fc29a45a2e8d Minchan Kim             2012-12-20  1226  		count_compact_events(COMPACTISOLATED, nr_isolated);
397487db696cae0 Mel Gorman              2012-10-19  1227  
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04  1228  	cc->migrate_pfn = low_pfn;
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04  1229  
c2ad7a1ffeafa32 Oscar Salvador          2021-05-04  1230  	return ret;
2fe86e000407612 Michal Nazarewicz       2012-01-30  1231  }
2fe86e000407612 Michal Nazarewicz       2012-01-30  1232  

:::::: The code at line 816 was first introduced by commit
:::::: 748446bb6b5a9390b546af38ec899c868a9dbcf0 mm: compaction: memory compaction core

:::::: TO: Mel Gorman <mel@csn.ul.ie>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2026-10-19 14:20 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202610191640.fwTK8mIG-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=cros-kernel-buildreports@googlegroups.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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.