Files
s390-tools/zipl/boot/stage2.h
Stefan Haberland 7c7e10ed8f zipl: detect signed files and create bootmap components
Add support for parsing IPL file signatures as produced by the Linux
kernel's sign-file tool. When preparing a disk for IPL, the signatures
will be added as separate data components that can be used by the Secure
Boot firmware feature to validate the integrity of the IPL files.

Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
2019-04-29 17:17:30 +02:00

80 lines
1.4 KiB
C

/*
* zipl - zSeries Initial Program Loader tool
*
* Main program for stage2 bootloader.
*
* Copyright IBM Corp. 2013, 2017
*
* s390-tools is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
*/
#ifndef COMMON_H
#define COMMON_H
#include "cio.h"
#include "error.h"
#include "libc.h"
#include "s390.h"
#define DESCR_PER_BLOCK 16
/* ADRESS */
#define STAGE2_DESC 0x78
/* Layout of ECKD disk block pointer */
struct eckd_blockptr {
uint16_t cyl;
uint16_t head;
uint8_t sec;
uint16_t size;
uint8_t blockct;
uint8_t reserved[8];
} __packed;
struct linear_blockptr {
uint64_t blockno;
uint16_t size;
uint16_t blockct;
uint8_t reserved[4];
} __packed;
typedef union {
struct eckd_blockptr eckd;
struct linear_blockptr linear;
} disk_blockptr_t;
struct component_header {
uint8_t magic[4];
uint8_t type;
uint8_t reserved[27];
} __packed;
struct component_entry {
uint8_t data[23];
uint8_t type;
union {
uint32_t load_address[2];
uint64_t load_psw;
} address;
} __packed;
typedef enum {
COMPONENT_EXECUTE = 0x01,
COMPONENT_LOAD = 0x02,
COMPONENT_SIGNATURE = 0x03
} component_type;
struct stage2_descr {
uint8_t reserved[16];
} __packed __aligned(8);
void *load_direct(disk_blockptr_t *, struct subchannel_id , void *);
int extract_length(void *);
int is_zero_block(void *);
void kdump_stage2(unsigned long);
#endif /* COMMON_H */