Hi ran, kernel test robot noticed the following build warnings: [auto build test WARNING on akpm-mm/mm-everything] [also build test WARNING on linus/master v6.10-rc5 next-20240625] [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/ran-xiaokai/mm-Constify-folio_order-folio_test_pmd_mappable/20240626-113027 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20240626024924.1155558-3-ranxiaokai627%40163.com patch subject: [PATCH 2/2] kpageflags: fix wrong KPF_THP on non-pmd-mappable compound pages config: parisc-allnoconfig (https://download.01.org/0day-ci/archive/20240626/202406262203.FFeFYbhP-lkp@xxxxxxxxx/config) compiler: hppa-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240626/202406262203.FFeFYbhP-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/202406262203.FFeFYbhP-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): fs/proc/page.c: In function 'stable_page_flags': >> fs/proc/page.c:151:42: warning: passing argument 1 of 'folio_test_pmd_mappable' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 151 | else if (folio_test_pmd_mappable(folio)) { | ^~~~~ In file included from include/linux/mm.h:1120, from include/linux/memblock.h:12, from fs/proc/page.c:2: include/linux/huge_mm.h:438:58: note: expected 'struct folio *' but argument is of type 'const struct folio *' 438 | static inline bool folio_test_pmd_mappable(struct folio *folio) | ~~~~~~~~~~~~~~^~~~~ vim +151 fs/proc/page.c 108 109 u64 stable_page_flags(const struct page *page) 110 { 111 const struct folio *folio; 112 unsigned long k; 113 unsigned long mapping; 114 bool is_anon; 115 u64 u = 0; 116 117 /* 118 * pseudo flag: KPF_NOPAGE 119 * it differentiates a memory hole from a page with no flags 120 */ 121 if (!page) 122 return 1 << KPF_NOPAGE; 123 folio = page_folio(page); 124 125 k = folio->flags; 126 mapping = (unsigned long)folio->mapping; 127 is_anon = mapping & PAGE_MAPPING_ANON; 128 129 /* 130 * pseudo flags for the well known (anonymous) memory mapped pages 131 */ 132 if (page_mapped(page)) 133 u |= 1 << KPF_MMAP; 134 if (is_anon) { 135 u |= 1 << KPF_ANON; 136 if (mapping & PAGE_MAPPING_KSM) 137 u |= 1 << KPF_KSM; 138 } 139 140 /* 141 * compound pages: export both head/tail info 142 * they together define a compound page's start/end pos and order 143 */ 144 if (page == &folio->page) 145 u |= kpf_copy_bit(k, KPF_COMPOUND_HEAD, PG_head); 146 else 147 u |= 1 << KPF_COMPOUND_TAIL; 148 149 if (folio_test_hugetlb(folio)) 150 u |= 1 << KPF_HUGE; > 151 else if (folio_test_pmd_mappable(folio)) { 152 u |= 1 << KPF_THP; 153 if (is_huge_zero_folio(folio)) 154 u |= 1 << KPF_ZERO_PAGE; 155 } else if (is_zero_pfn(page_to_pfn(page))) 156 u |= 1 << KPF_ZERO_PAGE; 157 158 /* 159 * Caveats on high order pages: PG_buddy and PG_slab will only be set 160 * on the head page. 161 */ 162 if (PageBuddy(page)) 163 u |= 1 << KPF_BUDDY; 164 else if (page_count(page) == 0 && is_free_buddy_page(page)) 165 u |= 1 << KPF_BUDDY; 166 167 if (PageOffline(page)) 168 u |= 1 << KPF_OFFLINE; 169 if (PageTable(page)) 170 u |= 1 << KPF_PGTABLE; 171 if (folio_test_slab(folio)) 172 u |= 1 << KPF_SLAB; 173 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki