Lines Matching full:image

150 static void free_transition_pgtable(struct kimage *image)  in free_transition_pgtable()  argument
152 free_page((unsigned long)image->arch.p4d); in free_transition_pgtable()
153 image->arch.p4d = NULL; in free_transition_pgtable()
154 free_page((unsigned long)image->arch.pud); in free_transition_pgtable()
155 image->arch.pud = NULL; in free_transition_pgtable()
156 free_page((unsigned long)image->arch.pmd); in free_transition_pgtable()
157 image->arch.pmd = NULL; in free_transition_pgtable()
158 free_page((unsigned long)image->arch.pte); in free_transition_pgtable()
159 image->arch.pte = NULL; in free_transition_pgtable()
162 static int init_transition_pgtable(struct kimage *image, pgd_t *pgd, in init_transition_pgtable() argument
185 image->arch.p4d = p4d; in init_transition_pgtable()
193 image->arch.pud = pud; in init_transition_pgtable()
201 image->arch.pmd = pmd; in init_transition_pgtable()
209 image->arch.pte = pte; in init_transition_pgtable()
225 struct kimage *image = (struct kimage *)data; in alloc_pgt_page() local
229 page = kimage_alloc_control_pages(image, 0); in alloc_pgt_page()
238 static int init_pgtable(struct kimage *image, unsigned long control_page) in init_pgtable() argument
242 .context = image, in init_pgtable()
250 image->arch.pgd = alloc_pgt_page(image); in init_pgtable()
251 if (!image->arch.pgd) in init_pgtable()
266 result = kernel_ident_mapping_init(&info, image->arch.pgd, in init_pgtable()
278 for (i = 0; i < image->nr_segments; i++) { in init_pgtable()
279 mstart = image->segment[i].mem; in init_pgtable()
280 mend = mstart + image->segment[i].memsz; in init_pgtable()
282 result = kernel_ident_mapping_init(&info, image->arch.pgd, in init_pgtable()
293 result = map_efi_systab(&info, image->arch.pgd); in init_pgtable()
297 result = map_acpi_tables(&info, image->arch.pgd); in init_pgtable()
301 result = map_mmio_serial(&info, image->arch.pgd); in init_pgtable()
307 * allocates will not be control pages and may overlap the image. in init_pgtable()
309 return init_transition_pgtable(image, image->arch.pgd, control_page); in init_pgtable()
342 int machine_kexec_prepare(struct kimage *image) in machine_kexec_prepare() argument
344 void *control_page = page_address(image->control_code_page); in machine_kexec_prepare()
350 result = init_pgtable(image, __pa(control_page)); in machine_kexec_prepare()
354 kexec_pa_table_page = (unsigned long)__pa(image->arch.pgd); in machine_kexec_prepare()
356 if (image->type == KEXEC_TYPE_DEFAULT) in machine_kexec_prepare()
357 kexec_pa_swap_page = page_to_pfn(image->swap_page) << PAGE_SHIFT; in machine_kexec_prepare()
369 void machine_kexec_cleanup(struct kimage *image) in machine_kexec_cleanup() argument
371 void *control_page = page_address(image->control_code_page); in machine_kexec_cleanup()
376 free_transition_pgtable(image); in machine_kexec_cleanup()
383 void __nocfi machine_kexec(struct kimage *image) in machine_kexec() argument
398 if (image->preserve_context) in machine_kexec()
409 if (image->preserve_context) { in machine_kexec()
422 control_page = page_address(image->control_code_page); in machine_kexec()
443 image->start = relocate_kernel_ptr((unsigned long)image->head, in machine_kexec()
445 image->start, in machine_kexec()
446 image->preserve_context, in machine_kexec()
450 if (image->preserve_context) in machine_kexec()
587 int arch_kimage_file_post_load_cleanup(struct kimage *image) in arch_kimage_file_post_load_cleanup() argument
589 vfree(image->elf_headers); in arch_kimage_file_post_load_cleanup()
590 image->elf_headers = NULL; in arch_kimage_file_post_load_cleanup()
591 image->elf_headers_sz = 0; in arch_kimage_file_post_load_cleanup()
593 return kexec_image_post_load_cleanup_default(image); in arch_kimage_file_post_load_cleanup()