Lines Matching refs:image
71 static void machine_kexec_free_page_tables(struct kimage *image) in machine_kexec_free_page_tables() argument
73 free_page((unsigned long)image->arch.pgd); in machine_kexec_free_page_tables()
75 free_page((unsigned long)image->arch.pmd0); in machine_kexec_free_page_tables()
76 free_page((unsigned long)image->arch.pmd1); in machine_kexec_free_page_tables()
78 free_page((unsigned long)image->arch.pte0); in machine_kexec_free_page_tables()
79 free_page((unsigned long)image->arch.pte1); in machine_kexec_free_page_tables()
82 static int machine_kexec_alloc_page_tables(struct kimage *image) in machine_kexec_alloc_page_tables() argument
84 image->arch.pgd = (pgd_t *)get_zeroed_page(GFP_KERNEL); in machine_kexec_alloc_page_tables()
86 image->arch.pmd0 = (pmd_t *)get_zeroed_page(GFP_KERNEL); in machine_kexec_alloc_page_tables()
87 image->arch.pmd1 = (pmd_t *)get_zeroed_page(GFP_KERNEL); in machine_kexec_alloc_page_tables()
89 image->arch.pte0 = (pte_t *)get_zeroed_page(GFP_KERNEL); in machine_kexec_alloc_page_tables()
90 image->arch.pte1 = (pte_t *)get_zeroed_page(GFP_KERNEL); in machine_kexec_alloc_page_tables()
91 if (!image->arch.pgd || in machine_kexec_alloc_page_tables()
93 !image->arch.pmd0 || !image->arch.pmd1 || in machine_kexec_alloc_page_tables()
95 !image->arch.pte0 || !image->arch.pte1) { in machine_kexec_alloc_page_tables()
96 machine_kexec_free_page_tables(image); in machine_kexec_alloc_page_tables()
121 static void machine_kexec_prepare_page_tables(struct kimage *image) in machine_kexec_prepare_page_tables() argument
126 control_page = page_address(image->control_code_page); in machine_kexec_prepare_page_tables()
128 pmd = image->arch.pmd0; in machine_kexec_prepare_page_tables()
131 image->arch.pgd, pmd, image->arch.pte0, in machine_kexec_prepare_page_tables()
134 pmd = image->arch.pmd1; in machine_kexec_prepare_page_tables()
137 image->arch.pgd, pmd, image->arch.pte1, in machine_kexec_prepare_page_tables()
156 int machine_kexec_prepare(struct kimage *image) in machine_kexec_prepare() argument
160 set_pages_x(image->control_code_page, 1); in machine_kexec_prepare()
161 error = machine_kexec_alloc_page_tables(image); in machine_kexec_prepare()
164 machine_kexec_prepare_page_tables(image); in machine_kexec_prepare()
172 void machine_kexec_cleanup(struct kimage *image) in machine_kexec_cleanup() argument
174 set_pages_nx(image->control_code_page, 1); in machine_kexec_cleanup()
175 machine_kexec_free_page_tables(image); in machine_kexec_cleanup()
182 void machine_kexec(struct kimage *image) in machine_kexec() argument
195 if (image->preserve_context) in machine_kexec()
205 if (image->preserve_context) { in machine_kexec()
218 control_page = page_address(image->control_code_page); in machine_kexec()
224 page_list[PA_PGD] = __pa(image->arch.pgd); in machine_kexec()
226 if (image->type == KEXEC_TYPE_DEFAULT) in machine_kexec()
227 page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page) in machine_kexec()
249 image->start = relocate_kernel_ptr((unsigned long)image->head, in machine_kexec()
251 image->start, cpu_has_pae, in machine_kexec()
252 image->preserve_context); in machine_kexec()
255 if (image->preserve_context) in machine_kexec()