File Index
Files and directories
Sign in
FILE

rtas-fadump.h

File preview with syntax highlighting.

linux-6.19.14/arch/powerpc/platforms/pseries/rtas-fadump.h C
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 * Firmware-Assisted Dump support on POWERVM platform.
  4 *
  5 * Copyright 2011, Mahesh Salgaonkar, IBM Corporation.
  6 * Copyright 2019, Hari Bathini, IBM Corporation.
  7 */
  8
  9#ifndef _PSERIES_RTAS_FADUMP_H
 10#define _PSERIES_RTAS_FADUMP_H
 11
 12/*
 13 * On some Power systems where RMO is 128MB, it still requires minimum of
 14 * 256MB for kernel to boot successfully. When kdump infrastructure is
 15 * configured to save vmcore over network, we run into OOM issue while
 16 * loading modules related to network setup. Hence we need additional 64M
 17 * of memory to avoid OOM issue.
 18 */
 19#define RTAS_FADUMP_MIN_BOOT_MEM	((0x1UL << 28) + (0x1UL << 26))
 20
 21/* Firmware provided dump sections */
 22#define RTAS_FADUMP_CPU_STATE_DATA	0x0001
 23#define RTAS_FADUMP_HPTE_REGION		0x0002
 24#define RTAS_FADUMP_REAL_MODE_REGION	0x0011
 25
 26/* OS defined sections */
 27#define RTAS_FADUMP_PARAM_AREA		0x0100
 28
 29/* Dump request flag */
 30#define RTAS_FADUMP_REQUEST_FLAG	0x00000001
 31
 32/* Dump status flag */
 33#define RTAS_FADUMP_ERROR_FLAG		0x2000
 34
 35/*
 36 * The Firmware Assisted Dump Memory structure supports a maximum of 10 sections
 37 * in the dump memory structure. Presently, three sections are used for
 38 * CPU state data, HPTE & Parameters area, while the remaining seven sections
 39 * can be used for boot memory regions.
 40 */
 41#define MAX_SECTIONS				10
 42#define RTAS_FADUMP_MAX_BOOT_MEM_REGS		7
 43
 44/* Kernel Dump section info */
 45struct rtas_fadump_section {
 46	__be32	request_flag;
 47	__be16	source_data_type;
 48	__be16	error_flags;
 49	__be64	source_address;
 50	__be64	source_len;
 51	__be64	bytes_dumped;
 52	__be64	destination_address;
 53};
 54
 55/* ibm,configure-kernel-dump header. */
 56struct rtas_fadump_section_header {
 57	__be32	dump_format_version;
 58	__be16	dump_num_sections;
 59	__be16	dump_status_flag;
 60	__be32	offset_first_dump_section;
 61
 62	/* Fields for disk dump option. */
 63	__be32	dd_block_size;
 64	__be64	dd_block_offset;
 65	__be64	dd_num_blocks;
 66	__be32	dd_offset_disk_path;
 67
 68	/* Maximum time allowed to prevent an automatic dump-reboot. */
 69	__be32	max_time_auto;
 70};
 71
 72/*
 73 * Firmware Assisted dump memory structure. This structure is required for
 74 * registering future kernel dump with power firmware through rtas call.
 75 *
 76 * In version 1, the platform permits one section header, dump-disk path
 77 * and ten sections.
 78 *
 79 * Note: No disk dump option. Hence disk dump path string section is not
 80 * included.
 81 */
 82struct rtas_fadump_mem_struct {
 83	struct rtas_fadump_section_header	header;
 84	struct rtas_fadump_section		rgn[MAX_SECTIONS];
 85};
 86
 87/*
 88 * The firmware-assisted dump format.
 89 *
 90 * The register save area is an area in the partition's memory used to preserve
 91 * the register contents (CPU state data) for the active CPUs during a firmware
 92 * assisted dump. The dump format contains register save area header followed
 93 * by register entries. Each list of registers for a CPU starts with "CPUSTRT"
 94 * and ends with "CPUEND".
 95 */
 96
 97/* Register save area header. */
 98struct rtas_fadump_reg_save_area_header {
 99	__be64		magic_number;
100	__be32		version;
101	__be32		num_cpu_offset;
102};
103
104/* Register entry. */
105struct rtas_fadump_reg_entry {
106	__be64		reg_id;
107	__be64		reg_value;
108};
109
110/* Utility macros */
111#define RTAS_FADUMP_SKIP_TO_NEXT_CPU(reg_entry)				\
112({									\
113	while (be64_to_cpu(reg_entry->reg_id) !=			\
114	       fadump_str_to_u64("CPUEND"))				\
115		reg_entry++;						\
116	reg_entry++;							\
117})
118
119#define RTAS_FADUMP_CPU_ID_MASK			((1UL << 32) - 1)
120
121#endif /* _PSERIES_RTAS_FADUMP_H */
~/ Read-only file preview.