Lines Matching full:image
110 static void free_transition_pgtable(struct kimage *image) in free_transition_pgtable() argument
112 free_page((unsigned long)image->arch.p4d); in free_transition_pgtable()
113 image->arch.p4d = NULL; in free_transition_pgtable()
114 free_page((unsigned long)image->arch.pud); in free_transition_pgtable()
115 image->arch.pud = NULL; in free_transition_pgtable()
116 free_page((unsigned long)image->arch.pmd); in free_transition_pgtable()
117 image->arch.pmd = NULL; in free_transition_pgtable()
118 free_page((unsigned long)image->arch.pte); in free_transition_pgtable()
119 image->arch.pte = NULL; in free_transition_pgtable()
122 static int init_transition_pgtable(struct kimage *image, pgd_t *pgd) in init_transition_pgtable() argument
133 paddr = __pa(page_address(image->control_code_page)+PAGE_SIZE); in init_transition_pgtable()
139 image->arch.p4d = p4d; in init_transition_pgtable()
147 image->arch.pud = pud; in init_transition_pgtable()
155 image->arch.pmd = pmd; in init_transition_pgtable()
163 image->arch.pte = pte; in init_transition_pgtable()
179 struct kimage *image = (struct kimage *)data; in alloc_pgt_page() local
183 page = kimage_alloc_control_pages(image, 0); in alloc_pgt_page()
192 static int init_pgtable(struct kimage *image, unsigned long start_pgtable) in init_pgtable() argument
196 .context = image, in init_pgtable()
232 for (i = 0; i < image->nr_segments; i++) { in init_pgtable()
233 mstart = image->segment[i].mem; in init_pgtable()
234 mend = mstart + image->segment[i].memsz; in init_pgtable()
255 return init_transition_pgtable(image, level4p); in init_pgtable()
270 int machine_kexec_prepare(struct kimage *image) in machine_kexec_prepare() argument
276 start_pgtable = page_to_pfn(image->control_code_page) << PAGE_SHIFT; in machine_kexec_prepare()
279 result = init_pgtable(image, start_pgtable); in machine_kexec_prepare()
286 void machine_kexec_cleanup(struct kimage *image) in machine_kexec_cleanup() argument
288 free_transition_pgtable(image); in machine_kexec_cleanup()
295 void machine_kexec(struct kimage *image) in machine_kexec() argument
302 if (image->preserve_context) in machine_kexec()
313 if (image->preserve_context) { in machine_kexec()
326 control_page = page_address(image->control_code_page) + PAGE_SIZE; in machine_kexec()
332 (unsigned long)__pa(page_address(image->control_code_page)); in machine_kexec()
334 if (image->type == KEXEC_TYPE_DEFAULT) in machine_kexec()
335 page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page) in machine_kexec()
357 image->start = relocate_kernel((unsigned long)image->head, in machine_kexec()
359 image->start, in machine_kexec()
360 image->preserve_context, in machine_kexec()
364 if (image->preserve_context) in machine_kexec()
501 int arch_kimage_file_post_load_cleanup(struct kimage *image) in arch_kimage_file_post_load_cleanup() argument
503 vfree(image->elf_headers); in arch_kimage_file_post_load_cleanup()
504 image->elf_headers = NULL; in arch_kimage_file_post_load_cleanup()
505 image->elf_headers_sz = 0; in arch_kimage_file_post_load_cleanup()
507 return kexec_image_post_load_cleanup_default(image); in arch_kimage_file_post_load_cleanup()