Lines Matching refs:kimage

33 	const struct kimage *kimage)  in _kexec_image_info()  argument
39 pr_debug(" type: %d\n", kimage->type); in _kexec_image_info()
40 pr_debug(" start: %lx\n", kimage->start); in _kexec_image_info()
41 pr_debug(" head: %lx\n", kimage->head); in _kexec_image_info()
42 pr_debug(" nr_segments: %lu\n", kimage->nr_segments); in _kexec_image_info()
43 pr_debug(" dtb_mem: %pa\n", &kimage->arch.dtb_mem); in _kexec_image_info()
44 pr_debug(" kern_reloc: %pa\n", &kimage->arch.kern_reloc); in _kexec_image_info()
45 pr_debug(" el2_vectors: %pa\n", &kimage->arch.el2_vectors); in _kexec_image_info()
47 for (i = 0; i < kimage->nr_segments; i++) { in _kexec_image_info()
50 kimage->segment[i].mem, in _kexec_image_info()
51 kimage->segment[i].mem + kimage->segment[i].memsz, in _kexec_image_info()
52 kimage->segment[i].memsz, in _kexec_image_info()
53 kimage->segment[i].memsz / PAGE_SIZE); in _kexec_image_info()
57 void machine_kexec_cleanup(struct kimage *kimage) in machine_kexec_cleanup() argument
69 int machine_kexec_prepare(struct kimage *kimage) in machine_kexec_prepare() argument
71 if (kimage->type != KEXEC_TYPE_CRASH && cpus_are_stuck_in_kernel()) { in machine_kexec_prepare()
82 static void kexec_segment_flush(const struct kimage *kimage) in kexec_segment_flush() argument
88 for (i = 0; i < kimage->nr_segments; i++) { in kexec_segment_flush()
91 kimage->segment[i].mem, in kexec_segment_flush()
92 kimage->segment[i].mem + kimage->segment[i].memsz, in kexec_segment_flush()
93 kimage->segment[i].memsz, in kexec_segment_flush()
94 kimage->segment[i].memsz / PAGE_SIZE); in kexec_segment_flush()
97 (unsigned long)phys_to_virt(kimage->segment[i].mem), in kexec_segment_flush()
98 (unsigned long)phys_to_virt(kimage->segment[i].mem) + in kexec_segment_flush()
99 kimage->segment[i].memsz); in kexec_segment_flush()
106 struct kimage *kimage = arg; in kexec_page_alloc() local
107 struct page *page = kimage_alloc_control_pages(kimage, 0); in kexec_page_alloc()
119 int machine_kexec_post_load(struct kimage *kimage) in machine_kexec_post_load() argument
123 void *reloc_code = page_to_virt(kimage->control_code_page); in machine_kexec_post_load()
127 .trans_alloc_arg = kimage, in machine_kexec_post_load()
131 if (kimage->head & IND_DONE) { in machine_kexec_post_load()
132 kexec_segment_flush(kimage); in machine_kexec_post_load()
133 kexec_image_info(kimage); in machine_kexec_post_load()
137 kimage->arch.el2_vectors = 0; in machine_kexec_post_load()
140 &kimage->arch.el2_vectors); in machine_kexec_post_load()
146 trans_pgd = kexec_page_alloc(kimage); in machine_kexec_post_load()
152 kimage->arch.ttbr1 = __pa(trans_pgd); in machine_kexec_post_load()
153 kimage->arch.zero_page = __pa_symbol(empty_zero_page); in machine_kexec_post_load()
157 kimage->arch.kern_reloc = __pa(reloc_code); in machine_kexec_post_load()
158 rc = trans_pgd_idmap_page(&info, &kimage->arch.ttbr0, in machine_kexec_post_load()
159 &kimage->arch.t0sz, reloc_code); in machine_kexec_post_load()
162 kimage->arch.phys_offset = virt_to_phys(kimage) - (long)kimage; in machine_kexec_post_load()
169 kexec_image_info(kimage); in machine_kexec_post_load()
179 void machine_kexec(struct kimage *kimage) in machine_kexec() argument
181 bool in_kexec_crash = (kimage == kexec_crash_image); in machine_kexec()
204 if (kimage->head & IND_DONE) { in machine_kexec()
209 restart(is_hyp_nvhe(), kimage->start, kimage->arch.dtb_mem, in machine_kexec()
212 void (*kernel_reloc)(struct kimage *kimage); in machine_kexec()
215 __hyp_set_vectors(kimage->arch.el2_vectors); in machine_kexec()
216 cpu_install_ttbr0(kimage->arch.ttbr0, kimage->arch.t0sz); in machine_kexec()
217 kernel_reloc = (void *)kimage->arch.kern_reloc; in machine_kexec()
218 kernel_reloc(kimage); in machine_kexec()