Lines Matching refs:fw_dump

35 static struct fw_dump fw_dump;  variable
65 if (!fw_dump.fadump_enabled) in fadump_cma_init()
72 if (fw_dump.nocma) in fadump_cma_init()
75 base = fw_dump.reserve_dump_area_start; in fadump_cma_init()
76 size = fw_dump.boot_memory_size; in fadump_cma_init()
100 fw_dump.reserve_dump_area_size); in fadump_cma_init()
115 rtas_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
120 opal_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
135 if (!fw_dump.dump_registered) in is_fadump_memory_area()
141 d_start = fw_dump.reserve_dump_area_start; in is_fadump_memory_area()
142 d_end = d_start + fw_dump.reserve_dump_area_size; in is_fadump_memory_area()
146 return (addr <= fw_dump.boot_mem_top); in is_fadump_memory_area()
151 if (!fw_dump.dump_registered || !fw_dump.fadumphdr_addr) in should_fadump_crash()
158 return fw_dump.dump_active; in is_fadump_active()
201 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in is_fadump_boot_mem_contiguous()
202 d_start = fw_dump.boot_mem_addr[i]; in is_fadump_boot_mem_contiguous()
203 d_end = d_start + fw_dump.boot_mem_sz[i]; in is_fadump_boot_mem_contiguous()
221 d_start = fw_dump.reserve_dump_area_start; in is_fadump_reserved_mem_contiguous()
222 d_end = d_start + fw_dump.reserve_dump_area_size; in is_fadump_reserved_mem_contiguous()
232 (fw_dump.fadump_supported ? "present" : "no support")); in fadump_show_config()
234 if (!fw_dump.fadump_supported) in fadump_show_config()
238 (fw_dump.fadump_enabled ? "yes" : "no")); in fadump_show_config()
240 (fw_dump.dump_active ? "yes" : "no")); in fadump_show_config()
242 pr_debug(" CPU state data size: %lx\n", fw_dump.cpu_state_data_size); in fadump_show_config()
243 pr_debug(" HPTE region size : %lx\n", fw_dump.hpte_region_size); in fadump_show_config()
244 pr_debug(" Boot memory size : %lx\n", fw_dump.boot_memory_size); in fadump_show_config()
245 pr_debug(" Boot memory top : %llx\n", fw_dump.boot_mem_top); in fadump_show_config()
246 pr_debug("Boot memory regions cnt: %llx\n", fw_dump.boot_mem_regs_cnt); in fadump_show_config()
247 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_show_config()
249 fw_dump.boot_mem_addr[i], fw_dump.boot_mem_sz[i]); in fadump_show_config()
273 if (fw_dump.reserve_bootvar) in fadump_calculate_reserve_size()
286 if (fw_dump.reserve_bootvar) in fadump_calculate_reserve_size()
289 fw_dump.reserve_bootvar = (unsigned long)size; in fadump_calculate_reserve_size()
296 if (fw_dump.reserve_bootvar > max_size) { in fadump_calculate_reserve_size()
297 fw_dump.reserve_bootvar = max_size; in fadump_calculate_reserve_size()
299 (fw_dump.reserve_bootvar >> 20)); in fadump_calculate_reserve_size()
302 return fw_dump.reserve_bootvar; in fadump_calculate_reserve_size()
303 } else if (fw_dump.reserve_bootvar) { in fadump_calculate_reserve_size()
308 return fw_dump.reserve_bootvar; in fadump_calculate_reserve_size()
321 bootmem_min = fw_dump.ops->fadump_get_bootmem_min(); in fadump_calculate_reserve_size()
333 size += fw_dump.cpu_state_data_size; in get_fadump_area_size()
334 size += fw_dump.hpte_region_size; in get_fadump_area_size()
335 size += fw_dump.boot_memory_size; in get_fadump_area_size()
345 size += (fw_dump.ops->fadump_get_metadata_size ? in get_fadump_area_size()
346 fw_dump.ops->fadump_get_metadata_size() : 0); in get_fadump_area_size()
353 int i = fw_dump.boot_mem_regs_cnt++; in add_boot_mem_region()
355 if (fw_dump.boot_mem_regs_cnt > FADUMP_MAX_MEM_REGS) { in add_boot_mem_region()
356 fw_dump.boot_mem_regs_cnt = FADUMP_MAX_MEM_REGS; in add_boot_mem_region()
362 fw_dump.boot_mem_addr[i] = rstart; in add_boot_mem_region()
363 fw_dump.boot_mem_sz[i] = rsize; in add_boot_mem_region()
378 max_size = fw_dump.max_copy_size ? fw_dump.max_copy_size : msize; in add_boot_mem_regions()
399 unsigned long mem_size = fw_dump.boot_memory_size; in fadump_get_boot_mem_regions()
403 fw_dump.boot_mem_regs_cnt = 0; in fadump_get_boot_mem_regions()
427 fw_dump.boot_mem_top = PAGE_ALIGN(fw_dump.boot_memory_size + hole_size); in fadump_get_boot_mem_regions()
438 if (!fw_dump.fadump_enabled) in fadump_reserve_mem()
441 if (!fw_dump.fadump_supported) { in fadump_reserve_mem()
451 if (!fw_dump.dump_active) { in fadump_reserve_mem()
452 fw_dump.boot_memory_size = in fadump_reserve_mem()
455 if (!fw_dump.nocma) { in fadump_reserve_mem()
457 fw_dump.boot_memory_size = in fadump_reserve_mem()
458 ALIGN(fw_dump.boot_memory_size, align); in fadump_reserve_mem()
462 bootmem_min = fw_dump.ops->fadump_get_bootmem_min(); in fadump_reserve_mem()
463 if (fw_dump.boot_memory_size < bootmem_min) { in fadump_reserve_mem()
465 fw_dump.boot_memory_size, bootmem_min); in fadump_reserve_mem()
496 base = fw_dump.boot_mem_top; in fadump_reserve_mem()
498 fw_dump.reserve_dump_area_size = size; in fadump_reserve_mem()
499 if (fw_dump.dump_active) { in fadump_reserve_mem()
518 pr_debug("fadumphdr_addr = %#016lx\n", fw_dump.fadumphdr_addr); in fadump_reserve_mem()
520 fw_dump.reserve_dump_area_start); in fadump_reserve_mem()
536 fw_dump.reserve_dump_area_start = base; in fadump_reserve_mem()
542 if (fw_dump.ops->fadump_setup_metadata && in fadump_reserve_mem()
543 (fw_dump.ops->fadump_setup_metadata(&fw_dump) < 0)) in fadump_reserve_mem()
559 fw_dump.fadump_enabled = 0; in fadump_reserve_mem()
570 fw_dump.fadump_enabled = 1; in early_fadump_param()
572 fw_dump.fadump_enabled = 0; in early_fadump_param()
574 fw_dump.fadump_enabled = 1; in early_fadump_param()
575 fw_dump.nocma = 1; in early_fadump_param()
590 fw_dump.reserve_bootvar = memparse(p, &p); in early_fadump_reserve_mem()
621 while (fw_dump.dump_registered) in crash_fadump()
626 fdh = __va(fw_dump.fadumphdr_addr); in crash_fadump()
637 fw_dump.ops->fadump_trigger(fdh, str); in crash_fadump()
667 phdr->p_paddr = __pa(fw_dump.cpu_notes_buf_vaddr); in fadump_update_elfcore_header()
669 phdr->p_filesz = fw_dump.cpu_notes_buf_size; in fadump_update_elfcore_header()
670 phdr->p_memsz = fw_dump.cpu_notes_buf_size; in fadump_update_elfcore_header()
700 fw_dump.cpu_notes_buf_size = num_cpus * sizeof(note_buf_t); in fadump_setup_cpu_notes_buf()
701 fw_dump.cpu_notes_buf_size = PAGE_ALIGN(fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
702 fw_dump.cpu_notes_buf_vaddr = in fadump_setup_cpu_notes_buf()
703 (unsigned long)fadump_alloc_buffer(fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
704 if (!fw_dump.cpu_notes_buf_vaddr) { in fadump_setup_cpu_notes_buf()
706 fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
711 fw_dump.cpu_notes_buf_size, in fadump_setup_cpu_notes_buf()
712 fw_dump.cpu_notes_buf_vaddr); in fadump_setup_cpu_notes_buf()
718 if (!fw_dump.cpu_notes_buf_vaddr) in fadump_free_cpu_notes_buf()
721 fadump_free_buffer(fw_dump.cpu_notes_buf_vaddr, in fadump_free_cpu_notes_buf()
722 fw_dump.cpu_notes_buf_size); in fadump_free_cpu_notes_buf()
723 fw_dump.cpu_notes_buf_vaddr = 0; in fadump_free_cpu_notes_buf()
724 fw_dump.cpu_notes_buf_size = 0; in fadump_free_cpu_notes_buf()
814 ra_start = fw_dump.reserve_dump_area_start; in fadump_exclude_reserved_area()
815 ra_end = ra_start + fw_dump.reserve_dump_area_size; in fadump_exclude_reserved_area()
890 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_setup_crash_memory_ranges()
891 start = fw_dump.boot_mem_addr[i]; in fadump_setup_crash_memory_ranges()
892 end = start + fw_dump.boot_mem_sz[i]; in fadump_setup_crash_memory_ranges()
906 if (start < fw_dump.boot_mem_top) { in fadump_setup_crash_memory_ranges()
907 if (end > fw_dump.boot_mem_top) in fadump_setup_crash_memory_ranges()
908 start = fw_dump.boot_mem_top; in fadump_setup_crash_memory_ranges()
935 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_relocate()
936 rstart = fw_dump.boot_mem_addr[i]; in fadump_relocate()
937 rend = rstart + fw_dump.boot_mem_sz[i]; in fadump_relocate()
941 raddr += fw_dump.boot_mem_dest_addr - hole_size; in fadump_relocate()
1002 raddr = fw_dump.boot_mem_addr[0]; in fadump_create_elfcore_headers()
1023 phdr->p_offset = fw_dump.boot_mem_dest_addr + offset; in fadump_create_elfcore_headers()
1024 if (j < (fw_dump.boot_mem_regs_cnt - 1)) { in fadump_create_elfcore_headers()
1025 offset += fw_dump.boot_mem_sz[j]; in fadump_create_elfcore_headers()
1026 raddr = fw_dump.boot_mem_addr[++j]; in fadump_create_elfcore_headers()
1071 if (!fw_dump.reserve_dump_area_size) in register_fadump()
1078 addr = fw_dump.fadumphdr_addr; in register_fadump()
1089 return fw_dump.ops->fadump_register(&fw_dump); in register_fadump()
1094 if (!fw_dump.fadump_supported) in fadump_cleanup()
1098 if (fw_dump.dump_active) { in fadump_cleanup()
1100 fw_dump.ops->fadump_invalidate(&fw_dump); in fadump_cleanup()
1101 } else if (fw_dump.dump_registered) { in fadump_cleanup()
1103 fw_dump.ops->fadump_unregister(&fw_dump); in fadump_cleanup()
1107 if (fw_dump.ops->fadump_cleanup) in fadump_cleanup()
1108 fw_dump.ops->fadump_cleanup(&fw_dump); in fadump_cleanup()
1256 ra_start = fw_dump.reserve_dump_area_start; in fadump_release_memory()
1257 ra_end = ra_start + fw_dump.reserve_dump_area_size; in fadump_release_memory()
1305 if (!fw_dump.dump_active) { in fadump_invalidate_release_mem()
1313 fadump_release_memory(fw_dump.boot_mem_top, memblock_end_of_DRAM()); in fadump_invalidate_release_mem()
1320 if (fw_dump.ops->fadump_setup_metadata && in fadump_invalidate_release_mem()
1321 (fw_dump.ops->fadump_setup_metadata(&fw_dump) < 0)) in fadump_invalidate_release_mem()
1323 fw_dump.ops->fadump_init_mem_struct(&fw_dump); in fadump_invalidate_release_mem()
1332 if (!fw_dump.dump_active) in fadump_release_memory_store()
1357 return sprintf(buf, "%d\n", fw_dump.fadump_enabled); in fadump_enabled_show()
1364 return sprintf(buf, "%d\n", fw_dump.dump_registered); in fadump_register_show()
1374 if (!fw_dump.fadump_enabled || fw_dump.dump_active) in fadump_register_store()
1384 if (fw_dump.dump_registered == 0) { in fadump_register_store()
1390 fw_dump.ops->fadump_unregister(&fw_dump); in fadump_register_store()
1393 if (fw_dump.dump_registered == 1) { in fadump_register_store()
1395 fw_dump.ops->fadump_unregister(&fw_dump); in fadump_register_store()
1412 if (!fw_dump.fadump_enabled) in fadump_region_show()
1416 fw_dump.ops->fadump_region_show(&fw_dump, m); in fadump_region_show()
1455 if (fw_dump.dump_active) { in fadump_init_files()
1469 if (!fw_dump.fadump_enabled) in setup_fadump()
1472 if (!fw_dump.fadump_supported) { in setup_fadump()
1483 if (fw_dump.dump_active) { in setup_fadump()
1488 if (fw_dump.ops->fadump_process(&fw_dump) < 0) in setup_fadump()
1492 else if (fw_dump.reserve_dump_area_size) in setup_fadump()
1493 fw_dump.ops->fadump_init_mem_struct(&fw_dump); in setup_fadump()
1509 opal_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
1520 if (fw_dump.dump_active) { in fadump_reserve_mem()
1526 fadump_reserve_crash_area(fw_dump.boot_mem_top); in fadump_reserve_mem()