diff options
| author | Sven Schnelle <svens@linux.ibm.com> | 2022-10-05 10:17:40 +0200 | 
|---|---|---|
| committer | Alexander Gordeev <agordeev@linux.ibm.com> | 2022-12-06 16:18:21 +0100 | 
| commit | 87fd22e0ae9239f695266d3181b53ad9f758bd74 (patch) | |
| tree | 902546e6ac5f1457809d30ad8d3f7a513c8eda61 /arch/s390/include/asm | |
| parent | 5de2322d7b8ecba37152334ebaaddf687fd63a38 (diff) | |
| download | linux-87fd22e0ae9239f695266d3181b53ad9f758bd74.tar.bz2 | |
s390/ipl: add eckd support
This adds support to IPL from ECKD DASDs to linux.
It introduces a few sysfs files in /sys/firmware/reipl/eckd:
bootprog: the boot program selector
clear:    whether to issue a diag308 LOAD_NORMAL or LOAD_CLEAR
device:   the device to ipl from
br_chr:   Cylinder/Head/Record number to read the bootrecord from.
          Might be '0' or 'auto' if it should be read from the
	  volume label.
scpdata:  data to be passed to the ipl'd program.
The new ipl type is called 'eckd'.
Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Diffstat (limited to 'arch/s390/include/asm')
| -rw-r--r-- | arch/s390/include/asm/ipl.h | 9 | ||||
| -rw-r--r-- | arch/s390/include/asm/sclp.h | 1 | 
2 files changed, 10 insertions, 0 deletions
| diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h index a405b6bb89fb..1396ed05c6aa 100644 --- a/arch/s390/include/asm/ipl.h +++ b/arch/s390/include/asm/ipl.h @@ -22,6 +22,7 @@ struct ipl_parameter_block {  		struct ipl_pb0_common common;  		struct ipl_pb0_fcp fcp;  		struct ipl_pb0_ccw ccw; +		struct ipl_pb0_eckd eckd;  		struct ipl_pb0_nvme nvme;  		char raw[PAGE_SIZE - sizeof(struct ipl_pl_hdr)];  	}; @@ -41,6 +42,10 @@ struct ipl_parameter_block {  			      sizeof(struct ipl_pb0_ccw))  #define IPL_BP0_CCW_LEN (sizeof(struct ipl_pb0_ccw)) +#define IPL_BP_ECKD_LEN (sizeof(struct ipl_pl_hdr) + \ +			      sizeof(struct ipl_pb0_eckd)) +#define IPL_BP0_ECKD_LEN (sizeof(struct ipl_pb0_eckd)) +  #define IPL_MAX_SUPPORTED_VERSION (0)  #define IPL_RB_CERT_UNKNOWN ((unsigned short)-1) @@ -68,6 +73,7 @@ enum ipl_type {  	IPL_TYPE_NSS		= 16,  	IPL_TYPE_NVME		= 32,  	IPL_TYPE_NVME_DUMP	= 64, +	IPL_TYPE_ECKD		= 128,  };  struct ipl_info @@ -79,6 +85,9 @@ struct ipl_info  		} ccw;  		struct {  			struct ccw_dev_id dev_id; +		} eckd; +		struct { +			struct ccw_dev_id dev_id;  			u64 wwpn;  			u64 lun;  		} fcp; diff --git a/arch/s390/include/asm/sclp.h b/arch/s390/include/asm/sclp.h index 9d4c7f71e070..67a24dda17b6 100644 --- a/arch/s390/include/asm/sclp.h +++ b/arch/s390/include/asm/sclp.h @@ -87,6 +87,7 @@ struct sclp_info {  	unsigned char has_gisaf : 1;  	unsigned char has_diag318 : 1;  	unsigned char has_sipl : 1; +	unsigned char has_sipl_eckd : 1;  	unsigned char has_dirq : 1;  	unsigned char has_iplcc : 1;  	unsigned char has_zpci_lsi : 1; |