cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ipl.h (3297B)


      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