APPLIED[G]: [SRU][G][H][PATCH 1/1] s390/ipl: support NVMe IPL kernel parameters

Ian May ian.may at canonical.com
Wed Nov 4 22:39:45 UTC 2020


Applied to groovy/master-next
Per Kleber's ack, removed linux-next from cherry pick message.

Thanks,
Ian

On 2020-11-02 17:07:55 , frank.heimes at canonical.com wrote:
> From: Alexander Egorenkov <egorenar at linux.ibm.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1902179
> 
> Enable extracting of extra kernel command-line parameters
> from the NVMe IPL block passed by the firmware to the kernel
> at boot.
> 
> Signed-off-by: Alexander Egorenkov <egorenar at linux.ibm.com>
> Reviewed-by: Vasily Gorbik <gor at linux.ibm.com>
> Reviewed-by: Philipp Rudo <prudo at linux.ibm.com>
> Signed-off-by: Vasily Gorbik <gor at linux.ibm.com>
> (cherry picked from commit d9f12e48d08ec08ace574050a838e001e442ee38 linux-next)
> Signed-off-by: Frank Heimes <frank.heimes at canonical.com>
> ---
>  arch/s390/boot/ipl_parm.c | 31 +++++++++++++++++++++++--------
>  1 file changed, 23 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/s390/boot/ipl_parm.c b/arch/s390/boot/ipl_parm.c
> index 8e222a666025..12d1c0c527ee 100644
> --- a/arch/s390/boot/ipl_parm.c
> +++ b/arch/s390/boot/ipl_parm.c
> @@ -70,30 +70,44 @@ static size_t scpdata_length(const u8 *buf, size_t count)
>  static size_t ipl_block_get_ascii_scpdata(char *dest, size_t size,
>  					  const struct ipl_parameter_block *ipb)
>  {
> -	size_t count;
> -	size_t i;
> +	const __u8 *scp_data;
> +	__u32 scp_data_len;
>  	int has_lowercase;
> +	size_t count = 0;
> +	size_t i;
> +
> +	switch (ipb->pb0_hdr.pbt) {
> +	case IPL_PBT_FCP:
> +		scp_data_len = ipb->fcp.scp_data_len;
> +		scp_data = ipb->fcp.scp_data;
> +		break;
> +	case IPL_PBT_NVME:
> +		scp_data_len = ipb->nvme.scp_data_len;
> +		scp_data = ipb->nvme.scp_data;
> +		break;
> +	default:
> +		goto out;
> +	}
>  
> -	count = min(size - 1, scpdata_length(ipb->fcp.scp_data,
> -					     ipb->fcp.scp_data_len));
> +	count = min(size - 1, scpdata_length(scp_data, scp_data_len));
>  	if (!count)
>  		goto out;
>  
>  	has_lowercase = 0;
>  	for (i = 0; i < count; i++) {
> -		if (!isascii(ipb->fcp.scp_data[i])) {
> +		if (!isascii(scp_data[i])) {
>  			count = 0;
>  			goto out;
>  		}
> -		if (!has_lowercase && islower(ipb->fcp.scp_data[i]))
> +		if (!has_lowercase && islower(scp_data[i]))
>  			has_lowercase = 1;
>  	}
>  
>  	if (has_lowercase)
> -		memcpy(dest, ipb->fcp.scp_data, count);
> +		memcpy(dest, scp_data, count);
>  	else
>  		for (i = 0; i < count; i++)
> -			dest[i] = tolower(ipb->fcp.scp_data[i]);
> +			dest[i] = tolower(scp_data[i]);
>  out:
>  	dest[count] = '\0';
>  	return count;
> @@ -115,6 +129,7 @@ static void append_ipl_block_parm(void)
>  			parm, COMMAND_LINE_SIZE - len - 1, &ipl_block);
>  		break;
>  	case IPL_PBT_FCP:
> +	case IPL_PBT_NVME:
>  		rc = ipl_block_get_ascii_scpdata(
>  			parm, COMMAND_LINE_SIZE - len - 1, &ipl_block);
>  		break;
> -- 
> 2.25.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team



More information about the kernel-team mailing list