Blob Blame History Raw
 commit 2e1ec106dc5aac951ba884ebe4cca036e9a2d45f
 Author: Sven Schnelle <svens@linux.ibm.com>
 Date:   Thu Dec 16 12:43:56 2021 +0100
 
     s390: add support for --reuse-cmdline
     
     --reuse-cmdline reads the command line of the currently
     running kernel from /proc/cmdline and uses that for the
     kernel that should be kexec'd.
     
     Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
     Reviewed-by: Alexander Egorenkov <egorenar@linux.ibm.com>
     Signed-off-by: Simon Horman <horms@verge.net.au>
 
 diff --git a/kexec/arch/s390/include/arch/options.h b/kexec/arch/s390/include/arch/options.h
 index 76044a301ceb3cca013f70dff330a8ad343d808a..c150244996c79165cf1e83e331f728432b752652 100644
 --- a/kexec/arch/s390/include/arch/options.h
 +++ b/kexec/arch/s390/include/arch/options.h
 @@ -1,9 +1,10 @@
  #ifndef KEXEC_ARCH_S390_OPTIONS_H
  #define KEXEC_ARCH_S390_OPTIONS_H
  
 -#define OPT_ARCH_MAX	(OPT_MAX+0)
 -#define OPT_APPEND	OPT_MAX+0
 -#define OPT_RAMDISK	OPT_MAX+1
 +#define OPT_ARCH_MAX		(OPT_MAX+0)
 +#define OPT_APPEND		(OPT_MAX+0)
 +#define OPT_RAMDISK		(OPT_MAX+1)
 +#define OPT_REUSE_CMDLINE	(OPT_MAX+2)
  
  /* Options relevant to the architecture (excluding loader-specific ones),
   * in this case none:
 @@ -31,7 +32,8 @@
  	KEXEC_ARCH_OPTIONS				\
  	{"command-line",     1, 0, OPT_APPEND},		\
  	{"append",           1, 0, OPT_APPEND},		\
 -	{"initrd",	     1, 0, OPT_RAMDISK},
 +	{"initrd",	     1, 0, OPT_RAMDISK},	\
 +	{"reuse-cmdline",    0, 0, OPT_REUSE_CMDLINE },
  
  #define KEXEC_ALL_OPT_STR KEXEC_ARCH_OPT_STR
  
 diff --git a/kexec/arch/s390/kexec-image.c b/kexec/arch/s390/kexec-image.c
 index 209ab77ddccbd60f10989e2d9fc273324aefa76d..69aaf96812f741110bf323b4bb8d5dda155f293a 100644
 --- a/kexec/arch/s390/kexec-image.c
 +++ b/kexec/arch/s390/kexec-image.c
 @@ -71,6 +71,10 @@ int image_s390_load_file(int argc, char **argv, struct kexec_info *info)
  		case OPT_RAMDISK:
  			ramdisk = optarg;
  			break;
 +		case OPT_REUSE_CMDLINE:
 +			free(info->command_line);
 +			info->command_line = get_command_line();
 +			break;
  		}
  	}
  
 @@ -123,6 +127,10 @@ image_s390_load(int argc, char **argv, const char *kernel_buf,
  			if (command_line_add(info, optarg))
  				return -1;
  			break;
 +		case OPT_REUSE_CMDLINE:
 +			free(info->command_line);
 +			info->command_line = get_command_line();
 +			break;
  		case OPT_RAMDISK:
  			ramdisk = optarg;
  			break;
 @@ -223,5 +231,6 @@ image_s390_usage(void)
  	printf("--command-line=STRING Set the kernel command line to STRING.\n"
  	       "--append=STRING       Set the kernel command line to STRING.\n"
  	       "--initrd=FILENAME     Use the file FILENAME as a ramdisk.\n"
 +	       "--reuse-cmdline       Use kernel command line from running system.\n"
  		);
  }