Lines Matching refs:fw_dump

46 static struct fw_dump fw_dump;  variable
87 if (!fw_dump.fadump_supported || !fw_dump.fadump_enabled || in fadump_cma_init()
88 fw_dump.dump_active) in fadump_cma_init()
93 if (fw_dump.nocma || !fw_dump.boot_memory_size) in fadump_cma_init()
102 base = fw_dump.reserve_dump_area_start; in fadump_cma_init()
103 size = fw_dump.boot_memory_size; in fadump_cma_init()
139 fw_dump.reserve_dump_area_start, in fadump_cma_init()
140 fw_dump.boot_memory_size >> 20); in fadump_cma_init()
154 if (!fw_dump.dump_active || !fw_dump.param_area_supported || !fw_dump.param_area) in fadump_append_bootargs()
157 if (fw_dump.param_area < fw_dump.boot_mem_top) { in fadump_append_bootargs()
158 if (memblock_reserve(fw_dump.param_area, COMMAND_LINE_SIZE)) { in fadump_append_bootargs()
160 fw_dump.param_area = 0; in fadump_append_bootargs()
165 append_args = (char *)fw_dump.param_area; in fadump_append_bootargs()
193 rtas_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
198 opal_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
213 if (!fw_dump.dump_registered) in is_fadump_memory_area()
219 d_start = fw_dump.reserve_dump_area_start; in is_fadump_memory_area()
220 d_end = d_start + fw_dump.reserve_dump_area_size; in is_fadump_memory_area()
224 return (addr <= fw_dump.boot_mem_top); in is_fadump_memory_area()
229 if (!fw_dump.dump_registered || !fw_dump.fadumphdr_addr) in should_fadump_crash()
236 return fw_dump.dump_active; in is_fadump_active()
277 d_start = fw_dump.reserve_dump_area_start; in is_fadump_reserved_mem_contiguous()
278 d_end = d_start + fw_dump.reserve_dump_area_size; in is_fadump_reserved_mem_contiguous()
288 (fw_dump.fadump_supported ? "present" : "no support")); in fadump_show_config()
290 if (!fw_dump.fadump_supported) in fadump_show_config()
293 pr_debug("Fadump enabled : %s\n", str_yes_no(fw_dump.fadump_enabled)); in fadump_show_config()
294 pr_debug("Dump Active : %s\n", str_yes_no(fw_dump.dump_active)); in fadump_show_config()
296 pr_debug(" CPU state data size: %lx\n", fw_dump.cpu_state_data_size); in fadump_show_config()
297 pr_debug(" HPTE region size : %lx\n", fw_dump.hpte_region_size); in fadump_show_config()
298 pr_debug(" Boot memory size : %lx\n", fw_dump.boot_memory_size); in fadump_show_config()
299 pr_debug(" Boot memory top : %llx\n", fw_dump.boot_mem_top); in fadump_show_config()
300 pr_debug("Boot memory regions cnt: %llx\n", fw_dump.boot_mem_regs_cnt); in fadump_show_config()
301 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_show_config()
303 fw_dump.boot_mem_addr[i], fw_dump.boot_mem_sz[i]); in fadump_show_config()
327 if (fw_dump.reserve_bootvar) in fadump_calculate_reserve_size()
340 if (fw_dump.reserve_bootvar) in fadump_calculate_reserve_size()
343 fw_dump.reserve_bootvar = (unsigned long)size; in fadump_calculate_reserve_size()
350 if (fw_dump.reserve_bootvar > max_size) { in fadump_calculate_reserve_size()
351 fw_dump.reserve_bootvar = max_size; in fadump_calculate_reserve_size()
353 (fw_dump.reserve_bootvar >> 20)); in fadump_calculate_reserve_size()
356 return fw_dump.reserve_bootvar; in fadump_calculate_reserve_size()
357 } else if (fw_dump.reserve_bootvar) { in fadump_calculate_reserve_size()
362 return fw_dump.reserve_bootvar; in fadump_calculate_reserve_size()
375 bootmem_min = fw_dump.ops->fadump_get_bootmem_min(); in fadump_calculate_reserve_size()
387 size += fw_dump.cpu_state_data_size; in get_fadump_area_size()
388 size += fw_dump.hpte_region_size; in get_fadump_area_size()
394 size += fw_dump.boot_memory_size; in get_fadump_area_size()
398 size += (fw_dump.ops->fadump_get_metadata_size ? in get_fadump_area_size()
399 fw_dump.ops->fadump_get_metadata_size() : 0); in get_fadump_area_size()
406 int max_boot_mem_rgns = fw_dump.ops->fadump_max_boot_mem_rgns(); in add_boot_mem_region()
407 int i = fw_dump.boot_mem_regs_cnt++; in add_boot_mem_region()
409 if (fw_dump.boot_mem_regs_cnt > max_boot_mem_rgns) { in add_boot_mem_region()
410 fw_dump.boot_mem_regs_cnt = max_boot_mem_rgns; in add_boot_mem_region()
416 fw_dump.boot_mem_addr[i] = rstart; in add_boot_mem_region()
417 fw_dump.boot_mem_sz[i] = rsize; in add_boot_mem_region()
432 max_size = fw_dump.max_copy_size ? fw_dump.max_copy_size : msize; in add_boot_mem_regions()
453 unsigned long mem_size = fw_dump.boot_memory_size; in fadump_get_boot_mem_regions()
458 fw_dump.boot_mem_regs_cnt = 0; in fadump_get_boot_mem_regions()
481 fw_dump.boot_mem_top = PAGE_ALIGN(fw_dump.boot_memory_size + hole_size); in fadump_get_boot_mem_regions()
554 if (!fw_dump.fadump_enabled) in fadump_reserve_mem()
557 if (!fw_dump.fadump_supported) { in fadump_reserve_mem()
567 if (!fw_dump.dump_active) { in fadump_reserve_mem()
568 fw_dump.boot_memory_size = in fadump_reserve_mem()
571 bootmem_min = fw_dump.ops->fadump_get_bootmem_min(); in fadump_reserve_mem()
572 if (fw_dump.boot_memory_size < bootmem_min) { in fadump_reserve_mem()
574 fw_dump.boot_memory_size, bootmem_min); in fadump_reserve_mem()
589 base = fw_dump.boot_mem_top; in fadump_reserve_mem()
591 fw_dump.reserve_dump_area_size = size; in fadump_reserve_mem()
592 if (fw_dump.dump_active) { in fadump_reserve_mem()
611 pr_debug("fadumphdr_addr = %#016lx\n", fw_dump.fadumphdr_addr); in fadump_reserve_mem()
613 fw_dump.reserve_dump_area_start); in fadump_reserve_mem()
625 fw_dump.reserve_dump_area_start = base; in fadump_reserve_mem()
631 if (fw_dump.ops->fadump_setup_metadata && in fadump_reserve_mem()
632 (fw_dump.ops->fadump_setup_metadata(&fw_dump) < 0)) in fadump_reserve_mem()
646 fw_dump.fadump_enabled = 0; in fadump_reserve_mem()
647 fw_dump.reserve_dump_area_size = 0; in fadump_reserve_mem()
658 fw_dump.fadump_enabled = 1; in early_fadump_param()
660 fw_dump.fadump_enabled = 0; in early_fadump_param()
662 fw_dump.fadump_enabled = 1; in early_fadump_param()
663 fw_dump.nocma = 1; in early_fadump_param()
678 fw_dump.reserve_bootvar = memparse(p, &p); in early_fadump_reserve_mem()
714 while (fw_dump.dump_registered) in crash_fadump()
719 fdh = __va(fw_dump.fadumphdr_addr); in crash_fadump()
740 fw_dump.ops->fadump_trigger(fdh, str); in crash_fadump()
768 phdr->p_paddr = __pa(fw_dump.cpu_notes_buf_vaddr); in fadump_update_elfcore_header()
770 phdr->p_filesz = fw_dump.cpu_notes_buf_size; in fadump_update_elfcore_header()
771 phdr->p_memsz = fw_dump.cpu_notes_buf_size; in fadump_update_elfcore_header()
801 fw_dump.cpu_notes_buf_size = num_cpus * sizeof(note_buf_t); in fadump_setup_cpu_notes_buf()
802 fw_dump.cpu_notes_buf_size = PAGE_ALIGN(fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
803 fw_dump.cpu_notes_buf_vaddr = in fadump_setup_cpu_notes_buf()
804 (unsigned long)fadump_alloc_buffer(fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
805 if (!fw_dump.cpu_notes_buf_vaddr) { in fadump_setup_cpu_notes_buf()
807 fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
812 fw_dump.cpu_notes_buf_size, in fadump_setup_cpu_notes_buf()
813 fw_dump.cpu_notes_buf_vaddr); in fadump_setup_cpu_notes_buf()
819 if (!fw_dump.cpu_notes_buf_vaddr) in fadump_free_cpu_notes_buf()
822 fadump_free_buffer(fw_dump.cpu_notes_buf_vaddr, in fadump_free_cpu_notes_buf()
823 fw_dump.cpu_notes_buf_size); in fadump_free_cpu_notes_buf()
824 fw_dump.cpu_notes_buf_vaddr = 0; in fadump_free_cpu_notes_buf()
825 fw_dump.cpu_notes_buf_size = 0; in fadump_free_cpu_notes_buf()
890 if ((start + size) == base && start >= fw_dump.boot_mem_top) in fadump_add_mem_range()
973 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_relocate()
974 rstart = fw_dump.boot_mem_addr[i]; in fadump_relocate()
975 rend = rstart + fw_dump.boot_mem_sz[i]; in fadump_relocate()
979 raddr += fw_dump.boot_mem_dest_addr - hole_size; in fadump_relocate()
1011 bufp = (char *) fw_dump.elfcorehdr_addr; in fadump_populate_elfcorehdr()
1052 boot_mem_dest_offset = fw_dump.boot_mem_dest_addr; in fadump_populate_elfcorehdr()
1053 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_populate_elfcorehdr()
1056 populate_elf_pt_load(phdr, fw_dump.boot_mem_addr[i], in fadump_populate_elfcorehdr()
1057 fw_dump.boot_mem_sz[i], in fadump_populate_elfcorehdr()
1061 boot_mem_dest_offset += fw_dump.boot_mem_sz[i]; in fadump_populate_elfcorehdr()
1065 ra_start = fw_dump.reserve_dump_area_start; in fadump_populate_elfcorehdr()
1072 if (mstart < fw_dump.boot_mem_top) { in fadump_populate_elfcorehdr()
1073 if (mend > fw_dump.boot_mem_top) in fadump_populate_elfcorehdr()
1074 mstart = fw_dump.boot_mem_top; in fadump_populate_elfcorehdr()
1148 if (!fw_dump.reserve_dump_area_size) in register_fadump()
1151 addr = fw_dump.fadumphdr_addr; in register_fadump()
1158 return fw_dump.ops->fadump_register(&fw_dump); in register_fadump()
1163 if (!fw_dump.fadump_supported) in fadump_cleanup()
1167 if (fw_dump.dump_active) { in fadump_cleanup()
1169 fw_dump.ops->fadump_invalidate(&fw_dump); in fadump_cleanup()
1170 } else if (fw_dump.dump_registered) { in fadump_cleanup()
1172 fw_dump.ops->fadump_unregister(&fw_dump); in fadump_cleanup()
1175 if (fw_dump.ops->fadump_cleanup) in fadump_cleanup()
1176 fw_dump.ops->fadump_cleanup(&fw_dump); in fadump_cleanup()
1321 ra_start = fw_dump.reserve_dump_area_start; in fadump_release_memory()
1322 ra_end = ra_start + fw_dump.reserve_dump_area_size; in fadump_release_memory()
1360 if (fw_dump.elfcorehdr_addr == 0 || fw_dump.elfcorehdr_size == 0) in fadump_free_elfcorehdr_buf()
1369 fadump_free_buffer(fw_dump.elfcorehdr_addr, fw_dump.elfcorehdr_size); in fadump_free_elfcorehdr_buf()
1370 fw_dump.elfcorehdr_addr = 0; in fadump_free_elfcorehdr_buf()
1371 fw_dump.elfcorehdr_size = 0; in fadump_free_elfcorehdr_buf()
1377 if (!fw_dump.dump_active) in fadump_invalidate_release_mem()
1383 fadump_release_memory(fw_dump.boot_mem_top, memblock_end_of_DRAM()); in fadump_invalidate_release_mem()
1390 if (fw_dump.ops->fadump_setup_metadata && in fadump_invalidate_release_mem()
1391 (fw_dump.ops->fadump_setup_metadata(&fw_dump) < 0)) in fadump_invalidate_release_mem()
1393 fw_dump.ops->fadump_init_mem_struct(&fw_dump); in fadump_invalidate_release_mem()
1402 if (!fw_dump.dump_active) in release_mem_store()
1427 fadump_release_memory(fw_dump.reserve_dump_area_start, in unregister_fadump()
1428 fw_dump.reserve_dump_area_size); in unregister_fadump()
1429 fw_dump.fadump_enabled = 0; in unregister_fadump()
1437 return sprintf(buf, "%d\n", fw_dump.fadump_enabled); in enabled_show()
1456 return sprintf(buf, "%ld\n", fw_dump.reserve_dump_area_size); in mem_reserved_show()
1463 return sprintf(buf, "%d\n", fw_dump.dump_registered); in registered_show()
1470 return sprintf(buf, "%s\n", (char *)__va(fw_dump.param_area)); in bootargs_append_show()
1479 if (!fw_dump.fadump_enabled || fw_dump.dump_active) in bootargs_append_store()
1494 params = __va(fw_dump.param_area); in bootargs_append_store()
1510 if (!fw_dump.fadump_enabled || fw_dump.dump_active) in registered_store()
1520 if (fw_dump.dump_registered == 0) { in registered_store()
1526 fw_dump.ops->fadump_unregister(&fw_dump); in registered_store()
1529 if (fw_dump.dump_registered == 1) { in registered_store()
1531 fw_dump.ops->fadump_unregister(&fw_dump); in registered_store()
1548 if (!fw_dump.fadump_enabled) in fadump_region_show()
1552 fw_dump.ops->fadump_region_show(&fw_dump, m); in fadump_region_show()
1586 if (fw_dump.param_area) { in fadump_init_files()
1595 if (fw_dump.dump_active) { in fadump_init_files()
1634 if (fw_dump.dump_active) { in fadump_init_files()
1656 elf_phdr_cnt = 2 + fw_dump.boot_mem_regs_cnt + memblock_num_regions(memory); in fadump_setup_elfcorehdr_buf()
1660 fw_dump.elfcorehdr_addr = (u64)fadump_alloc_buffer(elfcorehdr_size); in fadump_setup_elfcorehdr_buf()
1661 if (!fw_dump.elfcorehdr_addr) { in fadump_setup_elfcorehdr_buf()
1666 fw_dump.elfcorehdr_size = elfcorehdr_size; in fadump_setup_elfcorehdr_buf()
1709 fdh = (struct fadump_crash_info_header *) __va(fw_dump.fadumphdr_addr); in fadump_process()
1726 if (fw_dump.ops->fadump_process(&fw_dump) < 0) in fadump_process()
1735 elfcorehdr_addr = virt_to_phys((void *)fw_dump.elfcorehdr_addr); in fadump_process()
1750 if (!fw_dump.param_area_supported || fw_dump.dump_active) in fadump_setup_param_area()
1775 range_end = min(ppc64_rma_size, fw_dump.boot_mem_top); in fadump_setup_param_area()
1778 fw_dump.param_area = memblock_phys_alloc_range(COMMAND_LINE_SIZE, in fadump_setup_param_area()
1782 if (!fw_dump.param_area) { in fadump_setup_param_area()
1787 memset((void *)fw_dump.param_area, 0, COMMAND_LINE_SIZE); in fadump_setup_param_area()
1795 if (!fw_dump.fadump_supported) in setup_fadump()
1801 if (!fw_dump.fadump_enabled) in setup_fadump()
1808 if (fw_dump.dump_active) { in setup_fadump()
1812 else if (fw_dump.reserve_dump_area_size) { in setup_fadump()
1813 fw_dump.ops->fadump_init_mem_struct(&fw_dump); in setup_fadump()
1842 opal_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
1853 if (fw_dump.dump_active) { in fadump_reserve_mem()
1859 fadump_reserve_crash_area(fw_dump.boot_mem_top); in fadump_reserve_mem()