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