1742a265aSHari Bathini /* SPDX-License-Identifier: GPL-2.0-or-later */ 2742a265aSHari Bathini /* 3742a265aSHari Bathini * Firmware-Assisted Dump support on POWER platform (OPAL). 4742a265aSHari Bathini * 5742a265aSHari Bathini * Copyright 2019, Hari Bathini, IBM Corporation. 6742a265aSHari Bathini */ 7742a265aSHari Bathini 8742a265aSHari Bathini #ifndef _POWERNV_OPAL_FADUMP_H 9742a265aSHari Bathini #define _POWERNV_OPAL_FADUMP_H 10742a265aSHari Bathini 11742a265aSHari Bathini /* 12742a265aSHari Bathini * OPAL FADump metadata structure format version 13742a265aSHari Bathini * 14742a265aSHari Bathini * OPAL FADump kernel metadata structure stores kernel metadata needed to 15742a265aSHari Bathini * register-for/process crash dump. Format version is used to keep a tab on 16742a265aSHari Bathini * the changes in the structure format. The changes, if any, to the format 17742a265aSHari Bathini * are expected to be minimal and backward compatible. 18742a265aSHari Bathini */ 19742a265aSHari Bathini #define OPAL_FADUMP_VERSION 0x1 20742a265aSHari Bathini 21742a265aSHari Bathini /* Maximum number of memory regions kernel supports */ 22742a265aSHari Bathini #define OPAL_FADUMP_MAX_MEM_REGS 128 23742a265aSHari Bathini 24742a265aSHari Bathini /* 25742a265aSHari Bathini * OPAL FADump kernel metadata 26742a265aSHari Bathini * 27742a265aSHari Bathini * The address of this structure will be registered with f/w for retrieving 28742a265aSHari Bathini * and processing during crash dump. 29742a265aSHari Bathini */ 30742a265aSHari Bathini struct opal_fadump_mem_struct { 31742a265aSHari Bathini u8 version; 32742a265aSHari Bathini u8 reserved[3]; 33742a265aSHari Bathini u16 region_cnt; /* number of regions */ 34742a265aSHari Bathini u16 registered_regions; /* Regions registered for MPIPL */ 35742a265aSHari Bathini u64 fadumphdr_addr; 36742a265aSHari Bathini struct opal_mpipl_region rgn[OPAL_FADUMP_MAX_MEM_REGS]; 37742a265aSHari Bathini } __packed; 38742a265aSHari Bathini 395000a17aSHari Bathini /* 405000a17aSHari Bathini * CPU state data 415000a17aSHari Bathini * 425000a17aSHari Bathini * CPU state data information is provided by f/w. The format for this data 435000a17aSHari Bathini * is defined in the HDAT spec. Version is used to keep a tab on the changes 445000a17aSHari Bathini * in this CPU state data format. Changes to this format are unlikely, but 455000a17aSHari Bathini * if there are any changes, please refer to latest HDAT specification. 465000a17aSHari Bathini */ 475000a17aSHari Bathini #define HDAT_FADUMP_CPU_DATA_VER 1 485000a17aSHari Bathini 495000a17aSHari Bathini #define HDAT_FADUMP_CORE_INACTIVE (0x0F) 505000a17aSHari Bathini 515000a17aSHari Bathini /* HDAT thread header for register entries */ 525000a17aSHari Bathini struct hdat_fadump_thread_hdr { 535000a17aSHari Bathini __be32 pir; 545000a17aSHari Bathini /* 0x00 - 0x0F - The corresponding stop state of the core */ 555000a17aSHari Bathini u8 core_state; 565000a17aSHari Bathini u8 reserved[3]; 575000a17aSHari Bathini 585000a17aSHari Bathini __be32 offset; /* Offset to Register Entries array */ 595000a17aSHari Bathini __be32 ecnt; /* Number of entries */ 605000a17aSHari Bathini __be32 esize; /* Alloc size of each array entry in bytes */ 615000a17aSHari Bathini __be32 eactsz; /* Actual size of each array entry in bytes */ 625000a17aSHari Bathini } __packed; 635000a17aSHari Bathini 645000a17aSHari Bathini /* Register types populated by f/w */ 655000a17aSHari Bathini #define HDAT_FADUMP_REG_TYPE_GPR 0x01 665000a17aSHari Bathini #define HDAT_FADUMP_REG_TYPE_SPR 0x02 675000a17aSHari Bathini 685000a17aSHari Bathini /* ID numbers used by f/w while populating certain registers */ 695000a17aSHari Bathini #define HDAT_FADUMP_REG_ID_NIP 0x7D0 705000a17aSHari Bathini #define HDAT_FADUMP_REG_ID_MSR 0x7D1 715000a17aSHari Bathini #define HDAT_FADUMP_REG_ID_CCR 0x7D2 725000a17aSHari Bathini 735000a17aSHari Bathini /* HDAT register entry. */ 745000a17aSHari Bathini struct hdat_fadump_reg_entry { 755000a17aSHari Bathini __be32 reg_type; 765000a17aSHari Bathini __be32 reg_num; 775000a17aSHari Bathini __be64 reg_val; 785000a17aSHari Bathini } __packed; 795000a17aSHari Bathini 80742a265aSHari Bathini #endif /* _POWERNV_OPAL_FADUMP_H */ 81