From: Philipp Rudo <prudo@linux.ibm.com>
To: Simon Horman <horms@verge.net.au>, kexec@lists.infradead.org
Cc: linux-s390@vger.kernel.org
Subject: [PATCH] kexec/s390: Add support for kexec_file_load
Date: Wed, 16 May 2018 14:27:18 +0200 [thread overview]
Message-ID: <20180516122718.15440-1-prudo@linux.ibm.com> (raw)
Since kernel 4.17-rc2 s390 supports the kexec_file_load system call. Add
the new system call to kexec-tools and provide the -s (--kexec-file-syscall)
option for s390 to support this new feature.
Signed-off-by: Philipp Rudo <prudo@linux.ibm.com>
---
kexec/arch/s390/kexec-image.c | 46 +++++++++++++++++++++++++++++++++++++++++++
kexec/kexec-syscall.h | 3 +++
2 files changed, 49 insertions(+)
diff --git a/kexec/arch/s390/kexec-image.c b/kexec/arch/s390/kexec-image.c
index 0c8937b..8b39566 100644
--- a/kexec/arch/s390/kexec-image.c
+++ b/kexec/arch/s390/kexec-image.c
@@ -22,6 +22,7 @@
#include "../../kexec/crashdump.h"
#include "kexec-s390.h"
#include <arch/options.h>
+#include <fcntl.h>
static uint64_t crash_base, crash_end;
static char command_line[COMMAND_LINESIZE];
@@ -45,6 +46,48 @@ int command_line_add(const char *str)
return 0;
}
+int image_s390_load_file(int argc, char **argv, struct kexec_info *info)
+{
+ const char *ramdisk = NULL;
+ int opt;
+
+ static const struct option options[] =
+ {
+ KEXEC_OPTIONS
+ {"command-line", 1, 0, OPT_APPEND},
+ {"append", 1, 0, OPT_APPEND},
+ {"initrd", 1, 0, OPT_RAMDISK},
+ {0, 0, 0, 0},
+ };
+ static const char short_options[] = KEXEC_OPT_STR "";
+
+ while ((opt = getopt_long(argc, argv, short_options, options, 0)) != -1) {
+ switch(opt) {
+ case OPT_APPEND:
+ if (command_line_add(optarg))
+ return -1;
+ break;
+ case OPT_RAMDISK:
+ ramdisk = optarg;
+ break;
+ }
+ }
+
+ if (ramdisk) {
+ info->initrd_fd = open(ramdisk, O_RDONLY);
+ if (info->initrd_fd == -1) {
+ fprintf(stderr, "Could not open initrd file %s:%s\n",
+ ramdisk, strerror(errno));
+ return -1;
+ }
+ }
+
+ info->command_line = command_line;
+ info->command_line_len = strlen (command_line) + 1;
+
+ return 0;
+}
+
int
image_s390_load(int argc, char **argv, const char *kernel_buf,
off_t kernel_size, struct kexec_info *info)
@@ -56,6 +99,9 @@ image_s390_load(int argc, char **argv, const char *kernel_buf,
unsigned int ramdisk_origin;
int opt;
+ if (info->file_mode)
+ return image_s390_load_file(argc, argv, info);
+
static const struct option options[] =
{
KEXEC_OPTIONS
diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
index 33638c2..b96e02a 100644
--- a/kexec/kexec-syscall.h
+++ b/kexec/kexec-syscall.h
@@ -64,6 +64,9 @@
#ifdef __powerpc64__
#define __NR_kexec_file_load 382
#endif
+#ifdef __s390x__
+#define __NR_kexec_file_load 381
+#endif
#ifndef __NR_kexec_file_load
/* system call not available for the arch */
--
2.16.3
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next reply other threads:[~2018-05-16 12:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-16 12:27 Philipp Rudo [this message]
2018-05-21 6:24 ` [PATCH] kexec/s390: Add support for kexec_file_load Dave Young
2018-05-22 8:11 ` Simon Horman
2018-05-28 11:09 ` Philipp Rudo
2018-05-28 11:09 ` Philipp Rudo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180516122718.15440-1-prudo@linux.ibm.com \
--to=prudo@linux.ibm.com \
--cc=horms@verge.net.au \
--cc=kexec@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.