linux/arch/s390/include/uapi/asm/ipl.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
   2#ifndef _ASM_S390_UAPI_IPL_H
   3#define _ASM_S390_UAPI_IPL_H
   4
   5#include <linux/types.h>
   6
   7/* IPL Parameter List header */
   8struct ipl_pl_hdr {
   9        __u32 len;
  10        __u8  flags;
  11        __u8  reserved1[2];
  12        __u8  version;
  13} __packed;
  14
  15#define IPL_PL_FLAG_IPLPS       0x80
  16#define IPL_PL_FLAG_SIPL        0x40
  17#define IPL_PL_FLAG_IPLSR       0x20
  18
  19/* IPL Parameter Block header */
  20struct ipl_pb_hdr {
  21        __u32 len;
  22        __u8  pbt;
  23} __packed;
  24
  25/* IPL Parameter Block types */
  26enum ipl_pbt {
  27        IPL_PBT_FCP = 0,
  28        IPL_PBT_SCP_DATA = 1,
  29        IPL_PBT_CCW = 2,
  30        IPL_PBT_NVME = 4,
  31};
  32
  33/* IPL Parameter Block 0 with common fields */
  34struct ipl_pb0_common {
  35        __u32 len;
  36        __u8  pbt;
  37        __u8  flags;
  38        __u8  reserved1[2];
  39        __u8  loadparm[8];
  40        __u8  reserved2[84];
  41} __packed;
  42
  43#define IPL_PB0_FLAG_LOADPARM   0x80
  44
  45/* IPL Parameter Block 0 for FCP */
  46struct ipl_pb0_fcp {
  47        __u32 len;
  48        __u8  pbt;
  49        __u8  reserved1[3];
  50        __u8  loadparm[8];
  51        __u8  reserved2[304];
  52        __u8  opt;
  53        __u8  reserved3[3];
  54        __u8  cssid;
  55        __u8  reserved4[1];
  56        __u16 devno;
  57        __u8  reserved5[4];
  58        __u64 wwpn;
  59        __u64 lun;
  60        __u32 bootprog;
  61        __u8  reserved6[12];
  62        __u64 br_lba;
  63        __u32 scp_data_len;
  64        __u8  reserved7[260];
  65        __u8  scp_data[];
  66} __packed;
  67
  68#define IPL_PB0_FCP_OPT_IPL     0x10
  69#define IPL_PB0_FCP_OPT_DUMP    0x20
  70
  71/* IPL Parameter Block 0 for NVMe */
  72struct ipl_pb0_nvme {
  73        __u32 len;
  74        __u8  pbt;
  75        __u8  reserved1[3];
  76        __u8  loadparm[8];
  77        __u8  reserved2[304];
  78        __u8  opt;
  79        __u8  reserved3[3];
  80        __u32 fid;
  81        __u8 reserved4[12];
  82        __u32 nsid;
  83        __u8 reserved5[4];
  84        __u32 bootprog;
  85        __u8 reserved6[12];
  86        __u64 br_lba;
  87        __u32 scp_data_len;
  88        __u8  reserved7[260];
  89        __u8  scp_data[];
  90} __packed;
  91
  92#define IPL_PB0_NVME_OPT_IPL    0x10
  93#define IPL_PB0_NVME_OPT_DUMP   0x20
  94
  95/* IPL Parameter Block 0 for CCW */
  96struct ipl_pb0_ccw {
  97        __u32 len;
  98        __u8  pbt;
  99        __u8  flags;
 100        __u8  reserved1[2];
 101        __u8  loadparm[8];
 102        __u8  reserved2[84];
 103        __u16 reserved3 : 13;
 104        __u8  ssid : 3;
 105        __u16 devno;
 106        __u8  vm_flags;
 107        __u8  reserved4[3];
 108        __u32 vm_parm_len;
 109        __u8  nss_name[8];
 110        __u8  vm_parm[64];
 111        __u8  reserved5[8];
 112} __packed;
 113
 114#define IPL_PB0_CCW_VM_FLAG_NSS         0x80
 115#define IPL_PB0_CCW_VM_FLAG_VP          0x40
 116
 117/* IPL Parameter Block 1 for additional SCP data */
 118struct ipl_pb1_scp_data {
 119        __u32 len;
 120        __u8  pbt;
 121        __u8  scp_data[];
 122} __packed;
 123
 124/* IPL Report List header */
 125struct ipl_rl_hdr {
 126        __u32 len;
 127        __u8  flags;
 128        __u8  reserved1[2];
 129        __u8  version;
 130        __u8  reserved2[8];
 131} __packed;
 132
 133/* IPL Report Block header */
 134struct ipl_rb_hdr {
 135        __u32 len;
 136        __u8  rbt;
 137        __u8  reserved1[11];
 138} __packed;
 139
 140/* IPL Report Block types */
 141enum ipl_rbt {
 142        IPL_RBT_CERTIFICATES = 1,
 143        IPL_RBT_COMPONENTS = 2,
 144};
 145
 146/* IPL Report Block for the certificate list */
 147struct ipl_rb_certificate_entry {
 148        __u64 addr;
 149        __u64 len;
 150} __packed;
 151
 152struct ipl_rb_certificates {
 153        __u32 len;
 154        __u8  rbt;
 155        __u8  reserved1[11];
 156        struct ipl_rb_certificate_entry entries[];
 157} __packed;
 158
 159/* IPL Report Block for the component list */
 160struct ipl_rb_component_entry {
 161        __u64 addr;
 162        __u64 len;
 163        __u8  flags;
 164        __u8  reserved1[5];
 165        __u16 certificate_index;
 166        __u8  reserved2[8];
 167};
 168
 169#define IPL_RB_COMPONENT_FLAG_SIGNED    0x80
 170#define IPL_RB_COMPONENT_FLAG_VERIFIED  0x40
 171
 172struct ipl_rb_components {
 173        __u32 len;
 174        __u8  rbt;
 175        __u8  reserved1[11];
 176        struct ipl_rb_component_entry entries[];
 177} __packed;
 178
 179#endif
 180