Re: [PATCH v3 05/11] arm64: hugetlb: Use set_ptes_anysz() and ptep_get_and_clear_anysz()
From: Ryan Roberts
Date: Wed Mar 05 2025 - 11:33:03 EST
On 05/03/2025 16:00, kernel test robot wrote:
> Hi Ryan,
>
> kernel test robot noticed the following build warnings:
>
> [auto build test WARNING on linus/master]
> [also build test WARNING on v6.14-rc5 next-20250305]
> [cannot apply to arm64/for-next/core akpm-mm/mm-everything arm-perf/for-next/perf]
> [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/Ryan-Roberts/arm64-hugetlb-Cleanup-huge_pte-size-discovery-mechanisms/20250304-230647
> base: linus/master
> patch link: https://lore.kernel.org/r/20250304150444.3788920-6-ryan.roberts%40arm.com
> patch subject: [PATCH v3 05/11] arm64: hugetlb: Use set_ptes_anysz() and ptep_get_and_clear_anysz()
> config: arm64-randconfig-003-20250305 (https://download.01.org/0day-ci/archive/20250305/202503052315.vk7m958M-lkp@xxxxxxxxx/config)
> compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 14170b16028c087ca154878f5ed93d3089a965c6)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250305/202503052315.vk7m958M-lkp@xxxxxxxxx/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@xxxxxxxxx>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202503052315.vk7m958M-lkp@xxxxxxxxx/
>
> All warnings (new ones prefixed by >>):
>
> In file included from arch/arm64/mm/hugetlbpage.c:12:
> In file included from include/linux/mm.h:2224:
> include/linux/vmstat.h:504:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
> 504 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
> | ~~~~~~~~~~~~~~~~~~~~~ ^
> 505 | item];
> | ~~~~
> include/linux/vmstat.h:511:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
> 511 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
> | ~~~~~~~~~~~~~~~~~~~~~ ^
> 512 | NR_VM_NUMA_EVENT_ITEMS +
> | ~~~~~~~~~~~~~~~~~~~~~~
>>> arch/arm64/mm/hugetlbpage.c:154:23: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
> 154 | unsigned long addr,
> | ^
> 3 warnings generated.
>
>
> vim +/addr +154 arch/arm64/mm/hugetlbpage.c
>
> bc5dfb4fd7bd471 Baolin Wang 2022-05-16 144
> d8bdcff2876424d Steve Capper 2017-08-22 145 /*
> d8bdcff2876424d Steve Capper 2017-08-22 146 * Changing some bits of contiguous entries requires us to follow a
> d8bdcff2876424d Steve Capper 2017-08-22 147 * Break-Before-Make approach, breaking the whole contiguous set
> d8bdcff2876424d Steve Capper 2017-08-22 148 * before we can change any entries. See ARM DDI 0487A.k_iss10775,
> d8bdcff2876424d Steve Capper 2017-08-22 149 * "Misprogramming of the Contiguous bit", page D4-1762.
> d8bdcff2876424d Steve Capper 2017-08-22 150 *
> d8bdcff2876424d Steve Capper 2017-08-22 151 * This helper performs the break step.
> d8bdcff2876424d Steve Capper 2017-08-22 152 */
> fb396bb459c1fa3 Anshuman Khandual 2022-05-10 153 static pte_t get_clear_contig(struct mm_struct *mm,
> d8bdcff2876424d Steve Capper 2017-08-22 @154 unsigned long addr,
> d8bdcff2876424d Steve Capper 2017-08-22 155 pte_t *ptep,
> d8bdcff2876424d Steve Capper 2017-08-22 156 unsigned long pgsize,
> d8bdcff2876424d Steve Capper 2017-08-22 157 unsigned long ncontig)
> d8bdcff2876424d Steve Capper 2017-08-22 158 {
> 49c87f7677746f3 Ryan Roberts 2025-02-26 159 pte_t pte, tmp_pte;
> 49c87f7677746f3 Ryan Roberts 2025-02-26 160 bool present;
> 49c87f7677746f3 Ryan Roberts 2025-02-26 161
> 66251d3eadf78e2 Ryan Roberts 2025-03-04 162 pte = ptep_get_and_clear_anysz(mm, ptep, pgsize);
> 49c87f7677746f3 Ryan Roberts 2025-02-26 163 present = pte_present(pte);
> 49c87f7677746f3 Ryan Roberts 2025-02-26 164 while (--ncontig) {
> 49c87f7677746f3 Ryan Roberts 2025-02-26 165 ptep++;
> 49c87f7677746f3 Ryan Roberts 2025-02-26 166 addr += pgsize;
Ahh yes, thanks! Looks like this line can be removed since we no longer need the
address.
Catalin, I was optimistically hoping this might be the final version. If it is,
are you happy to fold this in? Or do you want me to re-spin regardless?
> 66251d3eadf78e2 Ryan Roberts 2025-03-04 167 tmp_pte = ptep_get_and_clear_anysz(mm, ptep, pgsize);
> 49c87f7677746f3 Ryan Roberts 2025-02-26 168 if (present) {
> 49c87f7677746f3 Ryan Roberts 2025-02-26 169 if (pte_dirty(tmp_pte))
> 49c87f7677746f3 Ryan Roberts 2025-02-26 170 pte = pte_mkdirty(pte);
> 49c87f7677746f3 Ryan Roberts 2025-02-26 171 if (pte_young(tmp_pte))
> 49c87f7677746f3 Ryan Roberts 2025-02-26 172 pte = pte_mkyoung(pte);
> d8bdcff2876424d Steve Capper 2017-08-22 173 }
> 49c87f7677746f3 Ryan Roberts 2025-02-26 174 }
> 49c87f7677746f3 Ryan Roberts 2025-02-26 175 return pte;
> d8bdcff2876424d Steve Capper 2017-08-22 176 }
> d8bdcff2876424d Steve Capper 2017-08-22 177
>