Lines Matching refs:image
37 static void free_transition_pgtable(struct kimage *image) in free_transition_pgtable() argument
39 free_page((unsigned long)image->arch.pud); in free_transition_pgtable()
40 free_page((unsigned long)image->arch.pmd); in free_transition_pgtable()
41 free_page((unsigned long)image->arch.pte); in free_transition_pgtable()
44 static int init_transition_pgtable(struct kimage *image, pgd_t *pgd) in init_transition_pgtable() argument
53 paddr = __pa(page_address(image->control_code_page)+PAGE_SIZE); in init_transition_pgtable()
59 image->arch.pud = pud; in init_transition_pgtable()
67 image->arch.pmd = pmd; in init_transition_pgtable()
75 image->arch.pte = pte; in init_transition_pgtable()
82 free_transition_pgtable(image); in init_transition_pgtable()
88 struct kimage *image = (struct kimage *)data; in alloc_pgt_page() local
92 page = kimage_alloc_control_pages(image, 0); in alloc_pgt_page()
101 static int init_pgtable(struct kimage *image, unsigned long start_pgtable) in init_pgtable() argument
105 .context = image, in init_pgtable()
131 for (i = 0; i < image->nr_segments; i++) { in init_pgtable()
132 mstart = image->segment[i].mem; in init_pgtable()
133 mend = mstart + image->segment[i].memsz; in init_pgtable()
142 return init_transition_pgtable(image, level4p); in init_pgtable()
188 static int arch_update_purgatory(struct kimage *image) in arch_update_purgatory() argument
192 if (!image->file_mode) in arch_update_purgatory()
196 if (image->type == KEXEC_TYPE_CRASH) { in arch_update_purgatory()
197 ret = kexec_purgatory_get_set_symbol(image, "backup_dest", in arch_update_purgatory()
198 &image->arch.backup_load_addr, in arch_update_purgatory()
199 sizeof(image->arch.backup_load_addr), 0); in arch_update_purgatory()
203 ret = kexec_purgatory_get_set_symbol(image, "backup_src", in arch_update_purgatory()
204 &image->arch.backup_src_start, in arch_update_purgatory()
205 sizeof(image->arch.backup_src_start), 0); in arch_update_purgatory()
209 ret = kexec_purgatory_get_set_symbol(image, "backup_sz", in arch_update_purgatory()
210 &image->arch.backup_src_sz, in arch_update_purgatory()
211 sizeof(image->arch.backup_src_sz), 0); in arch_update_purgatory()
219 static inline int arch_update_purgatory(struct kimage *image) in arch_update_purgatory() argument
225 int machine_kexec_prepare(struct kimage *image) in machine_kexec_prepare() argument
231 start_pgtable = page_to_pfn(image->control_code_page) << PAGE_SHIFT; in machine_kexec_prepare()
234 result = init_pgtable(image, start_pgtable); in machine_kexec_prepare()
239 result = arch_update_purgatory(image); in machine_kexec_prepare()
246 void machine_kexec_cleanup(struct kimage *image) in machine_kexec_cleanup() argument
248 free_transition_pgtable(image); in machine_kexec_cleanup()
255 void machine_kexec(struct kimage *image) in machine_kexec() argument
262 if (image->preserve_context) in machine_kexec()
272 if (image->preserve_context) { in machine_kexec()
285 control_page = page_address(image->control_code_page) + PAGE_SIZE; in machine_kexec()
291 (unsigned long)__pa(page_address(image->control_code_page)); in machine_kexec()
293 if (image->type == KEXEC_TYPE_DEFAULT) in machine_kexec()
294 page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page) in machine_kexec()
316 image->start = relocate_kernel((unsigned long)image->head, in machine_kexec()
318 image->start, in machine_kexec()
319 image->preserve_context); in machine_kexec()
322 if (image->preserve_context) in machine_kexec()
345 int arch_kexec_kernel_image_probe(struct kimage *image, void *buf, in arch_kexec_kernel_image_probe() argument
358 image->fops = fops; in arch_kexec_kernel_image_probe()
366 void *arch_kexec_kernel_image_load(struct kimage *image) in arch_kexec_kernel_image_load() argument
368 vfree(image->arch.elf_headers); in arch_kexec_kernel_image_load()
369 image->arch.elf_headers = NULL; in arch_kexec_kernel_image_load()
371 if (!image->fops || !image->fops->load) in arch_kexec_kernel_image_load()
374 return image->fops->load(image, image->kernel_buf, in arch_kexec_kernel_image_load()
375 image->kernel_buf_len, image->initrd_buf, in arch_kexec_kernel_image_load()
376 image->initrd_buf_len, image->cmdline_buf, in arch_kexec_kernel_image_load()
377 image->cmdline_buf_len); in arch_kexec_kernel_image_load()
380 int arch_kimage_file_post_load_cleanup(struct kimage *image) in arch_kimage_file_post_load_cleanup() argument
382 if (!image->fops || !image->fops->cleanup) in arch_kimage_file_post_load_cleanup()
385 return image->fops->cleanup(image->image_loader_data); in arch_kimage_file_post_load_cleanup()
388 int arch_kexec_kernel_verify_sig(struct kimage *image, void *kernel, in arch_kexec_kernel_verify_sig() argument
391 if (!image->fops || !image->fops->verify_sig) { in arch_kexec_kernel_verify_sig()
396 return image->fops->verify_sig(kernel, kernel_len); in arch_kexec_kernel_verify_sig()