Lines Matching refs:fw_dump
45 static struct fw_dump fw_dump; variable
88 if (!fw_dump.fadump_enabled) in fadump_cma_init()
95 if (fw_dump.nocma) in fadump_cma_init()
98 base = fw_dump.reserve_dump_area_start; in fadump_cma_init()
99 size = fw_dump.boot_memory_size; in fadump_cma_init()
129 fw_dump.reserve_dump_area_size); in fadump_cma_init()
149 rtas_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
154 opal_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
169 if (!fw_dump.dump_registered) in is_fadump_memory_area()
175 d_start = fw_dump.reserve_dump_area_start; in is_fadump_memory_area()
176 d_end = d_start + fw_dump.reserve_dump_area_size; in is_fadump_memory_area()
180 return (addr <= fw_dump.boot_mem_top); in is_fadump_memory_area()
185 if (!fw_dump.dump_registered || !fw_dump.fadumphdr_addr) in should_fadump_crash()
192 return fw_dump.dump_active; in is_fadump_active()
235 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in is_fadump_boot_mem_contiguous()
236 d_start = fw_dump.boot_mem_addr[i]; in is_fadump_boot_mem_contiguous()
237 d_end = d_start + fw_dump.boot_mem_sz[i]; in is_fadump_boot_mem_contiguous()
255 d_start = fw_dump.reserve_dump_area_start; in is_fadump_reserved_mem_contiguous()
256 d_end = d_start + fw_dump.reserve_dump_area_size; in is_fadump_reserved_mem_contiguous()
266 (fw_dump.fadump_supported ? "present" : "no support")); in fadump_show_config()
268 if (!fw_dump.fadump_supported) in fadump_show_config()
272 (fw_dump.fadump_enabled ? "yes" : "no")); in fadump_show_config()
274 (fw_dump.dump_active ? "yes" : "no")); in fadump_show_config()
276 pr_debug(" CPU state data size: %lx\n", fw_dump.cpu_state_data_size); in fadump_show_config()
277 pr_debug(" HPTE region size : %lx\n", fw_dump.hpte_region_size); in fadump_show_config()
278 pr_debug(" Boot memory size : %lx\n", fw_dump.boot_memory_size); in fadump_show_config()
279 pr_debug(" Boot memory top : %llx\n", fw_dump.boot_mem_top); in fadump_show_config()
280 pr_debug("Boot memory regions cnt: %llx\n", fw_dump.boot_mem_regs_cnt); in fadump_show_config()
281 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_show_config()
283 fw_dump.boot_mem_addr[i], fw_dump.boot_mem_sz[i]); in fadump_show_config()
307 if (fw_dump.reserve_bootvar) in fadump_calculate_reserve_size()
320 if (fw_dump.reserve_bootvar) in fadump_calculate_reserve_size()
323 fw_dump.reserve_bootvar = (unsigned long)size; in fadump_calculate_reserve_size()
330 if (fw_dump.reserve_bootvar > max_size) { in fadump_calculate_reserve_size()
331 fw_dump.reserve_bootvar = max_size; in fadump_calculate_reserve_size()
333 (fw_dump.reserve_bootvar >> 20)); in fadump_calculate_reserve_size()
336 return fw_dump.reserve_bootvar; in fadump_calculate_reserve_size()
337 } else if (fw_dump.reserve_bootvar) { in fadump_calculate_reserve_size()
342 return fw_dump.reserve_bootvar; in fadump_calculate_reserve_size()
355 bootmem_min = fw_dump.ops->fadump_get_bootmem_min(); in fadump_calculate_reserve_size()
367 size += fw_dump.cpu_state_data_size; in get_fadump_area_size()
368 size += fw_dump.hpte_region_size; in get_fadump_area_size()
374 size += fw_dump.boot_memory_size; in get_fadump_area_size()
384 size += (fw_dump.ops->fadump_get_metadata_size ? in get_fadump_area_size()
385 fw_dump.ops->fadump_get_metadata_size() : 0); in get_fadump_area_size()
392 int i = fw_dump.boot_mem_regs_cnt++; in add_boot_mem_region()
394 if (fw_dump.boot_mem_regs_cnt > FADUMP_MAX_MEM_REGS) { in add_boot_mem_region()
395 fw_dump.boot_mem_regs_cnt = FADUMP_MAX_MEM_REGS; in add_boot_mem_region()
401 fw_dump.boot_mem_addr[i] = rstart; in add_boot_mem_region()
402 fw_dump.boot_mem_sz[i] = rsize; in add_boot_mem_region()
417 max_size = fw_dump.max_copy_size ? fw_dump.max_copy_size : msize; in add_boot_mem_regions()
438 unsigned long mem_size = fw_dump.boot_memory_size; in fadump_get_boot_mem_regions()
443 fw_dump.boot_mem_regs_cnt = 0; in fadump_get_boot_mem_regions()
466 fw_dump.boot_mem_top = PAGE_ALIGN(fw_dump.boot_memory_size + hole_size); in fadump_get_boot_mem_regions()
539 if (!fw_dump.fadump_enabled) in fadump_reserve_mem()
542 if (!fw_dump.fadump_supported) { in fadump_reserve_mem()
552 if (!fw_dump.dump_active) { in fadump_reserve_mem()
553 fw_dump.boot_memory_size = in fadump_reserve_mem()
556 if (!fw_dump.nocma) { in fadump_reserve_mem()
557 fw_dump.boot_memory_size = in fadump_reserve_mem()
558 ALIGN(fw_dump.boot_memory_size, in fadump_reserve_mem()
563 bootmem_min = fw_dump.ops->fadump_get_bootmem_min(); in fadump_reserve_mem()
564 if (fw_dump.boot_memory_size < bootmem_min) { in fadump_reserve_mem()
566 fw_dump.boot_memory_size, bootmem_min); in fadump_reserve_mem()
597 base = fw_dump.boot_mem_top; in fadump_reserve_mem()
599 fw_dump.reserve_dump_area_size = size; in fadump_reserve_mem()
600 if (fw_dump.dump_active) { in fadump_reserve_mem()
619 pr_debug("fadumphdr_addr = %#016lx\n", fw_dump.fadumphdr_addr); in fadump_reserve_mem()
621 fw_dump.reserve_dump_area_start); in fadump_reserve_mem()
633 fw_dump.reserve_dump_area_start = base; in fadump_reserve_mem()
639 if (fw_dump.ops->fadump_setup_metadata && in fadump_reserve_mem()
640 (fw_dump.ops->fadump_setup_metadata(&fw_dump) < 0)) in fadump_reserve_mem()
656 fw_dump.fadump_enabled = 0; in fadump_reserve_mem()
667 fw_dump.fadump_enabled = 1; in early_fadump_param()
669 fw_dump.fadump_enabled = 0; in early_fadump_param()
671 fw_dump.fadump_enabled = 1; in early_fadump_param()
672 fw_dump.nocma = 1; in early_fadump_param()
687 fw_dump.reserve_bootvar = memparse(p, &p); in early_fadump_reserve_mem()
723 while (fw_dump.dump_registered) in crash_fadump()
728 fdh = __va(fw_dump.fadumphdr_addr); in crash_fadump()
749 fw_dump.ops->fadump_trigger(fdh, str); in crash_fadump()
777 phdr->p_paddr = __pa(fw_dump.cpu_notes_buf_vaddr); in fadump_update_elfcore_header()
779 phdr->p_filesz = fw_dump.cpu_notes_buf_size; in fadump_update_elfcore_header()
780 phdr->p_memsz = fw_dump.cpu_notes_buf_size; in fadump_update_elfcore_header()
810 fw_dump.cpu_notes_buf_size = num_cpus * sizeof(note_buf_t); in fadump_setup_cpu_notes_buf()
811 fw_dump.cpu_notes_buf_size = PAGE_ALIGN(fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
812 fw_dump.cpu_notes_buf_vaddr = in fadump_setup_cpu_notes_buf()
813 (unsigned long)fadump_alloc_buffer(fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
814 if (!fw_dump.cpu_notes_buf_vaddr) { in fadump_setup_cpu_notes_buf()
816 fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
821 fw_dump.cpu_notes_buf_size, in fadump_setup_cpu_notes_buf()
822 fw_dump.cpu_notes_buf_vaddr); in fadump_setup_cpu_notes_buf()
828 if (!fw_dump.cpu_notes_buf_vaddr) in fadump_free_cpu_notes_buf()
831 fadump_free_buffer(fw_dump.cpu_notes_buf_vaddr, in fadump_free_cpu_notes_buf()
832 fw_dump.cpu_notes_buf_size); in fadump_free_cpu_notes_buf()
833 fw_dump.cpu_notes_buf_vaddr = 0; in fadump_free_cpu_notes_buf()
834 fw_dump.cpu_notes_buf_size = 0; in fadump_free_cpu_notes_buf()
899 if ((start + size) == base && start >= fw_dump.boot_mem_top) in fadump_add_mem_range()
938 ra_start = fw_dump.reserve_dump_area_start; in fadump_exclude_reserved_area()
939 ra_end = ra_start + fw_dump.reserve_dump_area_size; in fadump_exclude_reserved_area()
1016 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_setup_crash_memory_ranges()
1017 start = fw_dump.boot_mem_addr[i]; in fadump_setup_crash_memory_ranges()
1018 end = start + fw_dump.boot_mem_sz[i]; in fadump_setup_crash_memory_ranges()
1029 if (start < fw_dump.boot_mem_top) { in fadump_setup_crash_memory_ranges()
1030 if (end > fw_dump.boot_mem_top) in fadump_setup_crash_memory_ranges()
1031 start = fw_dump.boot_mem_top; in fadump_setup_crash_memory_ranges()
1058 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_relocate()
1059 rstart = fw_dump.boot_mem_addr[i]; in fadump_relocate()
1060 rend = rstart + fw_dump.boot_mem_sz[i]; in fadump_relocate()
1064 raddr += fw_dump.boot_mem_dest_addr - hole_size; in fadump_relocate()
1125 raddr = fw_dump.boot_mem_addr[0]; in fadump_create_elfcore_headers()
1146 phdr->p_offset = fw_dump.boot_mem_dest_addr + offset; in fadump_create_elfcore_headers()
1147 if (j < (fw_dump.boot_mem_regs_cnt - 1)) { in fadump_create_elfcore_headers()
1148 offset += fw_dump.boot_mem_sz[j]; in fadump_create_elfcore_headers()
1149 raddr = fw_dump.boot_mem_addr[++j]; in fadump_create_elfcore_headers()
1199 if (!fw_dump.reserve_dump_area_size) in register_fadump()
1206 addr = fw_dump.fadumphdr_addr; in register_fadump()
1217 return fw_dump.ops->fadump_register(&fw_dump); in register_fadump()
1222 if (!fw_dump.fadump_supported) in fadump_cleanup()
1226 if (fw_dump.dump_active) { in fadump_cleanup()
1228 fw_dump.ops->fadump_invalidate(&fw_dump); in fadump_cleanup()
1229 } else if (fw_dump.dump_registered) { in fadump_cleanup()
1231 fw_dump.ops->fadump_unregister(&fw_dump); in fadump_cleanup()
1235 if (fw_dump.ops->fadump_cleanup) in fadump_cleanup()
1236 fw_dump.ops->fadump_cleanup(&fw_dump); in fadump_cleanup()
1381 ra_start = fw_dump.reserve_dump_area_start; in fadump_release_memory()
1382 ra_end = ra_start + fw_dump.reserve_dump_area_size; in fadump_release_memory()
1421 if (!fw_dump.dump_active) { in fadump_invalidate_release_mem()
1429 fadump_release_memory(fw_dump.boot_mem_top, memblock_end_of_DRAM()); in fadump_invalidate_release_mem()
1436 if (fw_dump.ops->fadump_setup_metadata && in fadump_invalidate_release_mem()
1437 (fw_dump.ops->fadump_setup_metadata(&fw_dump) < 0)) in fadump_invalidate_release_mem()
1439 fw_dump.ops->fadump_init_mem_struct(&fw_dump); in fadump_invalidate_release_mem()
1448 if (!fw_dump.dump_active) in release_mem_store()
1473 fadump_release_memory(fw_dump.reserve_dump_area_start, in unregister_fadump()
1474 fw_dump.reserve_dump_area_size); in unregister_fadump()
1475 fw_dump.fadump_enabled = 0; in unregister_fadump()
1483 return sprintf(buf, "%d\n", fw_dump.fadump_enabled); in enabled_show()
1490 return sprintf(buf, "%ld\n", fw_dump.reserve_dump_area_size); in mem_reserved_show()
1497 return sprintf(buf, "%d\n", fw_dump.dump_registered); in registered_show()
1507 if (!fw_dump.fadump_enabled || fw_dump.dump_active) in registered_store()
1517 if (fw_dump.dump_registered == 0) { in registered_store()
1523 fw_dump.ops->fadump_unregister(&fw_dump); in registered_store()
1526 if (fw_dump.dump_registered == 1) { in registered_store()
1528 fw_dump.ops->fadump_unregister(&fw_dump); in registered_store()
1545 if (!fw_dump.fadump_enabled) in fadump_region_show()
1549 fw_dump.ops->fadump_region_show(&fw_dump, m); in fadump_region_show()
1583 if (fw_dump.dump_active) { in fadump_init_files()
1622 if (fw_dump.dump_active) { in fadump_init_files()
1639 if (!fw_dump.fadump_supported) in setup_fadump()
1645 if (!fw_dump.fadump_enabled) in setup_fadump()
1652 if (fw_dump.dump_active) { in setup_fadump()
1657 if (fw_dump.ops->fadump_process(&fw_dump) < 0) in setup_fadump()
1661 else if (fw_dump.reserve_dump_area_size) { in setup_fadump()
1662 fw_dump.ops->fadump_init_mem_struct(&fw_dump); in setup_fadump()
1691 opal_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
1702 if (fw_dump.dump_active) { in fadump_reserve_mem()
1708 fadump_reserve_crash_area(fw_dump.boot_mem_top); in fadump_reserve_mem()