Lines Matching refs:image
22 * kexec_image_info - Print received image details
25 kexec_image_info(const struct kimage *image)
29 pr_debug("Kexec image info:\n");
30 pr_debug("\ttype: %d\n", image->type);
31 pr_debug("\tstart: %lx\n", image->start);
32 pr_debug("\thead: %lx\n", image->head);
33 pr_debug("\tnr_segments: %lu\n", image->nr_segments);
35 for (i = 0; i < image->nr_segments; i++) {
37 image->segment[i].mem,
38 image->segment[i].mem + image->segment[i].memsz);
40 (unsigned long) image->segment[i].memsz,
41 (unsigned long) image->segment[i].memsz / PAGE_SIZE);
49 * provided us with an image to be loaded. Its goal is to validate
50 * the image and prepare the control code buffer as needed.
55 machine_kexec_prepare(struct kimage *image)
57 struct kimage_arch *internal = &image->arch;
63 kexec_image_info(image);
66 for (i = 0; i < image->nr_segments; i++) {
67 if (image->segment[i].memsz <= sizeof(fdt))
70 if (image->file_mode)
71 memcpy(&fdt, image->segment[i].buf, sizeof(fdt));
72 else if (copy_from_user(&fdt, image->segment[i].buf, sizeof(fdt)))
78 internal->fdt_addr = (unsigned long) image->segment[i].mem;
83 pr_err("Device tree not included in the provided image\n");
88 if (image->type != KEXEC_TYPE_CRASH) {
89 control_code_buffer = page_address(image->control_code_page);
90 control_code_buffer_sz = page_size(image->control_code_page);
118 machine_kexec_cleanup(struct kimage *image)
206 machine_kexec(struct kimage *image)
208 struct kimage_arch *internal = &image->arch;
209 unsigned long jump_addr = (unsigned long) image->start;
210 unsigned long first_ind_entry = (unsigned long) &image->head;
214 void *control_code_buffer = page_address(image->control_code_page);
222 if (image->type != KEXEC_TYPE_CRASH)
229 pr_notice("FDT image at %08lx\n", fdt_addr);