Path: blob/master/arch/powerpc/platforms/pseries/rtas-fadump.h
26481 views
/* SPDX-License-Identifier: GPL-2.0-or-later */1/*2* Firmware-Assisted Dump support on POWERVM platform.3*4* Copyright 2011, Mahesh Salgaonkar, IBM Corporation.5* Copyright 2019, Hari Bathini, IBM Corporation.6*/78#ifndef _PSERIES_RTAS_FADUMP_H9#define _PSERIES_RTAS_FADUMP_H1011/*12* On some Power systems where RMO is 128MB, it still requires minimum of13* 256MB for kernel to boot successfully. When kdump infrastructure is14* configured to save vmcore over network, we run into OOM issue while15* loading modules related to network setup. Hence we need additional 64M16* of memory to avoid OOM issue.17*/18#define RTAS_FADUMP_MIN_BOOT_MEM ((0x1UL << 28) + (0x1UL << 26))1920/* Firmware provided dump sections */21#define RTAS_FADUMP_CPU_STATE_DATA 0x000122#define RTAS_FADUMP_HPTE_REGION 0x000223#define RTAS_FADUMP_REAL_MODE_REGION 0x00112425/* OS defined sections */26#define RTAS_FADUMP_PARAM_AREA 0x01002728/* Dump request flag */29#define RTAS_FADUMP_REQUEST_FLAG 0x000000013031/* Dump status flag */32#define RTAS_FADUMP_ERROR_FLAG 0x20003334/*35* The Firmware Assisted Dump Memory structure supports a maximum of 10 sections36* in the dump memory structure. Presently, three sections are used for37* CPU state data, HPTE & Parameters area, while the remaining seven sections38* can be used for boot memory regions.39*/40#define MAX_SECTIONS 1041#define RTAS_FADUMP_MAX_BOOT_MEM_REGS 74243/* Kernel Dump section info */44struct rtas_fadump_section {45__be32 request_flag;46__be16 source_data_type;47__be16 error_flags;48__be64 source_address;49__be64 source_len;50__be64 bytes_dumped;51__be64 destination_address;52};5354/* ibm,configure-kernel-dump header. */55struct rtas_fadump_section_header {56__be32 dump_format_version;57__be16 dump_num_sections;58__be16 dump_status_flag;59__be32 offset_first_dump_section;6061/* Fields for disk dump option. */62__be32 dd_block_size;63__be64 dd_block_offset;64__be64 dd_num_blocks;65__be32 dd_offset_disk_path;6667/* Maximum time allowed to prevent an automatic dump-reboot. */68__be32 max_time_auto;69};7071/*72* Firmware Assisted dump memory structure. This structure is required for73* registering future kernel dump with power firmware through rtas call.74*75* In version 1, the platform permits one section header, dump-disk path76* and ten sections.77*78* Note: No disk dump option. Hence disk dump path string section is not79* included.80*/81struct rtas_fadump_mem_struct {82struct rtas_fadump_section_header header;83struct rtas_fadump_section rgn[MAX_SECTIONS];84};8586/*87* The firmware-assisted dump format.88*89* The register save area is an area in the partition's memory used to preserve90* the register contents (CPU state data) for the active CPUs during a firmware91* assisted dump. The dump format contains register save area header followed92* by register entries. Each list of registers for a CPU starts with "CPUSTRT"93* and ends with "CPUEND".94*/9596/* Register save area header. */97struct rtas_fadump_reg_save_area_header {98__be64 magic_number;99__be32 version;100__be32 num_cpu_offset;101};102103/* Register entry. */104struct rtas_fadump_reg_entry {105__be64 reg_id;106__be64 reg_value;107};108109/* Utility macros */110#define RTAS_FADUMP_SKIP_TO_NEXT_CPU(reg_entry) \111({ \112while (be64_to_cpu(reg_entry->reg_id) != \113fadump_str_to_u64("CPUEND")) \114reg_entry++; \115reg_entry++; \116})117118#define RTAS_FADUMP_CPU_ID_MASK ((1UL << 32) - 1)119120#endif /* _PSERIES_RTAS_FADUMP_H */121122123