* [gourryinverse:scratch/gourry/managed_nodes/node_features_v6 42/44] mm/page_alloc.c:7717 alloc_contig_frozen_pages_noprof() warn: bitwise AND condition is false here
@ 2026-08-21 21:16 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-08-21 21:16 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: Gregory Price <gourry@gourry.net>
TO: Gregory Price <gourry@gourry.net>
tree: https://github.com/gourryinverse/linux scratch/gourry/managed_nodes/node_features_v6
head: 38c7f48162aa282dc6a9edfb7011378594057c10
commit: e349bc96af39536035720fe607b05fc4cbd269fc [42/44] mm/page_alloc: let a contiguous search target a private node
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: i386-randconfig-r073-20260822 (https://download.01.org/0day-ci/archive/20260822/202608220505.bExFiebJ-lkp@intel.com/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
smatch: v0.5.0-9187-g5189e3fb
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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202608220505.bExFiebJ-lkp@intel.com/
smatch warnings:
mm/page_alloc.c:7717 alloc_contig_frozen_pages_noprof() warn: bitwise AND condition is false here
vim +7717 mm/page_alloc.c
5e27a2df03b893 Anshuman Khandual 2019-11-30 7671
5e27a2df03b893 Anshuman Khandual 2019-11-30 7672 /**
e0c1326779cc1b Kefeng Wang 2026-01-09 7673 * alloc_contig_frozen_pages() -- tries to find and allocate contiguous range of frozen pages
5e27a2df03b893 Anshuman Khandual 2019-11-30 7674 * @nr_pages: Number of contiguous pages to allocate
f6037a4a686523 David Hildenbrand 2024-12-03 7675 * @gfp_mask: GFP mask. Node/zone/placement hints limit the search; only some
f6037a4a686523 David Hildenbrand 2024-12-03 7676 * action and reclaim modifiers are supported. Reclaim modifiers
f6037a4a686523 David Hildenbrand 2024-12-03 7677 * control allocation behavior during compaction/migration/reclaim.
5e27a2df03b893 Anshuman Khandual 2019-11-30 7678 * @nid: Target node
5e27a2df03b893 Anshuman Khandual 2019-11-30 7679 * @nodemask: Mask for other possible nodes
5e27a2df03b893 Anshuman Khandual 2019-11-30 7680 *
e0c1326779cc1b Kefeng Wang 2026-01-09 7681 * This routine is a wrapper around alloc_contig_frozen_range(). It scans over
e0c1326779cc1b Kefeng Wang 2026-01-09 7682 * zones on an applicable zonelist to find a contiguous pfn range which can then
e0c1326779cc1b Kefeng Wang 2026-01-09 7683 * be tried for allocation with alloc_contig_frozen_range(). This routine is
e0c1326779cc1b Kefeng Wang 2026-01-09 7684 * intended for allocation requests which can not be fulfilled with the buddy
e0c1326779cc1b Kefeng Wang 2026-01-09 7685 * allocator.
5e27a2df03b893 Anshuman Khandual 2019-11-30 7686 *
5e27a2df03b893 Anshuman Khandual 2019-11-30 7687 * The allocated memory is always aligned to a page boundary. If nr_pages is a
eaab8e753632b8 Anshuman Khandual 2022-01-14 7688 * power of two, then allocated range is also guaranteed to be aligned to same
eaab8e753632b8 Anshuman Khandual 2022-01-14 7689 * nr_pages (e.g. 1GB request would be aligned to 1GB).
5e27a2df03b893 Anshuman Khandual 2019-11-30 7690 *
e0c1326779cc1b Kefeng Wang 2026-01-09 7691 * Allocated frozen pages need be freed with free_contig_frozen_range(),
e0c1326779cc1b Kefeng Wang 2026-01-09 7692 * or by manually calling free_frozen_pages() on each allocated frozen
e0c1326779cc1b Kefeng Wang 2026-01-09 7693 * non-compound page, for compound frozen pages could be freed with
e0c1326779cc1b Kefeng Wang 2026-01-09 7694 * free_frozen_pages() directly.
5e27a2df03b893 Anshuman Khandual 2019-11-30 7695 *
e0c1326779cc1b Kefeng Wang 2026-01-09 7696 * Return: pointer to contiguous frozen pages on success, or NULL if not successful.
5e27a2df03b893 Anshuman Khandual 2019-11-30 7697 */
e0c1326779cc1b Kefeng Wang 2026-01-09 7698 struct page *alloc_contig_frozen_pages_noprof(unsigned long nr_pages,
e349bc96af3953 Gregory Price 2026-08-19 7699 gfp_t gfp_mask, int nid, nodemask_t *nodemask,
e349bc96af3953 Gregory Price 2026-08-19 7700 unsigned int alloc_flags)
5e27a2df03b893 Anshuman Khandual 2019-11-30 7701 {
5e27a2df03b893 Anshuman Khandual 2019-11-30 7702 unsigned long ret, pfn, flags;
5e27a2df03b893 Anshuman Khandual 2019-11-30 7703 struct zonelist *zonelist;
5e27a2df03b893 Anshuman Khandual 2019-11-30 7704 struct zone *zone;
5e27a2df03b893 Anshuman Khandual 2019-11-30 7705 struct zoneref *z;
e349bc96af3953 Gregory Price 2026-08-19 7706 nodemask_t targets;
3bb64898f00368 Gregory Price 2025-12-21 7707 bool skip_hugetlb = true;
3bb64898f00368 Gregory Price 2025-12-21 7708 bool skipped_hugetlb = false;
5e27a2df03b893 Anshuman Khandual 2019-11-30 7709
e349bc96af3953 Gregory Price 2026-08-19 7710 /*
e349bc96af3953 Gregory Price 2026-08-19 7711 * ALLOC_ZONELIST_PRIVATE grants the search access to private nodes,
e349bc96af3953 Gregory Price 2026-08-19 7712 * but the private zonelist is built over all of N_MEMORY, so without
e349bc96af3953 Gregory Price 2026-08-19 7713 * a nodemask it would also offer up other devices' nodes. Confine it
e349bc96af3953 Gregory Price 2026-08-19 7714 * to @nid and the public nodes. A caller that supplied its own
e349bc96af3953 Gregory Price 2026-08-19 7715 * nodemask has already said what it will accept.
e349bc96af3953 Gregory Price 2026-08-19 7716 */
e349bc96af3953 Gregory Price 2026-08-19 @7717 if ((alloc_flags & ALLOC_ZONELIST_PRIVATE) && !nodemask &&
e349bc96af3953 Gregory Price 2026-08-19 7718 contig_private_targets(nid, &targets))
e349bc96af3953 Gregory Price 2026-08-19 7719 nodemask = &targets;
e349bc96af3953 Gregory Price 2026-08-19 7720
3bb64898f00368 Gregory Price 2025-12-21 7721 retry:
e349bc96af3953 Gregory Price 2026-08-19 7722 zonelist = select_zonelist(nid, gfp_mask, alloc_flags);
5e27a2df03b893 Anshuman Khandual 2019-11-30 7723 for_each_zone_zonelist_nodemask(zone, z, zonelist,
5e27a2df03b893 Anshuman Khandual 2019-11-30 7724 gfp_zone(gfp_mask), nodemask) {
5e27a2df03b893 Anshuman Khandual 2019-11-30 7725 spin_lock_irqsave(&zone->lock, flags);
5e27a2df03b893 Anshuman Khandual 2019-11-30 7726
5e27a2df03b893 Anshuman Khandual 2019-11-30 7727 pfn = ALIGN(zone->zone_start_pfn, nr_pages);
5e27a2df03b893 Anshuman Khandual 2019-11-30 7728 while (zone_spans_last_pfn(zone, pfn, nr_pages)) {
3bb64898f00368 Gregory Price 2025-12-21 7729 if (pfn_range_valid_contig(zone, pfn, nr_pages,
3bb64898f00368 Gregory Price 2025-12-21 7730 skip_hugetlb,
3bb64898f00368 Gregory Price 2025-12-21 7731 &skipped_hugetlb)) {
5e27a2df03b893 Anshuman Khandual 2019-11-30 7732 /*
5e27a2df03b893 Anshuman Khandual 2019-11-30 7733 * We release the zone lock here because
e0c1326779cc1b Kefeng Wang 2026-01-09 7734 * alloc_contig_frozen_range() will also lock
e0c1326779cc1b Kefeng Wang 2026-01-09 7735 * the zone at some point. If there's an
e0c1326779cc1b Kefeng Wang 2026-01-09 7736 * allocation spinning on this lock, it may
e0c1326779cc1b Kefeng Wang 2026-01-09 7737 * win the race and cause allocation to fail.
5e27a2df03b893 Anshuman Khandual 2019-11-30 7738 */
5e27a2df03b893 Anshuman Khandual 2019-11-30 7739 spin_unlock_irqrestore(&zone->lock, flags);
e0c1326779cc1b Kefeng Wang 2026-01-09 7740 ret = alloc_contig_frozen_range_noprof(pfn,
e0c1326779cc1b Kefeng Wang 2026-01-09 7741 pfn + nr_pages,
e0c1326779cc1b Kefeng Wang 2026-01-09 7742 ACR_FLAGS_NONE,
5e27a2df03b893 Anshuman Khandual 2019-11-30 7743 gfp_mask);
5e27a2df03b893 Anshuman Khandual 2019-11-30 7744 if (!ret)
5e27a2df03b893 Anshuman Khandual 2019-11-30 7745 return pfn_to_page(pfn);
5e27a2df03b893 Anshuman Khandual 2019-11-30 7746 spin_lock_irqsave(&zone->lock, flags);
5e27a2df03b893 Anshuman Khandual 2019-11-30 7747 }
5e27a2df03b893 Anshuman Khandual 2019-11-30 7748 pfn += nr_pages;
5e27a2df03b893 Anshuman Khandual 2019-11-30 7749 }
5e27a2df03b893 Anshuman Khandual 2019-11-30 7750 spin_unlock_irqrestore(&zone->lock, flags);
5e27a2df03b893 Anshuman Khandual 2019-11-30 7751 }
3bb64898f00368 Gregory Price 2025-12-21 7752 /*
3bb64898f00368 Gregory Price 2025-12-21 7753 * If we failed, retry the search, but treat regions with HugeTLB pages
3bb64898f00368 Gregory Price 2025-12-21 7754 * as valid targets. This retains fast-allocations on first pass
3bb64898f00368 Gregory Price 2025-12-21 7755 * without trying to migrate HugeTLB pages (which may fail). On the
3bb64898f00368 Gregory Price 2025-12-21 7756 * second pass, we will try moving HugeTLB pages when those pages are
3bb64898f00368 Gregory Price 2025-12-21 7757 * smaller than the requested contiguous region size.
3bb64898f00368 Gregory Price 2025-12-21 7758 */
3bb64898f00368 Gregory Price 2025-12-21 7759 if (skip_hugetlb && skipped_hugetlb) {
3bb64898f00368 Gregory Price 2025-12-21 7760 skip_hugetlb = false;
3bb64898f00368 Gregory Price 2025-12-21 7761 goto retry;
3bb64898f00368 Gregory Price 2025-12-21 7762 }
5e27a2df03b893 Anshuman Khandual 2019-11-30 7763 return NULL;
5e27a2df03b893 Anshuman Khandual 2019-11-30 7764 }
e0c1326779cc1b Kefeng Wang 2026-01-09 7765 EXPORT_SYMBOL(alloc_contig_frozen_pages_noprof);
041d3a8cdc18dc Michal Nazarewicz 2011-12-29 7766
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-21 21:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-21 21:16 [gourryinverse:scratch/gourry/managed_nodes/node_features_v6 42/44] mm/page_alloc.c:7717 alloc_contig_frozen_pages_noprof() warn: bitwise AND condition is false here kernel test robot
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.