Lines Matching refs:image
24 static int init_one_level2_page(struct kimage *image, pgd_t *pgd, in init_one_level2_page() argument
35 page = kimage_alloc_control_pages(image, 0); in init_one_level2_page()
44 page = kimage_alloc_control_pages(image, 0); in init_one_level2_page()
71 static int init_level3_page(struct kimage *image, pud_t *level3p, in init_level3_page() argument
84 page = kimage_alloc_control_pages(image, 0); in init_level3_page()
104 static int init_level4_page(struct kimage *image, pgd_t *level4p, in init_level4_page() argument
117 page = kimage_alloc_control_pages(image, 0); in init_level4_page()
123 result = init_level3_page(image, level3p, addr, last_addr); in init_level4_page()
138 static void free_transition_pgtable(struct kimage *image) in free_transition_pgtable() argument
140 free_page((unsigned long)image->arch.pud); in free_transition_pgtable()
141 free_page((unsigned long)image->arch.pmd); in free_transition_pgtable()
142 free_page((unsigned long)image->arch.pte); in free_transition_pgtable()
145 static int init_transition_pgtable(struct kimage *image, pgd_t *pgd) in init_transition_pgtable() argument
154 paddr = __pa(page_address(image->control_code_page)+PAGE_SIZE); in init_transition_pgtable()
160 image->arch.pud = pud; in init_transition_pgtable()
168 image->arch.pmd = pmd; in init_transition_pgtable()
176 image->arch.pte = pte; in init_transition_pgtable()
183 free_transition_pgtable(image); in init_transition_pgtable()
188 static int init_pgtable(struct kimage *image, unsigned long start_pgtable) in init_pgtable() argument
193 result = init_level4_page(image, level4p, 0, max_pfn << PAGE_SHIFT); in init_pgtable()
200 result = init_one_level2_page(image, level4p, image->start); in init_pgtable()
203 return init_transition_pgtable(image, level4p); in init_pgtable()
247 int machine_kexec_prepare(struct kimage *image) in machine_kexec_prepare() argument
253 start_pgtable = page_to_pfn(image->control_code_page) << PAGE_SHIFT; in machine_kexec_prepare()
256 result = init_pgtable(image, start_pgtable); in machine_kexec_prepare()
263 void machine_kexec_cleanup(struct kimage *image) in machine_kexec_cleanup() argument
265 free_transition_pgtable(image); in machine_kexec_cleanup()
272 void machine_kexec(struct kimage *image) in machine_kexec() argument
279 if (image->preserve_context) in machine_kexec()
289 if (image->preserve_context) { in machine_kexec()
302 control_page = page_address(image->control_code_page) + PAGE_SIZE; in machine_kexec()
308 (unsigned long)__pa(page_address(image->control_code_page)); in machine_kexec()
310 if (image->type == KEXEC_TYPE_DEFAULT) in machine_kexec()
311 page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page) in machine_kexec()
333 image->start = relocate_kernel((unsigned long)image->head, in machine_kexec()
335 image->start, in machine_kexec()
336 image->preserve_context); in machine_kexec()
339 if (image->preserve_context) in machine_kexec()