All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Nico Pache <npache@redhat.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH v13 mm-new 07/16] khugepaged: introduce collapse_max_ptes_none helper function
Date: Wed, 3 Dec 2025 21:40:52 +0800	[thread overview]
Message-ID: <202512032107.44KoCA71-lkp@intel.com> (raw)
In-Reply-To: <20251201174627.23295-8-npache@redhat.com>

Hi Nico,

kernel test robot noticed the following build warnings:

[auto build test WARNING on akpm-mm/mm-everything]
[also build test WARNING on next-20251203]
[cannot apply to linus/master v6.18]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Nico-Pache/khugepaged-rename-hpage_collapse_-to-collapse_/20251202-015150
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link:    https://lore.kernel.org/r/20251201174627.23295-8-npache%40redhat.com
patch subject: [PATCH v13 mm-new 07/16] khugepaged: introduce collapse_max_ptes_none helper function
config: x86_64-rhel-9.4-rust (https://download.01.org/0day-ci/archive/20251203/202512032107.44KoCA71-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
rustc: rustc 1.88.0 (6b00bc388 2025-06-23)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251203/202512032107.44KoCA71-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/202512032107.44KoCA71-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> mm/khugepaged.c:593:6: warning: variable '_pte' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
     593 |         if (max_ptes_none == -EINVAL)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~
   mm/khugepaged.c:724:25: note: uninitialized use occurs here
     724 |         release_pte_pages(pte, _pte, compound_pagelist);
         |                                ^~~~
   mm/khugepaged.c:593:2: note: remove the 'if' if its condition is always false
     593 |         if (max_ptes_none == -EINVAL)
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     594 |                 goto out;
         |                 ~~~~~~~~
   mm/khugepaged.c:588:13: note: initialize the variable '_pte' to silence this warning
     588 |         pte_t *_pte;
         |                    ^
         |                     = NULL
   1 warning generated.


vim +593 mm/khugepaged.c

   580	
   581	static int __collapse_huge_page_isolate(struct vm_area_struct *vma,
   582			unsigned long start_addr, pte_t *pte, struct collapse_control *cc,
   583			unsigned int order, struct list_head *compound_pagelist)
   584	{
   585		struct page *page = NULL;
   586		struct folio *folio = NULL;
   587		unsigned long addr = start_addr;
   588		pte_t *_pte;
   589		int none_or_zero = 0, shared = 0, result = SCAN_FAIL, referenced = 0;
   590		const unsigned long nr_pages = 1UL << order;
   591		int max_ptes_none = collapse_max_ptes_none(order, !cc->is_khugepaged);
   592	
 > 593		if (max_ptes_none == -EINVAL)
   594			goto out;
   595	
   596		for (_pte = pte; _pte < pte + nr_pages;
   597		     _pte++, addr += PAGE_SIZE) {
   598			pte_t pteval = ptep_get(_pte);
   599			if (pte_none_or_zero(pteval)) {
   600				++none_or_zero;
   601				if (!userfaultfd_armed(vma) &&
   602				    (!cc->is_khugepaged ||
   603				     none_or_zero <= max_ptes_none)) {
   604					continue;
   605				} else {
   606					result = SCAN_EXCEED_NONE_PTE;
   607					count_vm_event(THP_SCAN_EXCEED_NONE_PTE);
   608					goto out;
   609				}
   610			}
   611			if (!pte_present(pteval)) {
   612				result = SCAN_PTE_NON_PRESENT;
   613				goto out;
   614			}
   615			if (pte_uffd_wp(pteval)) {
   616				result = SCAN_PTE_UFFD_WP;
   617				goto out;
   618			}
   619			page = vm_normal_page(vma, addr, pteval);
   620			if (unlikely(!page) || unlikely(is_zone_device_page(page))) {
   621				result = SCAN_PAGE_NULL;
   622				goto out;
   623			}
   624	
   625			folio = page_folio(page);
   626			VM_BUG_ON_FOLIO(!folio_test_anon(folio), folio);
   627	
   628			/* See collapse_scan_pmd(). */
   629			if (folio_maybe_mapped_shared(folio)) {
   630				++shared;
   631				/*
   632				 * TODO: Support shared pages without leading to further
   633				 * mTHP collapses. Currently bringing in new pages via
   634				 * shared may cause a future higher order collapse on a
   635				 * rescan of the same range.
   636				 */
   637				if (is_mthp_order(order) || (cc->is_khugepaged &&
   638				    shared > khugepaged_max_ptes_shared)) {
   639					result = SCAN_EXCEED_SHARED_PTE;
   640					count_vm_event(THP_SCAN_EXCEED_SHARED_PTE);
   641					goto out;
   642				}
   643			}
   644	
   645			if (folio_test_large(folio)) {
   646				struct folio *f;
   647	
   648				/*
   649				 * Check if we have dealt with the compound page
   650				 * already
   651				 */
   652				list_for_each_entry(f, compound_pagelist, lru) {
   653					if (folio == f)
   654						goto next;
   655				}
   656			}
   657	
   658			/*
   659			 * We can do it before folio_isolate_lru because the
   660			 * folio can't be freed from under us. NOTE: PG_lock
   661			 * is needed to serialize against split_huge_page
   662			 * when invoked from the VM.
   663			 */
   664			if (!folio_trylock(folio)) {
   665				result = SCAN_PAGE_LOCK;
   666				goto out;
   667			}
   668	
   669			/*
   670			 * Check if the page has any GUP (or other external) pins.
   671			 *
   672			 * The page table that maps the page has been already unlinked
   673			 * from the page table tree and this process cannot get
   674			 * an additional pin on the page.
   675			 *
   676			 * New pins can come later if the page is shared across fork,
   677			 * but not from this process. The other process cannot write to
   678			 * the page, only trigger CoW.
   679			 */
   680			if (folio_expected_ref_count(folio) != folio_ref_count(folio)) {
   681				folio_unlock(folio);
   682				result = SCAN_PAGE_COUNT;
   683				goto out;
   684			}
   685	
   686			/*
   687			 * Isolate the page to avoid collapsing an hugepage
   688			 * currently in use by the VM.
   689			 */
   690			if (!folio_isolate_lru(folio)) {
   691				folio_unlock(folio);
   692				result = SCAN_DEL_PAGE_LRU;
   693				goto out;
   694			}
   695			node_stat_mod_folio(folio,
   696					NR_ISOLATED_ANON + folio_is_file_lru(folio),
   697					folio_nr_pages(folio));
   698			VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio);
   699			VM_BUG_ON_FOLIO(folio_test_lru(folio), folio);
   700	
   701			if (folio_test_large(folio))
   702				list_add_tail(&folio->lru, compound_pagelist);
   703	next:
   704			/*
   705			 * If collapse was initiated by khugepaged, check that there is
   706			 * enough young pte to justify collapsing the page
   707			 */
   708			if (cc->is_khugepaged &&
   709			    (pte_young(pteval) || folio_test_young(folio) ||
   710			     folio_test_referenced(folio) ||
   711			     mmu_notifier_test_young(vma->vm_mm, addr)))
   712				referenced++;
   713		}
   714	
   715		if (unlikely(cc->is_khugepaged && !referenced)) {
   716			result = SCAN_LACK_REFERENCED_PAGE;
   717		} else {
   718			result = SCAN_SUCCEED;
   719			trace_mm_collapse_huge_page_isolate(folio, none_or_zero,
   720							    referenced, result);
   721			return result;
   722		}
   723	out:
   724		release_pte_pages(pte, _pte, compound_pagelist);
   725		trace_mm_collapse_huge_page_isolate(folio, none_or_zero,
   726						    referenced, result);
   727		return result;
   728	}
   729	

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

  parent reply	other threads:[~2025-12-03 13:41 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-01 17:46 [PATCH v13 mm-new 00/16] khugepaged: mTHP support Nico Pache
2025-12-01 17:46 ` [PATCH v13 mm-new 01/16] khugepaged: rename hpage_collapse_* to collapse_* Nico Pache
2026-01-08 16:54   ` Lorenzo Stoakes
2025-12-01 17:46 ` [PATCH v13 mm-new 02/16] introduce collapse_single_pmd to unify khugepaged and madvise_collapse Nico Pache
2025-12-02 15:36   ` Zi Yan
2026-01-08 17:02   ` Lorenzo Stoakes
2025-12-01 17:46 ` [PATCH v13 mm-new 03/16] khugepaged: generalize hugepage_vma_revalidate for mTHP support Nico Pache
2025-12-03  3:03   ` Zi Yan
2026-01-08 17:05   ` Lorenzo Stoakes
2025-12-01 17:46 ` [PATCH v13 mm-new 04/16] khugepaged: generalize alloc_charge_folio() Nico Pache
2025-12-03  3:07   ` Zi Yan
2025-12-01 17:46 ` [PATCH v13 mm-new 05/16] khugepaged: introduce is_mthp_order helper Nico Pache
2025-12-03  3:13   ` Zi Yan
2026-01-14  2:38     ` Nico Pache
2026-01-14  2:49       ` Zi Yan
2026-01-08 16:01   ` Lorenzo Stoakes
2025-12-01 17:46 ` [PATCH v13 mm-new 06/16] khugepaged: generalize __collapse_huge_page_* for mTHP support Nico Pache
2025-12-01 17:46 ` [PATCH v13 mm-new 07/16] khugepaged: introduce collapse_max_ptes_none helper function Nico Pache
2025-12-02  7:53   ` Baolin Wang
2025-12-03 13:40   ` kernel test robot [this message]
2025-12-03 21:02   ` Nico Pache
2025-12-16  8:12   ` Baolin Wang
2025-12-16 23:26     ` Nico Pache
2025-12-17  1:33       ` Baolin Wang
2025-12-01 17:46 ` [PATCH v13 mm-new 08/16] khugepaged: generalize collapse_huge_page for mTHP collapse Nico Pache
2025-12-01 17:46 ` [PATCH v13 mm-new 09/16] khugepaged: skip collapsing mTHP to smaller orders Nico Pache
2025-12-01 17:46 ` [PATCH v13 mm-new 10/16] khugepaged: add per-order mTHP collapse failure statistics Nico Pache
2025-12-01 18:38   ` Randy Dunlap
2025-12-01 17:46 ` [PATCH v13 mm-new 11/16] khugepaged: improve tracepoints for mTHP orders Nico Pache
2025-12-01 17:46 ` [PATCH v13 mm-new 12/16] khugepaged: introduce collapse_allowable_orders helper function Nico Pache
2026-01-08 17:13   ` Lorenzo Stoakes
2025-12-01 17:46 ` [PATCH v13 mm-new 13/16] khugepaged: Introduce mTHP collapse support Nico Pache
2025-12-01 17:46 ` [PATCH v13 mm-new 14/16] khugepaged: avoid unnecessary mTHP collapse attempts Nico Pache
2025-12-01 17:46 ` [PATCH v13 mm-new 15/16] khugepaged: run khugepaged for all orders Nico Pache
2025-12-01 17:46 ` [PATCH v13 mm-new 16/16] Documentation: mm: update the admin guide for mTHP collapse Nico Pache
2025-12-01 18:52   ` Randy Dunlap
2026-01-08 16:09 ` [PATCH v13 mm-new 00/16] khugepaged: mTHP support David Hildenbrand (Red Hat)
2026-01-08 16:12 ` Lorenzo Stoakes
2026-01-08 17:19 ` Lorenzo Stoakes
2026-01-09 13:57   ` David Hildenbrand (Red Hat)
2026-01-09 13:59     ` Lorenzo Stoakes
2026-01-13 22:00     ` Nico Pache
2026-01-13 21:58   ` Nico Pache
  -- strict thread matches above, loose matches on Subject: below --
2025-12-08 18:48 [PATCH v13 mm-new 07/16] khugepaged: introduce collapse_max_ptes_none helper function kernel test robot

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=202512032107.44KoCA71-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=npache@redhat.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.