Lines Matching refs:fw_dump

44 static struct fw_dump fw_dump;  variable
87 if (!fw_dump.fadump_enabled) in fadump_cma_init()
94 if (fw_dump.nocma) in fadump_cma_init()
97 base = fw_dump.reserve_dump_area_start; in fadump_cma_init()
98 size = fw_dump.boot_memory_size; in fadump_cma_init()
122 fw_dump.reserve_dump_area_size); in fadump_cma_init()
142 rtas_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
147 opal_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
162 if (!fw_dump.dump_registered) in is_fadump_memory_area()
168 d_start = fw_dump.reserve_dump_area_start; in is_fadump_memory_area()
169 d_end = d_start + fw_dump.reserve_dump_area_size; in is_fadump_memory_area()
173 return (addr <= fw_dump.boot_mem_top); in is_fadump_memory_area()
178 if (!fw_dump.dump_registered || !fw_dump.fadumphdr_addr) in should_fadump_crash()
185 return fw_dump.dump_active; in is_fadump_active()
228 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in is_fadump_boot_mem_contiguous()
229 d_start = fw_dump.boot_mem_addr[i]; in is_fadump_boot_mem_contiguous()
230 d_end = d_start + fw_dump.boot_mem_sz[i]; in is_fadump_boot_mem_contiguous()
248 d_start = fw_dump.reserve_dump_area_start; in is_fadump_reserved_mem_contiguous()
249 d_end = d_start + fw_dump.reserve_dump_area_size; in is_fadump_reserved_mem_contiguous()
259 (fw_dump.fadump_supported ? "present" : "no support")); in fadump_show_config()
261 if (!fw_dump.fadump_supported) in fadump_show_config()
265 (fw_dump.fadump_enabled ? "yes" : "no")); in fadump_show_config()
267 (fw_dump.dump_active ? "yes" : "no")); in fadump_show_config()
269 pr_debug(" CPU state data size: %lx\n", fw_dump.cpu_state_data_size); in fadump_show_config()
270 pr_debug(" HPTE region size : %lx\n", fw_dump.hpte_region_size); in fadump_show_config()
271 pr_debug(" Boot memory size : %lx\n", fw_dump.boot_memory_size); in fadump_show_config()
272 pr_debug(" Boot memory top : %llx\n", fw_dump.boot_mem_top); in fadump_show_config()
273 pr_debug("Boot memory regions cnt: %llx\n", fw_dump.boot_mem_regs_cnt); in fadump_show_config()
274 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_show_config()
276 fw_dump.boot_mem_addr[i], fw_dump.boot_mem_sz[i]); in fadump_show_config()
300 if (fw_dump.reserve_bootvar) in fadump_calculate_reserve_size()
313 if (fw_dump.reserve_bootvar) in fadump_calculate_reserve_size()
316 fw_dump.reserve_bootvar = (unsigned long)size; in fadump_calculate_reserve_size()
323 if (fw_dump.reserve_bootvar > max_size) { in fadump_calculate_reserve_size()
324 fw_dump.reserve_bootvar = max_size; in fadump_calculate_reserve_size()
326 (fw_dump.reserve_bootvar >> 20)); in fadump_calculate_reserve_size()
329 return fw_dump.reserve_bootvar; in fadump_calculate_reserve_size()
330 } else if (fw_dump.reserve_bootvar) { in fadump_calculate_reserve_size()
335 return fw_dump.reserve_bootvar; in fadump_calculate_reserve_size()
348 bootmem_min = fw_dump.ops->fadump_get_bootmem_min(); in fadump_calculate_reserve_size()
360 size += fw_dump.cpu_state_data_size; in get_fadump_area_size()
361 size += fw_dump.hpte_region_size; in get_fadump_area_size()
362 size += fw_dump.boot_memory_size; in get_fadump_area_size()
372 size += (fw_dump.ops->fadump_get_metadata_size ? in get_fadump_area_size()
373 fw_dump.ops->fadump_get_metadata_size() : 0); in get_fadump_area_size()
380 int i = fw_dump.boot_mem_regs_cnt++; in add_boot_mem_region()
382 if (fw_dump.boot_mem_regs_cnt > FADUMP_MAX_MEM_REGS) { in add_boot_mem_region()
383 fw_dump.boot_mem_regs_cnt = FADUMP_MAX_MEM_REGS; in add_boot_mem_region()
389 fw_dump.boot_mem_addr[i] = rstart; in add_boot_mem_region()
390 fw_dump.boot_mem_sz[i] = rsize; in add_boot_mem_region()
405 max_size = fw_dump.max_copy_size ? fw_dump.max_copy_size : msize; in add_boot_mem_regions()
426 unsigned long mem_size = fw_dump.boot_memory_size; in fadump_get_boot_mem_regions()
431 fw_dump.boot_mem_regs_cnt = 0; in fadump_get_boot_mem_regions()
454 fw_dump.boot_mem_top = PAGE_ALIGN(fw_dump.boot_memory_size + hole_size); in fadump_get_boot_mem_regions()
527 if (!fw_dump.fadump_enabled) in fadump_reserve_mem()
530 if (!fw_dump.fadump_supported) { in fadump_reserve_mem()
540 if (!fw_dump.dump_active) { in fadump_reserve_mem()
541 fw_dump.boot_memory_size = in fadump_reserve_mem()
544 if (!fw_dump.nocma) { in fadump_reserve_mem()
545 fw_dump.boot_memory_size = in fadump_reserve_mem()
546 ALIGN(fw_dump.boot_memory_size, in fadump_reserve_mem()
551 bootmem_min = fw_dump.ops->fadump_get_bootmem_min(); in fadump_reserve_mem()
552 if (fw_dump.boot_memory_size < bootmem_min) { in fadump_reserve_mem()
554 fw_dump.boot_memory_size, bootmem_min); in fadump_reserve_mem()
585 base = fw_dump.boot_mem_top; in fadump_reserve_mem()
587 fw_dump.reserve_dump_area_size = size; in fadump_reserve_mem()
588 if (fw_dump.dump_active) { in fadump_reserve_mem()
607 pr_debug("fadumphdr_addr = %#016lx\n", fw_dump.fadumphdr_addr); in fadump_reserve_mem()
609 fw_dump.reserve_dump_area_start); in fadump_reserve_mem()
621 fw_dump.reserve_dump_area_start = base; in fadump_reserve_mem()
627 if (fw_dump.ops->fadump_setup_metadata && in fadump_reserve_mem()
628 (fw_dump.ops->fadump_setup_metadata(&fw_dump) < 0)) in fadump_reserve_mem()
644 fw_dump.fadump_enabled = 0; in fadump_reserve_mem()
655 fw_dump.fadump_enabled = 1; in early_fadump_param()
657 fw_dump.fadump_enabled = 0; in early_fadump_param()
659 fw_dump.fadump_enabled = 1; in early_fadump_param()
660 fw_dump.nocma = 1; in early_fadump_param()
675 fw_dump.reserve_bootvar = memparse(p, &p); in early_fadump_reserve_mem()
711 while (fw_dump.dump_registered) in crash_fadump()
716 fdh = __va(fw_dump.fadumphdr_addr); in crash_fadump()
737 fw_dump.ops->fadump_trigger(fdh, str); in crash_fadump()
765 phdr->p_paddr = __pa(fw_dump.cpu_notes_buf_vaddr); in fadump_update_elfcore_header()
767 phdr->p_filesz = fw_dump.cpu_notes_buf_size; in fadump_update_elfcore_header()
768 phdr->p_memsz = fw_dump.cpu_notes_buf_size; in fadump_update_elfcore_header()
798 fw_dump.cpu_notes_buf_size = num_cpus * sizeof(note_buf_t); in fadump_setup_cpu_notes_buf()
799 fw_dump.cpu_notes_buf_size = PAGE_ALIGN(fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
800 fw_dump.cpu_notes_buf_vaddr = in fadump_setup_cpu_notes_buf()
801 (unsigned long)fadump_alloc_buffer(fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
802 if (!fw_dump.cpu_notes_buf_vaddr) { in fadump_setup_cpu_notes_buf()
804 fw_dump.cpu_notes_buf_size); in fadump_setup_cpu_notes_buf()
809 fw_dump.cpu_notes_buf_size, in fadump_setup_cpu_notes_buf()
810 fw_dump.cpu_notes_buf_vaddr); in fadump_setup_cpu_notes_buf()
816 if (!fw_dump.cpu_notes_buf_vaddr) in fadump_free_cpu_notes_buf()
819 fadump_free_buffer(fw_dump.cpu_notes_buf_vaddr, in fadump_free_cpu_notes_buf()
820 fw_dump.cpu_notes_buf_size); in fadump_free_cpu_notes_buf()
821 fw_dump.cpu_notes_buf_vaddr = 0; in fadump_free_cpu_notes_buf()
822 fw_dump.cpu_notes_buf_size = 0; in fadump_free_cpu_notes_buf()
922 ra_start = fw_dump.reserve_dump_area_start; in fadump_exclude_reserved_area()
923 ra_end = ra_start + fw_dump.reserve_dump_area_size; in fadump_exclude_reserved_area()
997 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_setup_crash_memory_ranges()
998 start = fw_dump.boot_mem_addr[i]; in fadump_setup_crash_memory_ranges()
999 end = start + fw_dump.boot_mem_sz[i]; in fadump_setup_crash_memory_ranges()
1010 if (start < fw_dump.boot_mem_top) { in fadump_setup_crash_memory_ranges()
1011 if (end > fw_dump.boot_mem_top) in fadump_setup_crash_memory_ranges()
1012 start = fw_dump.boot_mem_top; in fadump_setup_crash_memory_ranges()
1039 for (i = 0; i < fw_dump.boot_mem_regs_cnt; i++) { in fadump_relocate()
1040 rstart = fw_dump.boot_mem_addr[i]; in fadump_relocate()
1041 rend = rstart + fw_dump.boot_mem_sz[i]; in fadump_relocate()
1045 raddr += fw_dump.boot_mem_dest_addr - hole_size; in fadump_relocate()
1106 raddr = fw_dump.boot_mem_addr[0]; in fadump_create_elfcore_headers()
1127 phdr->p_offset = fw_dump.boot_mem_dest_addr + offset; in fadump_create_elfcore_headers()
1128 if (j < (fw_dump.boot_mem_regs_cnt - 1)) { in fadump_create_elfcore_headers()
1129 offset += fw_dump.boot_mem_sz[j]; in fadump_create_elfcore_headers()
1130 raddr = fw_dump.boot_mem_addr[++j]; in fadump_create_elfcore_headers()
1175 if (!fw_dump.reserve_dump_area_size) in register_fadump()
1182 addr = fw_dump.fadumphdr_addr; in register_fadump()
1193 return fw_dump.ops->fadump_register(&fw_dump); in register_fadump()
1198 if (!fw_dump.fadump_supported) in fadump_cleanup()
1202 if (fw_dump.dump_active) { in fadump_cleanup()
1204 fw_dump.ops->fadump_invalidate(&fw_dump); in fadump_cleanup()
1205 } else if (fw_dump.dump_registered) { in fadump_cleanup()
1207 fw_dump.ops->fadump_unregister(&fw_dump); in fadump_cleanup()
1211 if (fw_dump.ops->fadump_cleanup) in fadump_cleanup()
1212 fw_dump.ops->fadump_cleanup(&fw_dump); in fadump_cleanup()
1361 ra_start = fw_dump.reserve_dump_area_start; in fadump_release_memory()
1362 ra_end = ra_start + fw_dump.reserve_dump_area_size; in fadump_release_memory()
1401 if (!fw_dump.dump_active) { in fadump_invalidate_release_mem()
1409 fadump_release_memory(fw_dump.boot_mem_top, memblock_end_of_DRAM()); in fadump_invalidate_release_mem()
1416 if (fw_dump.ops->fadump_setup_metadata && in fadump_invalidate_release_mem()
1417 (fw_dump.ops->fadump_setup_metadata(&fw_dump) < 0)) in fadump_invalidate_release_mem()
1419 fw_dump.ops->fadump_init_mem_struct(&fw_dump); in fadump_invalidate_release_mem()
1428 if (!fw_dump.dump_active) in release_mem_store()
1453 fadump_release_memory(fw_dump.reserve_dump_area_start, in unregister_fadump()
1454 fw_dump.reserve_dump_area_size); in unregister_fadump()
1455 fw_dump.fadump_enabled = 0; in unregister_fadump()
1463 return sprintf(buf, "%d\n", fw_dump.fadump_enabled); in enabled_show()
1470 return sprintf(buf, "%ld\n", fw_dump.reserve_dump_area_size); in mem_reserved_show()
1477 return sprintf(buf, "%d\n", fw_dump.dump_registered); in registered_show()
1487 if (!fw_dump.fadump_enabled || fw_dump.dump_active) in registered_store()
1497 if (fw_dump.dump_registered == 0) { in registered_store()
1503 fw_dump.ops->fadump_unregister(&fw_dump); in registered_store()
1506 if (fw_dump.dump_registered == 1) { in registered_store()
1508 fw_dump.ops->fadump_unregister(&fw_dump); in registered_store()
1525 if (!fw_dump.fadump_enabled) in fadump_region_show()
1529 fw_dump.ops->fadump_region_show(&fw_dump, m); in fadump_region_show()
1563 if (fw_dump.dump_active) { in fadump_init_files()
1602 if (fw_dump.dump_active) { in fadump_init_files()
1619 if (!fw_dump.fadump_supported) in setup_fadump()
1625 if (!fw_dump.fadump_enabled) in setup_fadump()
1632 if (fw_dump.dump_active) { in setup_fadump()
1637 if (fw_dump.ops->fadump_process(&fw_dump) < 0) in setup_fadump()
1641 else if (fw_dump.reserve_dump_area_size) in setup_fadump()
1642 fw_dump.ops->fadump_init_mem_struct(&fw_dump); in setup_fadump()
1656 opal_fadump_dt_scan(&fw_dump, node); in early_init_dt_scan_fw_dump()
1667 if (fw_dump.dump_active) { in fadump_reserve_mem()
1673 fadump_reserve_crash_area(fw_dump.boot_mem_top); in fadump_reserve_mem()