* [linux-next:master 8632/11398] mm/page_alloc.c:6773:62: sparse: sparse: incorrect type in argument 3 (different base types)
@ 2025-07-21 23:35 kernel test robot
2025-07-21 23:54 ` Zi Yan
0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2025-07-21 23:35 UTC (permalink / raw)
To: Zi Yan
Cc: oe-kbuild-all, Andrew Morton, Linux Memory Management List,
Vlastimil Babka
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 97987520025658f30bb787a99ffbd9bbff9ffc9d
commit: d1554fb6302093d353c8bf4601f9bf994b836904 [8632/11398] mm/page_isolation: remove migratetype parameter from more functions
config: arm64-randconfig-r132-20250721 (https://download.01.org/0day-ci/archive/20250722/202507220742.P3SaKlI6-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce: (https://download.01.org/0day-ci/archive/20250722/202507220742.P3SaKlI6-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/202507220742.P3SaKlI6-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> mm/page_alloc.c:6773:62: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned long nr_migrated @@ got restricted acr_flags_t [usertype] alloc_flags @@
mm/page_alloc.c:6773:62: sparse: expected unsigned long nr_migrated
mm/page_alloc.c:6773:62: sparse: got restricted acr_flags_t [usertype] alloc_flags
>> mm/page_alloc.c:6776:50: sparse: sparse: incorrect type in argument 6 (different base types) @@ expected restricted acr_flags_t [usertype] alloc_flags @@ got unsigned long [assigned] total_mapped @@
mm/page_alloc.c:6776:50: sparse: expected restricted acr_flags_t [usertype] alloc_flags
mm/page_alloc.c:6776:50: sparse: got unsigned long [assigned] total_mapped
mm/page_alloc.c:1526:13: sparse: sparse: context imbalance in 'free_one_page' - different lock contexts for basic block
mm/page_alloc.c:2520:12: sparse: sparse: context imbalance in 'rmqueue_bulk' - different lock contexts for basic block
mm/page_alloc.c:2878:13: sparse: sparse: context imbalance in '__free_frozen_pages' - different lock contexts for basic block
mm/page_alloc.c:2981:33: sparse: sparse: context imbalance in 'free_unref_folios' - unexpected unlock
mm/page_alloc.c:3271:20: sparse: sparse: context imbalance in 'rmqueue_pcplist' - different lock contexts for basic block
mm/page_alloc.c:3143:13: sparse: sparse: context imbalance in 'get_page_from_freelist' - different lock contexts for basic block
mm/page_alloc.c:5099:9: sparse: sparse: context imbalance in 'alloc_pages_bulk_noprof' - different lock contexts for basic block
vim +6773 mm/page_alloc.c
6693
6694 /*
6695 * [start, end) must belong to a single zone.
6696 * @alloc_flags: using acr_flags_t to filter the type of migration in
6697 * trace_mm_alloc_contig_migrate_range_info.
6698 */
6699 static int __alloc_contig_migrate_range(struct compact_control *cc,
6700 unsigned long start, unsigned long end,
6701 acr_flags_t alloc_flags)
6702 {
6703 /* This function is based on compact_zone() from compaction.c. */
6704 unsigned int nr_reclaimed;
6705 unsigned long pfn = start;
6706 unsigned int tries = 0;
6707 int ret = 0;
6708 struct migration_target_control mtc = {
6709 .nid = zone_to_nid(cc->zone),
6710 .gfp_mask = cc->gfp_mask,
6711 .reason = MR_CONTIG_RANGE,
6712 };
6713 struct page *page;
6714 unsigned long total_mapped = 0;
6715 unsigned long total_migrated = 0;
6716 unsigned long total_reclaimed = 0;
6717
6718 lru_cache_disable();
6719
6720 while (pfn < end || !list_empty(&cc->migratepages)) {
6721 if (fatal_signal_pending(current)) {
6722 ret = -EINTR;
6723 break;
6724 }
6725
6726 if (list_empty(&cc->migratepages)) {
6727 cc->nr_migratepages = 0;
6728 ret = isolate_migratepages_range(cc, pfn, end);
6729 if (ret && ret != -EAGAIN)
6730 break;
6731 pfn = cc->migrate_pfn;
6732 tries = 0;
6733 } else if (++tries == 5) {
6734 ret = -EBUSY;
6735 break;
6736 }
6737
6738 nr_reclaimed = reclaim_clean_pages_from_list(cc->zone,
6739 &cc->migratepages);
6740 cc->nr_migratepages -= nr_reclaimed;
6741
6742 if (trace_mm_alloc_contig_migrate_range_info_enabled()) {
6743 total_reclaimed += nr_reclaimed;
6744 list_for_each_entry(page, &cc->migratepages, lru) {
6745 struct folio *folio = page_folio(page);
6746
6747 total_mapped += folio_mapped(folio) *
6748 folio_nr_pages(folio);
6749 }
6750 }
6751
6752 ret = migrate_pages(&cc->migratepages, alloc_migration_target,
6753 NULL, (unsigned long)&mtc, cc->mode, MR_CONTIG_RANGE, NULL);
6754
6755 if (trace_mm_alloc_contig_migrate_range_info_enabled() && !ret)
6756 total_migrated += cc->nr_migratepages;
6757
6758 /*
6759 * On -ENOMEM, migrate_pages() bails out right away. It is pointless
6760 * to retry again over this error, so do the same here.
6761 */
6762 if (ret == -ENOMEM)
6763 break;
6764 }
6765
6766 lru_cache_enable();
6767 if (ret < 0) {
6768 if (!(cc->gfp_mask & __GFP_NOWARN) && ret == -EBUSY)
6769 alloc_contig_dump_pages(&cc->migratepages);
6770 putback_movable_pages(&cc->migratepages);
6771 }
6772
> 6773 trace_mm_alloc_contig_migrate_range_info(start, end, alloc_flags,
6774 total_migrated,
6775 total_reclaimed,
> 6776 total_mapped);
6777 return (ret < 0) ? ret : 0;
6778 }
6779
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [linux-next:master 8632/11398] mm/page_alloc.c:6773:62: sparse: sparse: incorrect type in argument 3 (different base types)
2025-07-21 23:35 [linux-next:master 8632/11398] mm/page_alloc.c:6773:62: sparse: sparse: incorrect type in argument 3 (different base types) kernel test robot
@ 2025-07-21 23:54 ` Zi Yan
0 siblings, 0 replies; 2+ messages in thread
From: Zi Yan @ 2025-07-21 23:54 UTC (permalink / raw)
To: Richard Chang
Cc: oe-kbuild-all, Andrew Morton, Linux Memory Management List,
Vlastimil Babka, kernel test robot, David Hildenbrand,
Suren Baghdasaryan, Michal Hocko, Brendan Jackman,
Johannes Weiner
On 21 Jul 2025, at 19:35, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head: 97987520025658f30bb787a99ffbd9bbff9ffc9d
> commit: d1554fb6302093d353c8bf4601f9bf994b836904 [8632/11398] mm/page_isolation: remove migratetype parameter from more functions
> config: arm64-randconfig-r132-20250721 (https://download.01.org/0day-ci/archive/20250722/202507220742.P3SaKlI6-lkp@intel.com/config)
> compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
> reproduce: (https://download.01.org/0day-ci/archive/20250722/202507220742.P3SaKlI6-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/202507220742.P3SaKlI6-lkp@intel.com/
>
> sparse warnings: (new ones prefixed by >>)
>>> mm/page_alloc.c:6773:62: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned long nr_migrated @@ got restricted acr_flags_t [usertype] alloc_flags @@
> mm/page_alloc.c:6773:62: sparse: expected unsigned long nr_migrated
> mm/page_alloc.c:6773:62: sparse: got restricted acr_flags_t [usertype] alloc_flags
>>> mm/page_alloc.c:6776:50: sparse: sparse: incorrect type in argument 6 (different base types) @@ expected restricted acr_flags_t [usertype] alloc_flags @@ got unsigned long [assigned] total_mapped @@
> mm/page_alloc.c:6776:50: sparse: expected restricted acr_flags_t [usertype] alloc_flags
> mm/page_alloc.c:6776:50: sparse: got unsigned long [assigned] total_mapped
> mm/page_alloc.c:1526:13: sparse: sparse: context imbalance in 'free_one_page' - different lock contexts for basic block
> mm/page_alloc.c:2520:12: sparse: sparse: context imbalance in 'rmqueue_bulk' - different lock contexts for basic block
> mm/page_alloc.c:2878:13: sparse: sparse: context imbalance in '__free_frozen_pages' - different lock contexts for basic block
> mm/page_alloc.c:2981:33: sparse: sparse: context imbalance in 'free_unref_folios' - unexpected unlock
> mm/page_alloc.c:3271:20: sparse: sparse: context imbalance in 'rmqueue_pcplist' - different lock contexts for basic block
> mm/page_alloc.c:3143:13: sparse: sparse: context imbalance in 'get_page_from_freelist' - different lock contexts for basic block
> mm/page_alloc.c:5099:9: sparse: sparse: context imbalance in 'alloc_pages_bulk_noprof' - different lock contexts for basic block
>
> vim +6773 mm/page_alloc.c
<snip>
> 6772
>> 6773 trace_mm_alloc_contig_migrate_range_info(start, end, alloc_flags,
> 6774 total_migrated,
> 6775 total_reclaimed,
>> 6776 total_mapped);
> 6777 return (ret < 0) ? ret : 0;
> 6778 }
> 6779
It seems that the original patch only moved migratetype from third parameter
to the last one[1], so the trace event has been useless since it was
added. My patch was just a mechanic change.
No one seems to notice the issue so far, maybe the trace event can be removed.
(Add other page allocator maintainer + David)
Hi Richard,
Let me know if this trace event is still useful to you. Otherwise, I am going
to send a patch to remove it.
Thanks.
[1] https://lore.kernel.org/all/20240228051127.2859472-1-richardycc@google.com/T/#u
Best Regards,
Yan, Zi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-07-21 23:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-21 23:35 [linux-next:master 8632/11398] mm/page_alloc.c:6773:62: sparse: sparse: incorrect type in argument 3 (different base types) kernel test robot
2025-07-21 23:54 ` Zi Yan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).