Re: [PATCH v2 01/14] mm: Batch-copy PTE ranges during fork()

kernel test robot
2023-11-15T22:41:23Z

Hi Ryan,

kernel test robot noticed the following build errors:

[auto build test ERROR on akpm-mm/mm-everything]
[also build test ERROR on linus/master v6.7-rc1 next-20231115]
[cannot apply to arm64/for-next/core efi/next]
[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/mm-Batch-copy-PTE-ranges-during-fork/20231116-010123
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20231115163018.1303287-2-ryan.roberts%40arm.com
patch subject: [PATCH v2 01/14] mm: Batch-copy PTE ranges during fork()
config: alpha-defconfig (https://download.01.org/0day-ci/archive/20231116/202311160652.wBj0hbPP-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231116/202311160652.wBj0hbPP-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/202311160652.wBj0hbPP-lkp@intel.com/

All errors (new ones prefixed by >>):

mm/memory.c: In function 'folio_nr_pages_cont_mapped':
mm/memory.c:969:16: error: implicit declaration of function 'pte_pgprot'; did you mean 'ptep_get'? [-Werror=implicit-function-declaration]
969 | prot = pte_pgprot(pte_mkold(pte_mkclean(ptent)));
| ^~~~~~~~~~
| ptep_get
>> mm/memory.c:969:16: error: incompatible types when assigning to type 'pgprot_t' from type 'int'
In file included from include/linux/shm.h:6,
from include/linux/sched.h:16,
from include/linux/hardirq.h:9,
from include/linux/interrupt.h:11,
from include/linux/kernel_stat.h:9,
from mm/memory.c:43:
>> arch/alpha/include/asm/page.h:38:29: error: request for member 'pgprot' in something not a structure or union
38 | #define pgprot_val(x) ((x).pgprot)
| ^
mm/memory.c:981:21: note: in expansion of macro 'pgprot_val'
981 | pgprot_val(pte_pgprot(ptent)) != pgprot_val(prot))
| ^~~~~~~~~~
cc1: some warnings being treated as errors

vim +969 mm/memory.c

950
951 static int folio_nr_pages_cont_mapped(struct folio *folio,
952 struct page *page, pte_t *pte,
953 unsigned long addr, unsigned long end,
954 pte_t ptent, bool *any_dirty)
955 {
956 int floops;
957 int i;
958 unsigned long pfn;
959 pgprot_t prot;
960 struct page *folio_end;
961
962 if (!folio_test_large(folio))
963 return 1;
964
965 folio_end = &folio->page + folio_nr_pages(folio);
966 end = min(page_cont_mapped_vaddr(folio_end, page, addr), end);
967 floops = (end - addr) >> PAGE_SHIFT;
968 pfn = page_to_pfn(page);
> 969 prot = pte_pgprot(pte_mkold(pte_mkclean(ptent)));
970
971 *any_dirty = pte_dirty(ptent);
972
973 pfn++;
974 pte++;
975
976 for (i = 1; i < floops; i++) {
977 ptent = ptep_get(pte);
978 ptent = pte_mkold(pte_mkclean(ptent));
979
980 if (!pte_present(ptent) || pte_pfn(ptent) != pfn ||
981 pgprot_val(pte_pgprot(ptent)) != pgprot_val(prot))
982 break;
983
984 if (pte_dirty(ptent))
985 *any_dirty = true;
986
987 pfn++;
988 pte++;
989 }
990
991 return i;
992 }
993

--
0-DAY CI Kernel Test Service