All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Baolin Wang <baolin.wang@linux.alibaba.com>, vbabka@suse.cz
Cc: oe-kbuild-all@lists.linux.dev, akpm@linux-foundation.org,
	baolin.wang@linux.alibaba.com, david@redhat.com,
	hannes@cmpxchg.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, mgorman@techsingularity.net,
	ying.huang@intel.com, ziy@nvidia.com
Subject: Re: [PATCH] mm: page_alloc: consolidate free page accounting fix 3
Date: Wed, 10 Apr 2024 05:25:14 +0800	[thread overview]
Message-ID: <202404100551.aq0YQFuT-lkp@intel.com> (raw)
In-Reply-To: <a2a48baca69f103aa431fd201f8a06e3b95e203d.1712648441.git.baolin.wang@linux.alibaba.com>

Hi Baolin,

kernel test robot noticed the following build errors:



url:    https://github.com/intel-lab-lkp/linux/commits/UPDATE-20240409-154935/Johannes-Weiner/mm-page_alloc-remove-pcppage-migratetype-caching/20240321-020814
base:   the 10th patch of https://lore.kernel.org/r/20240320180429.678181-11-hannes%40cmpxchg.org
patch link:    https://lore.kernel.org/r/a2a48baca69f103aa431fd201f8a06e3b95e203d.1712648441.git.baolin.wang%40linux.alibaba.com
patch subject: [PATCH] mm: page_alloc: consolidate free page accounting fix 3
config: x86_64-rhel-8.3 (https://download.01.org/0day-ci/archive/20240410/202404100551.aq0YQFuT-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/20240410/202404100551.aq0YQFuT-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/202404100551.aq0YQFuT-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   mm/page_alloc.c: In function '__free_one_page':
>> mm/page_alloc.c:808:43: error: passing argument 1 of 'account_freepages' from incompatible pointer type [-Werror=incompatible-pointer-types]
     808 |                         account_freepages(zone, -(1 << order), migratetype);
         |                                           ^~~~
         |                                           |
         |                                           struct zone *
   mm/page_alloc.c:645:51: note: expected 'struct page *' but argument is of type 'struct zone *'
     645 | static inline void account_freepages(struct page *page, struct zone *zone,
         |                                      ~~~~~~~~~~~~~^~~~
>> mm/page_alloc.c:808:49: warning: passing argument 2 of 'account_freepages' makes pointer from integer without a cast [-Wint-conversion]
     808 |                         account_freepages(zone, -(1 << order), migratetype);
         |                                                 ^~~~~~~~~~~~~
         |                                                 |
         |                                                 int
   mm/page_alloc.c:645:70: note: expected 'struct zone *' but argument is of type 'int'
     645 | static inline void account_freepages(struct page *page, struct zone *zone,
         |                                                         ~~~~~~~~~~~~~^~~~
>> mm/page_alloc.c:808:25: error: too few arguments to function 'account_freepages'
     808 |                         account_freepages(zone, -(1 << order), migratetype);
         |                         ^~~~~~~~~~~~~~~~~
   mm/page_alloc.c:645:20: note: declared here
     645 | static inline void account_freepages(struct page *page, struct zone *zone,
         |                    ^~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/account_freepages +808 mm/page_alloc.c

   759	
   760	/*
   761	 * Freeing function for a buddy system allocator.
   762	 *
   763	 * The concept of a buddy system is to maintain direct-mapped table
   764	 * (containing bit values) for memory blocks of various "orders".
   765	 * The bottom level table contains the map for the smallest allocatable
   766	 * units of memory (here, pages), and each level above it describes
   767	 * pairs of units from the levels below, hence, "buddies".
   768	 * At a high level, all that happens here is marking the table entry
   769	 * at the bottom level available, and propagating the changes upward
   770	 * as necessary, plus some accounting needed to play nicely with other
   771	 * parts of the VM system.
   772	 * At each level, we keep a list of pages, which are heads of continuous
   773	 * free pages of length of (1 << order) and marked with PageBuddy.
   774	 * Page's order is recorded in page_private(page) field.
   775	 * So when we are allocating or freeing one, we can derive the state of the
   776	 * other.  That is, if we allocate a small block, and both were
   777	 * free, the remainder of the region must be split into blocks.
   778	 * If a block is freed, and its buddy is also free, then this
   779	 * triggers coalescing into a block of larger size.
   780	 *
   781	 * -- nyc
   782	 */
   783	
   784	static inline void __free_one_page(struct page *page,
   785			unsigned long pfn,
   786			struct zone *zone, unsigned int order,
   787			int migratetype, fpi_t fpi_flags)
   788	{
   789		struct capture_control *capc = task_capc(zone);
   790		unsigned long buddy_pfn = 0;
   791		unsigned long combined_pfn;
   792		struct page *buddy;
   793		bool to_tail;
   794	
   795		VM_BUG_ON(!zone_is_initialized(zone));
   796		VM_BUG_ON_PAGE(page->flags & PAGE_FLAGS_CHECK_AT_PREP, page);
   797	
   798		VM_BUG_ON(migratetype == -1);
   799		VM_BUG_ON_PAGE(pfn & ((1 << order) - 1), page);
   800		VM_BUG_ON_PAGE(bad_range(zone, page), page);
   801	
   802		account_freepages(page, zone, 1 << order, migratetype);
   803	
   804		while (order < MAX_PAGE_ORDER) {
   805			int buddy_mt = migratetype;
   806	
   807			if (compaction_capture(capc, page, order, migratetype)) {
 > 808				account_freepages(zone, -(1 << order), migratetype);
   809				return;
   810			}
   811	
   812			buddy = find_buddy_page_pfn(page, pfn, order, &buddy_pfn);
   813			if (!buddy)
   814				goto done_merging;
   815	
   816			if (unlikely(order >= pageblock_order)) {
   817				/*
   818				 * We want to prevent merge between freepages on pageblock
   819				 * without fallbacks and normal pageblock. Without this,
   820				 * pageblock isolation could cause incorrect freepage or CMA
   821				 * accounting or HIGHATOMIC accounting.
   822				 */
   823				buddy_mt = get_pfnblock_migratetype(buddy, buddy_pfn);
   824	
   825				if (migratetype != buddy_mt &&
   826				    (!migratetype_is_mergeable(migratetype) ||
   827				     !migratetype_is_mergeable(buddy_mt)))
   828					goto done_merging;
   829			}
   830	
   831			/*
   832			 * Our buddy is free or it is CONFIG_DEBUG_PAGEALLOC guard page,
   833			 * merge with it and move up one order.
   834			 */
   835			if (page_is_guard(buddy))
   836				clear_page_guard(zone, buddy, order);
   837			else
   838				__del_page_from_free_list(buddy, zone, order, buddy_mt);
   839	
   840			if (unlikely(buddy_mt != migratetype)) {
   841				/*
   842				 * Match buddy type. This ensures that an
   843				 * expand() down the line puts the sub-blocks
   844				 * on the right freelists.
   845				 */
   846				set_pageblock_migratetype(buddy, migratetype);
   847			}
   848	
   849			combined_pfn = buddy_pfn & pfn;
   850			page = page + (combined_pfn - pfn);
   851			pfn = combined_pfn;
   852			order++;
   853		}
   854	
   855	done_merging:
   856		set_buddy_order(page, order);
   857	
   858		if (fpi_flags & FPI_TO_TAIL)
   859			to_tail = true;
   860		else if (is_shuffle_order(order))
   861			to_tail = shuffle_pick_tail();
   862		else
   863			to_tail = buddy_merge_likely(pfn, buddy_pfn, page, order);
   864	
   865		__add_to_free_list(page, zone, order, migratetype, to_tail);
   866	
   867		/* Notify page reporting subsystem of freed page */
   868		if (!(fpi_flags & FPI_SKIP_REPORT_NOTIFY))
   869			page_reporting_notify_free(order);
   870	}
   871	

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

  parent reply	other threads:[~2024-04-09 21:26 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-20 18:02 [PATCH V4 00/10] mm: page_alloc: freelist migratetype hygiene Johannes Weiner
2024-03-20 18:02 ` [PATCH 01/10] mm: page_alloc: remove pcppage migratetype caching Johannes Weiner
2024-03-20 18:02 ` [PATCH 02/10] mm: page_alloc: optimize free_unref_folios() Johannes Weiner
2024-03-25 15:56   ` Vlastimil Babka
2024-03-20 18:02 ` [PATCH 03/10] mm: page_alloc: fix up block types when merging compatible blocks Johannes Weiner
2024-03-20 18:02 ` [PATCH 04/10] mm: page_alloc: move free pages when converting block during isolation Johannes Weiner
2024-03-20 18:02 ` [PATCH 05/10] mm: page_alloc: fix move_freepages_block() range error Johannes Weiner
2024-03-25 16:22   ` Vlastimil Babka
2024-03-20 18:02 ` [PATCH 06/10] mm: page_alloc: fix freelist movement during block conversion Johannes Weiner
2024-03-26 11:28   ` Vlastimil Babka
2024-03-26 12:34     ` Johannes Weiner
2024-04-05 12:11   ` Baolin Wang
2024-04-05 16:56     ` Johannes Weiner
2024-04-07  6:58       ` Baolin Wang
2024-04-08  7:24       ` Vlastimil Babka
2024-04-09  6:21       ` Vlastimil Babka
2024-03-20 18:02 ` [PATCH 07/10] mm: page_alloc: close migratetype race between freeing and stealing Johannes Weiner
2024-03-26 15:25   ` Vlastimil Babka
2024-03-20 18:02 ` [PATCH 08/10] mm: page_alloc: set migratetype inside move_freepages() Johannes Weiner
2024-03-26 15:40   ` Vlastimil Babka
2024-03-20 18:02 ` [PATCH 09/10] mm: page_isolation: prepare for hygienic freelists Johannes Weiner
2024-03-21 13:13   ` kernel test robot
2024-03-21 14:24     ` Johannes Weiner
2024-03-21 15:03       ` Zi Yan
2024-03-27  8:06   ` Vlastimil Babka
2024-03-20 18:02 ` [PATCH 10/10] mm: page_alloc: consolidate free page accounting Johannes Weiner
2024-03-27  8:54   ` Vlastimil Babka
2024-03-27 14:32     ` Johannes Weiner
2024-03-27 18:57     ` [PATCH 1/3] mm: page_alloc: consolidate free page accounting fix Johannes Weiner
2024-03-27 18:58     ` [PATCH 2/3] mm: page_alloc: consolidate free page accounting fix 2 Johannes Weiner
2024-03-27 19:01     ` [PATCH 3/3] mm: page_alloc: batch vmstat updates in expand() Johannes Weiner
2024-03-27 20:35       ` Vlastimil Babka
2024-04-07 10:19   ` [PATCH 10/10] mm: page_alloc: consolidate free page accounting Baolin Wang
2024-04-08  7:38     ` Vlastimil Babka
2024-04-08  9:13       ` Baolin Wang
2024-04-08 14:23       ` Johannes Weiner
2024-04-09  6:23         ` Vlastimil Babka
2024-04-09  7:48           ` [PATCH] mm: page_alloc: consolidate free page accounting fix 3 Baolin Wang
2024-04-09 21:15             ` kernel test robot
2024-04-09 22:36               ` Johannes Weiner
2024-04-09 21:25             ` kernel test robot [this message]
2024-04-09  7:56           ` [PATCH 10/10] mm: page_alloc: consolidate free page accounting Baolin Wang
2024-04-09  8:41             ` Vlastimil Babka
2024-04-09  9:31         ` Baolin Wang
2024-04-09 14:46           ` Zi Yan
2024-04-10  8:49             ` Baolin Wang
2024-03-27  9:30 ` [PATCH V4 00/10] mm: page_alloc: freelist migratetype hygiene Vlastimil Babka
2024-03-27 13:10   ` Zi Yan
2024-03-27 14:29   ` Johannes Weiner
2024-04-08  9:30 ` Baolin Wang
2024-04-08 14:24   ` Johannes Weiner
2024-05-11  5:14 ` Yu Zhao
2024-05-13 16:03   ` Johannes Weiner
2024-05-13 18:10     ` Yu Zhao
2024-05-13 19:04       ` Johannes Weiner
2024-06-05  4:53         ` Yu Zhao
2024-06-10 15:28           ` Johannes Weiner
2024-06-12 18:52             ` Yu Zhao
2024-06-13 15:39               ` Johannes Weiner

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=202404100551.aq0YQFuT-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=david@redhat.com \
    --cc=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@techsingularity.net \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=vbabka@suse.cz \
    --cc=ying.huang@intel.com \
    --cc=ziy@nvidia.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.