arch/powerpc/platforms/pseries/rtas-fadump.h

Source file repositories/reference/linux-study-clean/arch/powerpc/platforms/pseries/rtas-fadump.h

File Facts

System
Linux kernel
Corpus path
arch/powerpc/platforms/pseries/rtas-fadump.h
Extension
.h
Size
3611 bytes
Lines
128
Domain
Architecture Layer
Bucket
arch/powerpc
Inferred role
Architecture Layer: implementation source
Status
source implementation candidate

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

struct rtas_fadump_section {
	__be32	request_flag;
	__be16	source_data_type;
	__be16	error_flags;
	__be64	source_address;
	__be64	source_len;
	__be64	bytes_dumped;
	__be64	destination_address;
};

/* ibm,configure-kernel-dump header. */
struct rtas_fadump_section_header {
	__be32	dump_format_version;
	__be16	dump_num_sections;
	__be16	dump_status_flag;
	__be32	offset_first_dump_section;

	/* Fields for disk dump option. */
	__be32	dd_block_size;
	__be64	dd_block_offset;
	__be64	dd_num_blocks;
	__be32	dd_offset_disk_path;

	/* Maximum time allowed to prevent an automatic dump-reboot. */
	__be32	max_time_auto;
};

/*
 * Firmware Assisted dump memory structure. This structure is required for
 * registering future kernel dump with power firmware through rtas call.
 *
 * In version 1, the platform permits one section header, dump-disk path
 * and ten sections.
 *
 * Note: No disk dump option. Hence disk dump path string section is not
 * included.
 */
struct rtas_fadump_mem_struct {
	struct rtas_fadump_section_header	header;
	struct rtas_fadump_section		rgn[MAX_SECTIONS];
};

/*
 * The firmware-assisted dump format.
 *
 * The register save area is an area in the partition's memory used to preserve
 * the register contents (CPU state data) for the active CPUs during a firmware
 * assisted dump. The dump format contains register save area header followed
 * by register entries. Each list of registers for a CPU starts with "CPUSTRT"
 * and ends with "CPUEND".
 */

/* Register save area header. */
struct rtas_fadump_reg_save_area_header {
	__be64		magic_number;
	__be32		version;
	__be32		num_cpu_offset;
};

/* Register entry. */
struct rtas_fadump_reg_entry {
	__be64		reg_id;
	__be64		reg_value;
};

/* Utility macros */
#define RTAS_FADUMP_SKIP_TO_NEXT_CPU(reg_entry)				\
({									\
	while (be64_to_cpu(reg_entry->reg_id) !=			\
	       fadump_str_to_u64("CPUEND"))				\
		reg_entry++;						\
	reg_entry++;							\
})

#define RTAS_FADUMP_CPU_ID_MASK			((1UL << 32) - 1)

#endif /* _PSERIES_RTAS_FADUMP_H */

Annotation

Implementation Notes