Lines Matching +full:image +full:- +full:processor
1 // SPDX-License-Identifier: GPL-2.0-only
29 #include <asm/processor.h>
54 * processor. And when loading kvm_intel module, the
192 walk_system_ram_res(0, -1, &nr_ranges, get_nr_ram_ranges_callback); in fill_up_crash_elf_data()
205 cmem->max_nr_ranges = nr_ranges; in fill_up_crash_elf_data()
206 cmem->nr_ranges = 0; in fill_up_crash_elf_data()
213 * might lead to split and split ranges are put in cmem->ranges[] array
220 ret = crash_exclude_mem_range(cmem, 0, (1<<20)-1); in elf_header_exclude_ranges()
240 cmem->ranges[cmem->nr_ranges].start = res->start; in prepare_elf64_ram_headers_callback()
241 cmem->ranges[cmem->nr_ranges].end = res->end; in prepare_elf64_ram_headers_callback()
242 cmem->nr_ranges++; in prepare_elf64_ram_headers_callback()
248 static int prepare_elf_headers(struct kimage *image, void **addr, in prepare_elf_headers() argument
256 return -ENOMEM; in prepare_elf_headers()
258 ret = walk_system_ram_res(0, -1, cmem, prepare_elf64_ram_headers_callback); in prepare_elf_headers()
279 nr_e820_entries = params->e820_entries; in add_e820_entry()
283 memcpy(¶ms->e820_table[nr_e820_entries], entry, sizeof(struct e820_entry)); in add_e820_entry()
284 params->e820_entries++; in add_e820_entry()
291 struct boot_params *params = cmd->params; in memmap_entry_callback()
294 ei.addr = res->start; in memmap_entry_callback()
296 ei.type = cmd->type; in memmap_entry_callback()
302 static int memmap_exclude_ranges(struct kimage *image, struct crash_mem *cmem, in memmap_exclude_ranges() argument
308 cmem->ranges[0].start = mstart; in memmap_exclude_ranges()
309 cmem->ranges[0].end = mend; in memmap_exclude_ranges()
310 cmem->nr_ranges = 1; in memmap_exclude_ranges()
313 start = image->elf_load_addr; in memmap_exclude_ranges()
314 end = start + image->elf_headers_sz - 1; in memmap_exclude_ranges()
319 int crash_setup_memmap_entries(struct kimage *image, struct boot_params *params) in crash_setup_memmap_entries() argument
329 return -ENOMEM; in crash_setup_memmap_entries()
337 walk_iomem_res_desc(IORES_DESC_NONE, flags, 0, (1<<20)-1, &cmd, in crash_setup_memmap_entries()
343 walk_iomem_res_desc(IORES_DESC_ACPI_TABLES, flags, 0, -1, &cmd, in crash_setup_memmap_entries()
346 /* Add ACPI Non-volatile Storage */ in crash_setup_memmap_entries()
348 walk_iomem_res_desc(IORES_DESC_ACPI_NV_STORAGE, flags, 0, -1, &cmd, in crash_setup_memmap_entries()
354 walk_iomem_res_desc(IORES_DESC_RESERVED, flags, 0, -1, &cmd, in crash_setup_memmap_entries()
366 ret = memmap_exclude_ranges(image, cmem, crashk_res.start, crashk_res.end); in crash_setup_memmap_entries()
370 for (i = 0; i < cmem->nr_ranges; i++) { in crash_setup_memmap_entries()
371 ei.size = cmem->ranges[i].end - cmem->ranges[i].start + 1; in crash_setup_memmap_entries()
376 ei.addr = cmem->ranges[i].start; in crash_setup_memmap_entries()
386 int crash_load_segments(struct kimage *image) in crash_load_segments() argument
389 struct kexec_buf kbuf = { .image = image, .buf_min = 0, in crash_load_segments()
393 ret = prepare_elf_headers(image, &kbuf.buffer, &kbuf.bufsz); in crash_load_segments()
397 image->elf_headers = kbuf.buffer; in crash_load_segments()
398 image->elf_headers_sz = kbuf.bufsz; in crash_load_segments()
405 vfree((void *)image->elf_headers); in crash_load_segments()
408 image->elf_load_addr = kbuf.mem; in crash_load_segments()
410 image->elf_load_addr, kbuf.bufsz, kbuf.memsz); in crash_load_segments()