All of lore.kernel.org
 help / color / mirror / Atom feed
* [rppt:direct-map/v0 4/7] kernel/liveupdate/kexec_handover.c:1074:17: error: implicit declaration of function 'get_vm_area_page_order'; did you mean 'get_vm_area_caller'?
@ 2026-07-07  1:10 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-07-07  1:10 UTC (permalink / raw)
  To: Mike Rapoport (Microsoft); +Cc: oe-kbuild-all

Hi Mike,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/rppt/linux.git direct-map/v0
head:   21effbca0418e549e468c2141da5ba1ef83f06fb
commit: 5990078704982cce2dc9a952fb328771a7e7d991 [4/7] mm: split out vmalloc declarations from internal.h
config: x86_64-randconfig-012-20260707 (https://download.01.org/0day-ci/archive/20260707/202607070906.OBSxN7Lh-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260707/202607070906.OBSxN7Lh-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/202607070906.OBSxN7Lh-lkp@intel.com/

All errors (new ones prefixed by >>):

   kernel/liveupdate/kexec_handover.c: In function 'kho_preserve_vmalloc':
>> kernel/liveupdate/kexec_handover.c:1074:17: error: implicit declaration of function 'get_vm_area_page_order'; did you mean 'get_vm_area_caller'? [-Wimplicit-function-declaration]
    1074 |         order = get_vm_area_page_order(vm);
         |                 ^~~~~~~~~~~~~~~~~~~~~~
         |                 get_vm_area_caller
   kernel/liveupdate/kexec_handover.c: In function 'kho_restore_vmalloc':
>> kernel/liveupdate/kexec_handover.c:1220:9: error: implicit declaration of function 'clear_vm_uninitialized_flag' [-Wimplicit-function-declaration]
    1220 |         clear_vm_uninitialized_flag(area);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +1074 kernel/liveupdate/kexec_handover.c

a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1043) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1044) /**
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1045)  * kho_preserve_vmalloc - preserve memory allocated with vmalloc() across kexec
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1046)  * @ptr: pointer to the area in vmalloc address space
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1047)  * @preservation: placeholder for preservation metadata
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1048)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1049)  * Instructs KHO to preserve the area in vmalloc address space at @ptr. The
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1050)  * physical pages mapped at @ptr will be preserved and on successful return
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1051)  * @preservation will hold the physical address of a structure that describes
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1052)  * the preservation.
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1053)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1054)  * NOTE: The memory allocated with vmalloc_node() variants cannot be reliably
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1055)  * restored on the same node
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1056)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1057)  * Return: 0 on success, error code on failure
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1058)  */
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1059) int kho_preserve_vmalloc(void *ptr, struct kho_vmalloc *preservation)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1060) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1061) 	struct kho_vmalloc_chunk *chunk;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1062) 	struct vm_struct *vm = find_vm_area(ptr);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1063) 	unsigned int order, flags, nr_contig_pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1064) 	unsigned int idx = 0;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1065) 	int err;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1066) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1067) 	if (!vm)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1068) 		return -EINVAL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1069) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1070) 	if (vm->flags & ~KHO_VMALLOC_SUPPORTED_FLAGS)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1071) 		return -EOPNOTSUPP;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1072) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1073) 	flags = vmalloc_flags_to_kho(vm->flags);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21 @1074) 	order = get_vm_area_page_order(vm);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1075) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1076) 	chunk = new_vmalloc_chunk(NULL);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1077) 	if (!chunk)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1078) 		return -ENOMEM;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1079) 	KHOSER_STORE_PTR(preservation->first, chunk);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1080) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1081) 	nr_contig_pages = (1 << order);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1082) 	for (int i = 0; i < vm->nr_pages; i += nr_contig_pages) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1083) 		phys_addr_t phys = page_to_phys(vm->pages[i]);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1084) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1085) 		err = kho_preserve_pages(vm->pages[i], nr_contig_pages);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1086) 		if (err)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1087) 			goto err_free;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1088) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1089) 		chunk->phys[idx++] = phys;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1090) 		if (idx == ARRAY_SIZE(chunk->phys)) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1091) 			chunk = new_vmalloc_chunk(chunk);
412a32f0e53f4a kernel/liveupdate/kexec_handover.c Andrew Morton             2026-01-21  1092  			if (!chunk) {
412a32f0e53f4a kernel/liveupdate/kexec_handover.c Andrew Morton             2026-01-21  1093  				err = -ENOMEM;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1094) 				goto err_free;
412a32f0e53f4a kernel/liveupdate/kexec_handover.c Andrew Morton             2026-01-21  1095  			}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1096) 			idx = 0;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1097) 		}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1098) 	}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1099) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1100) 	preservation->total_pages = vm->nr_pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1101) 	preservation->flags = flags;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1102) 	preservation->order = order;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1103) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1104) 	return 0;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1105) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1106) err_free:
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1107  	kho_unpreserve_vmalloc(preservation);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1108) 	return err;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1109) }
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1110) EXPORT_SYMBOL_GPL(kho_preserve_vmalloc);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1111) 
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1112  /**
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1113   * kho_unpreserve_vmalloc - unpreserve memory allocated with vmalloc()
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1114   * @preservation: preservation metadata returned by kho_preserve_vmalloc()
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1115   *
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1116   * Instructs KHO to unpreserve the area in vmalloc address space that was
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1117   * previously preserved with kho_preserve_vmalloc().
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1118   */
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1119  void kho_unpreserve_vmalloc(struct kho_vmalloc *preservation)
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1120  {
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1121  	struct kho_vmalloc_chunk *chunk = KHOSER_LOAD_PTR(preservation->first);
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1122  
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1123  	while (chunk) {
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1124  		struct kho_vmalloc_chunk *tmp = chunk;
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1125  
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1126  		kho_vmalloc_unpreserve_chunk(chunk, preservation->order);
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1127  
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1128  		chunk = KHOSER_LOAD_PTR(chunk->hdr.next);
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1129  		free_page((unsigned long)tmp);
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1130  	}
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1131  }
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1132  EXPORT_SYMBOL_GPL(kho_unpreserve_vmalloc);
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1133  
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1134) /**
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1135)  * kho_restore_vmalloc - recreates and populates an area in vmalloc address
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1136)  * space from the preserved memory.
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1137)  * @preservation: preservation metadata.
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1138)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1139)  * Recreates an area in vmalloc address space and populates it with memory that
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1140)  * was preserved using kho_preserve_vmalloc().
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1141)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1142)  * Return: pointer to the area in the vmalloc address space, NULL on failure.
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1143)  */
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1144) void *kho_restore_vmalloc(const struct kho_vmalloc *preservation)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1145) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1146) 	struct kho_vmalloc_chunk *chunk = KHOSER_LOAD_PTR(preservation->first);
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1147  	kasan_vmalloc_flags_t kasan_flags = KASAN_VMALLOC_PROT_NORMAL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1148) 	unsigned int align, order, shift, vm_flags;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1149) 	unsigned long total_pages, contig_pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1150) 	unsigned long addr, size;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1151) 	struct vm_struct *area;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1152) 	struct page **pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1153) 	unsigned int idx = 0;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1154) 	int err;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1155) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1156) 	vm_flags = kho_flags_to_vmalloc(preservation->flags);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1157) 	if (vm_flags & ~KHO_VMALLOC_SUPPORTED_FLAGS)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1158) 		return NULL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1159) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1160) 	total_pages = preservation->total_pages;
bf4afc53b77aea kernel/liveupdate/kexec_handover.c Linus Torvalds            2026-02-21  1161  	pages = kvmalloc_objs(*pages, total_pages);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1162) 	if (!pages)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1163) 		return NULL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1164) 	order = preservation->order;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1165) 	contig_pages = (1 << order);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1166) 	shift = PAGE_SHIFT + order;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1167) 	align = 1 << shift;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1168) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1169) 	while (chunk) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1170) 		struct page *page;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1171) 
0b07092d09e54e kernel/kexec_handover.c            Pratyush Yadav            2025-11-03  1172  		for (int i = 0; i < ARRAY_SIZE(chunk->phys) && chunk->phys[i]; i++) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1173) 			phys_addr_t phys = chunk->phys[i];
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1174) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1175) 			if (idx + contig_pages > total_pages)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1176) 				goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1177) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1178) 			page = kho_restore_pages(phys, contig_pages);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1179) 			if (!page)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1180) 				goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1181) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1182) 			for (int j = 0; j < contig_pages; j++)
4bc84cd539dff1 kernel/liveupdate/kexec_handover.c Mike Rapoport (Microsoft  2025-11-25  1183) 				pages[idx++] = page + j;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1184) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1185) 			phys += contig_pages * PAGE_SIZE;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1186) 		}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1187) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1188) 		page = kho_restore_pages(virt_to_phys(chunk), 1);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1189) 		if (!page)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1190) 			goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1191) 		chunk = KHOSER_LOAD_PTR(chunk->hdr.next);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1192) 		__free_page(page);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1193) 	}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1194) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1195) 	if (idx != total_pages)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1196) 		goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1197) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1198) 	area = __get_vm_area_node(total_pages * PAGE_SIZE, align, shift,
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1199  				  vm_flags | VM_UNINITIALIZED,
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1200  				  VMALLOC_START, VMALLOC_END,
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1201) 				  NUMA_NO_NODE, GFP_KERNEL,
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1202) 				  __builtin_return_address(0));
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1203) 	if (!area)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1204) 		goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1205) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1206) 	addr = (unsigned long)area->addr;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1207) 	size = get_vm_area_size(area);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1208) 	err = vmap_pages_range(addr, addr + size, PAGE_KERNEL, pages, shift);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1209) 	if (err)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1210) 		goto err_free_vm_area;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1211) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1212) 	area->nr_pages = total_pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1213) 	area->pages = pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1214) 
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1215  	if (vm_flags & VM_ALLOC)
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1216  		kasan_flags |= KASAN_VMALLOC_VM_ALLOC;
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1217  
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1218  	area->addr = kasan_unpoison_vmalloc(area->addr, total_pages * PAGE_SIZE,
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1219  					    kasan_flags);
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25 @1220  	clear_vm_uninitialized_flag(area);
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1221  
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1222) 	return area->addr;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1223) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1224) err_free_vm_area:
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1225) 	free_vm_area(area);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1226) err_free_pages_array:
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1227) 	kvfree(pages);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1228) 	return NULL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1229) }
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1230) EXPORT_SYMBOL_GPL(kho_restore_vmalloc);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1231) 

:::::: The code at line 1074 was first introduced by commit
:::::: a667300bd53f272a3055238bcefe108f88836270 kho: add support for preserving vmalloc allocations

:::::: TO: Mike Rapoport (Microsoft) <rppt@kernel.org>
:::::: CC: Andrew Morton <akpm@linux-foundation.org>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread
* [rppt:direct-map/v0 4/7] kernel/liveupdate/kexec_handover.c:1074:17: error: implicit declaration of function 'get_vm_area_page_order'; did you mean 'get_vm_area_caller'?
@ 2026-07-06 18:41 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-07-06 18:41 UTC (permalink / raw)
  To: Mike Rapoport (Microsoft); +Cc: oe-kbuild-all

Hi Mike,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/rppt/linux.git direct-map/v0
head:   21effbca0418e549e468c2141da5ba1ef83f06fb
commit: 5990078704982cce2dc9a952fb328771a7e7d991 [4/7] mm: split out vmalloc declarations from internal.h
config: x86_64-rhel-9.4-kselftests (https://download.01.org/0day-ci/archive/20260706/202607062004.YM0OrOer-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260706/202607062004.YM0OrOer-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/202607062004.YM0OrOer-lkp@intel.com/

All errors (new ones prefixed by >>):

   kernel/liveupdate/kexec_handover.c: In function 'kho_preserve_vmalloc':
>> kernel/liveupdate/kexec_handover.c:1074:17: error: implicit declaration of function 'get_vm_area_page_order'; did you mean 'get_vm_area_caller'? [-Wimplicit-function-declaration]
    1074 |         order = get_vm_area_page_order(vm);
         |                 ^~~~~~~~~~~~~~~~~~~~~~
         |                 get_vm_area_caller
   kernel/liveupdate/kexec_handover.c: In function 'kho_restore_vmalloc':
>> kernel/liveupdate/kexec_handover.c:1220:9: error: implicit declaration of function 'clear_vm_uninitialized_flag' [-Wimplicit-function-declaration]
    1220 |         clear_vm_uninitialized_flag(area);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +1074 kernel/liveupdate/kexec_handover.c

a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1043) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1044) /**
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1045)  * kho_preserve_vmalloc - preserve memory allocated with vmalloc() across kexec
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1046)  * @ptr: pointer to the area in vmalloc address space
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1047)  * @preservation: placeholder for preservation metadata
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1048)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1049)  * Instructs KHO to preserve the area in vmalloc address space at @ptr. The
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1050)  * physical pages mapped at @ptr will be preserved and on successful return
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1051)  * @preservation will hold the physical address of a structure that describes
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1052)  * the preservation.
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1053)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1054)  * NOTE: The memory allocated with vmalloc_node() variants cannot be reliably
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1055)  * restored on the same node
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1056)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1057)  * Return: 0 on success, error code on failure
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1058)  */
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1059) int kho_preserve_vmalloc(void *ptr, struct kho_vmalloc *preservation)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1060) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1061) 	struct kho_vmalloc_chunk *chunk;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1062) 	struct vm_struct *vm = find_vm_area(ptr);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1063) 	unsigned int order, flags, nr_contig_pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1064) 	unsigned int idx = 0;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1065) 	int err;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1066) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1067) 	if (!vm)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1068) 		return -EINVAL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1069) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1070) 	if (vm->flags & ~KHO_VMALLOC_SUPPORTED_FLAGS)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1071) 		return -EOPNOTSUPP;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1072) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1073) 	flags = vmalloc_flags_to_kho(vm->flags);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21 @1074) 	order = get_vm_area_page_order(vm);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1075) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1076) 	chunk = new_vmalloc_chunk(NULL);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1077) 	if (!chunk)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1078) 		return -ENOMEM;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1079) 	KHOSER_STORE_PTR(preservation->first, chunk);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1080) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1081) 	nr_contig_pages = (1 << order);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1082) 	for (int i = 0; i < vm->nr_pages; i += nr_contig_pages) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1083) 		phys_addr_t phys = page_to_phys(vm->pages[i]);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1084) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1085) 		err = kho_preserve_pages(vm->pages[i], nr_contig_pages);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1086) 		if (err)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1087) 			goto err_free;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1088) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1089) 		chunk->phys[idx++] = phys;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1090) 		if (idx == ARRAY_SIZE(chunk->phys)) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1091) 			chunk = new_vmalloc_chunk(chunk);
412a32f0e53f4a kernel/liveupdate/kexec_handover.c Andrew Morton             2026-01-21  1092  			if (!chunk) {
412a32f0e53f4a kernel/liveupdate/kexec_handover.c Andrew Morton             2026-01-21  1093  				err = -ENOMEM;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1094) 				goto err_free;
412a32f0e53f4a kernel/liveupdate/kexec_handover.c Andrew Morton             2026-01-21  1095  			}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1096) 			idx = 0;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1097) 		}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1098) 	}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1099) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1100) 	preservation->total_pages = vm->nr_pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1101) 	preservation->flags = flags;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1102) 	preservation->order = order;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1103) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1104) 	return 0;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1105) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1106) err_free:
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1107  	kho_unpreserve_vmalloc(preservation);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1108) 	return err;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1109) }
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1110) EXPORT_SYMBOL_GPL(kho_preserve_vmalloc);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1111) 
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1112  /**
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1113   * kho_unpreserve_vmalloc - unpreserve memory allocated with vmalloc()
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1114   * @preservation: preservation metadata returned by kho_preserve_vmalloc()
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1115   *
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1116   * Instructs KHO to unpreserve the area in vmalloc address space that was
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1117   * previously preserved with kho_preserve_vmalloc().
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1118   */
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1119  void kho_unpreserve_vmalloc(struct kho_vmalloc *preservation)
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1120  {
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1121  	struct kho_vmalloc_chunk *chunk = KHOSER_LOAD_PTR(preservation->first);
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1122  
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1123  	while (chunk) {
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1124  		struct kho_vmalloc_chunk *tmp = chunk;
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1125  
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1126  		kho_vmalloc_unpreserve_chunk(chunk, preservation->order);
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1127  
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1128  		chunk = KHOSER_LOAD_PTR(chunk->hdr.next);
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1129  		free_page((unsigned long)tmp);
de51999e687c70 kernel/liveupdate/kexec_handover.c Pasha Tatashin            2025-11-14  1130  	}
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1131  }
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1132  EXPORT_SYMBOL_GPL(kho_unpreserve_vmalloc);
36f8f7ef7fd2f2 kernel/kexec_handover.c            Pasha Tatashin            2025-11-01  1133  
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1134) /**
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1135)  * kho_restore_vmalloc - recreates and populates an area in vmalloc address
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1136)  * space from the preserved memory.
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1137)  * @preservation: preservation metadata.
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1138)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1139)  * Recreates an area in vmalloc address space and populates it with memory that
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1140)  * was preserved using kho_preserve_vmalloc().
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1141)  *
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1142)  * Return: pointer to the area in the vmalloc address space, NULL on failure.
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1143)  */
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1144) void *kho_restore_vmalloc(const struct kho_vmalloc *preservation)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1145) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1146) 	struct kho_vmalloc_chunk *chunk = KHOSER_LOAD_PTR(preservation->first);
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1147  	kasan_vmalloc_flags_t kasan_flags = KASAN_VMALLOC_PROT_NORMAL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1148) 	unsigned int align, order, shift, vm_flags;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1149) 	unsigned long total_pages, contig_pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1150) 	unsigned long addr, size;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1151) 	struct vm_struct *area;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1152) 	struct page **pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1153) 	unsigned int idx = 0;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1154) 	int err;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1155) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1156) 	vm_flags = kho_flags_to_vmalloc(preservation->flags);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1157) 	if (vm_flags & ~KHO_VMALLOC_SUPPORTED_FLAGS)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1158) 		return NULL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1159) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1160) 	total_pages = preservation->total_pages;
bf4afc53b77aea kernel/liveupdate/kexec_handover.c Linus Torvalds            2026-02-21  1161  	pages = kvmalloc_objs(*pages, total_pages);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1162) 	if (!pages)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1163) 		return NULL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1164) 	order = preservation->order;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1165) 	contig_pages = (1 << order);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1166) 	shift = PAGE_SHIFT + order;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1167) 	align = 1 << shift;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1168) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1169) 	while (chunk) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1170) 		struct page *page;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1171) 
0b07092d09e54e kernel/kexec_handover.c            Pratyush Yadav            2025-11-03  1172  		for (int i = 0; i < ARRAY_SIZE(chunk->phys) && chunk->phys[i]; i++) {
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1173) 			phys_addr_t phys = chunk->phys[i];
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1174) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1175) 			if (idx + contig_pages > total_pages)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1176) 				goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1177) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1178) 			page = kho_restore_pages(phys, contig_pages);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1179) 			if (!page)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1180) 				goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1181) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1182) 			for (int j = 0; j < contig_pages; j++)
4bc84cd539dff1 kernel/liveupdate/kexec_handover.c Mike Rapoport (Microsoft  2025-11-25  1183) 				pages[idx++] = page + j;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1184) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1185) 			phys += contig_pages * PAGE_SIZE;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1186) 		}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1187) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1188) 		page = kho_restore_pages(virt_to_phys(chunk), 1);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1189) 		if (!page)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1190) 			goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1191) 		chunk = KHOSER_LOAD_PTR(chunk->hdr.next);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1192) 		__free_page(page);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1193) 	}
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1194) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1195) 	if (idx != total_pages)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1196) 		goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1197) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1198) 	area = __get_vm_area_node(total_pages * PAGE_SIZE, align, shift,
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1199  				  vm_flags | VM_UNINITIALIZED,
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1200  				  VMALLOC_START, VMALLOC_END,
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1201) 				  NUMA_NO_NODE, GFP_KERNEL,
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1202) 				  __builtin_return_address(0));
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1203) 	if (!area)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1204) 		goto err_free_pages_array;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1205) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1206) 	addr = (unsigned long)area->addr;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1207) 	size = get_vm_area_size(area);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1208) 	err = vmap_pages_range(addr, addr + size, PAGE_KERNEL, pages, shift);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1209) 	if (err)
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1210) 		goto err_free_vm_area;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1211) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1212) 	area->nr_pages = total_pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1213) 	area->pages = pages;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1214) 
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1215  	if (vm_flags & VM_ALLOC)
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1216  		kasan_flags |= KASAN_VMALLOC_VM_ALLOC;
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1217  
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1218  	area->addr = kasan_unpoison_vmalloc(area->addr, total_pages * PAGE_SIZE,
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1219  					    kasan_flags);
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25 @1220  	clear_vm_uninitialized_flag(area);
019fc36872374d kernel/liveupdate/kexec_handover.c Pasha Tatashin            2026-02-25  1221  
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1222) 	return area->addr;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1223) 
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1224) err_free_vm_area:
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1225) 	free_vm_area(area);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1226) err_free_pages_array:
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1227) 	kvfree(pages);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1228) 	return NULL;
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1229) }
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1230) EXPORT_SYMBOL_GPL(kho_restore_vmalloc);
a667300bd53f27 kernel/kexec_handover.c            Mike Rapoport (Microsoft  2025-09-21  1231) 

:::::: The code at line 1074 was first introduced by commit
:::::: a667300bd53f272a3055238bcefe108f88836270 kho: add support for preserving vmalloc allocations

:::::: TO: Mike Rapoport (Microsoft) <rppt@kernel.org>
:::::: CC: Andrew Morton <akpm@linux-foundation.org>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-07-07  1:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-07  1:10 [rppt:direct-map/v0 4/7] kernel/liveupdate/kexec_handover.c:1074:17: error: implicit declaration of function 'get_vm_area_page_order'; did you mean 'get_vm_area_caller'? kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2026-07-06 18:41 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.