Lines Matching refs:kimage

33 	const struct kimage *kimage)  in _kexec_image_info()  argument
37 kexec_dprintk(" type: %d\n", kimage->type); in _kexec_image_info()
38 kexec_dprintk(" head: %lx\n", kimage->head); in _kexec_image_info()
39 kexec_dprintk(" kern_reloc: %pa\n", &kimage->arch.kern_reloc); in _kexec_image_info()
40 kexec_dprintk(" el2_vectors: %pa\n", &kimage->arch.el2_vectors); in _kexec_image_info()
43 void machine_kexec_cleanup(struct kimage *kimage) in machine_kexec_cleanup() argument
55 int machine_kexec_prepare(struct kimage *kimage) in machine_kexec_prepare() argument
57 if (kimage->type != KEXEC_TYPE_CRASH && cpus_are_stuck_in_kernel()) { in machine_kexec_prepare()
68 static void kexec_segment_flush(const struct kimage *kimage) in kexec_segment_flush() argument
74 for (i = 0; i < kimage->nr_segments; i++) { in kexec_segment_flush()
77 kimage->segment[i].mem, in kexec_segment_flush()
78 kimage->segment[i].mem + kimage->segment[i].memsz, in kexec_segment_flush()
79 kimage->segment[i].memsz, in kexec_segment_flush()
80 kimage->segment[i].memsz / PAGE_SIZE); in kexec_segment_flush()
83 (unsigned long)phys_to_virt(kimage->segment[i].mem), in kexec_segment_flush()
84 (unsigned long)phys_to_virt(kimage->segment[i].mem) + in kexec_segment_flush()
85 kimage->segment[i].memsz); in kexec_segment_flush()
92 struct kimage *kimage = arg; in kexec_page_alloc() local
93 struct page *page = kimage_alloc_control_pages(kimage, 0); in kexec_page_alloc()
105 int machine_kexec_post_load(struct kimage *kimage) in machine_kexec_post_load() argument
109 void *reloc_code = page_to_virt(kimage->control_code_page); in machine_kexec_post_load()
113 .trans_alloc_arg = kimage, in machine_kexec_post_load()
117 if (kimage->head & IND_DONE) { in machine_kexec_post_load()
118 kexec_segment_flush(kimage); in machine_kexec_post_load()
119 kexec_image_info(kimage); in machine_kexec_post_load()
123 kimage->arch.el2_vectors = 0; in machine_kexec_post_load()
126 &kimage->arch.el2_vectors); in machine_kexec_post_load()
132 trans_pgd = kexec_page_alloc(kimage); in machine_kexec_post_load()
138 kimage->arch.ttbr1 = __pa(trans_pgd); in machine_kexec_post_load()
139 kimage->arch.zero_page = __pa_symbol(empty_zero_page); in machine_kexec_post_load()
143 kimage->arch.kern_reloc = __pa(reloc_code); in machine_kexec_post_load()
144 rc = trans_pgd_idmap_page(&info, &kimage->arch.ttbr0, in machine_kexec_post_load()
145 &kimage->arch.t0sz, reloc_code); in machine_kexec_post_load()
148 kimage->arch.phys_offset = virt_to_phys(kimage) - (long)kimage; in machine_kexec_post_load()
155 kexec_image_info(kimage); in machine_kexec_post_load()
165 void machine_kexec(struct kimage *kimage) in machine_kexec() argument
167 bool in_kexec_crash = (kimage == kexec_crash_image); in machine_kexec()
190 if (kimage->head & IND_DONE) { in machine_kexec()
195 restart(is_hyp_nvhe(), kimage->start, kimage->arch.dtb_mem, in machine_kexec()
198 void (*kernel_reloc)(struct kimage *kimage); in machine_kexec()
201 __hyp_set_vectors(kimage->arch.el2_vectors); in machine_kexec()
202 cpu_install_ttbr0(kimage->arch.ttbr0, kimage->arch.t0sz); in machine_kexec()
203 kernel_reloc = (void *)kimage->arch.kern_reloc; in machine_kexec()
204 kernel_reloc(kimage); in machine_kexec()