|
@@ -109,11 +109,7 @@ struct compat_kexec_segment {
|
|
|
};
|
|
|
#endif
|
|
|
|
|
|
-struct kexec_sha_region {
|
|
|
- unsigned long start;
|
|
|
- unsigned long len;
|
|
|
-};
|
|
|
-
|
|
|
+#ifdef CONFIG_KEXEC_FILE
|
|
|
struct purgatory_info {
|
|
|
/* Pointer to elf header of read only purgatory */
|
|
|
Elf_Ehdr *ehdr;
|
|
@@ -130,6 +126,28 @@ struct purgatory_info {
|
|
|
unsigned long purgatory_load_addr;
|
|
|
};
|
|
|
|
|
|
+typedef int (kexec_probe_t)(const char *kernel_buf, unsigned long kernel_size);
|
|
|
+typedef void *(kexec_load_t)(struct kimage *image, char *kernel_buf,
|
|
|
+ unsigned long kernel_len, char *initrd,
|
|
|
+ unsigned long initrd_len, char *cmdline,
|
|
|
+ unsigned long cmdline_len);
|
|
|
+typedef int (kexec_cleanup_t)(void *loader_data);
|
|
|
+
|
|
|
+#ifdef CONFIG_KEXEC_VERIFY_SIG
|
|
|
+typedef int (kexec_verify_sig_t)(const char *kernel_buf,
|
|
|
+ unsigned long kernel_len);
|
|
|
+#endif
|
|
|
+
|
|
|
+struct kexec_file_ops {
|
|
|
+ kexec_probe_t *probe;
|
|
|
+ kexec_load_t *load;
|
|
|
+ kexec_cleanup_t *cleanup;
|
|
|
+#ifdef CONFIG_KEXEC_VERIFY_SIG
|
|
|
+ kexec_verify_sig_t *verify_sig;
|
|
|
+#endif
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
struct kimage {
|
|
|
kimage_entry_t head;
|
|
|
kimage_entry_t *entry;
|
|
@@ -161,6 +179,7 @@ struct kimage {
|
|
|
struct kimage_arch arch;
|
|
|
#endif
|
|
|
|
|
|
+#ifdef CONFIG_KEXEC_FILE
|
|
|
/* Additional fields for file based kexec syscall */
|
|
|
void *kernel_buf;
|
|
|
unsigned long kernel_buf_len;
|
|
@@ -179,38 +198,7 @@ struct kimage {
|
|
|
|
|
|
/* Information for loading purgatory */
|
|
|
struct purgatory_info purgatory_info;
|
|
|
-};
|
|
|
-
|
|
|
-/*
|
|
|
- * Keeps track of buffer parameters as provided by caller for requesting
|
|
|
- * memory placement of buffer.
|
|
|
- */
|
|
|
-struct kexec_buf {
|
|
|
- struct kimage *image;
|
|
|
- char *buffer;
|
|
|
- unsigned long bufsz;
|
|
|
- unsigned long mem;
|
|
|
- unsigned long memsz;
|
|
|
- unsigned long buf_align;
|
|
|
- unsigned long buf_min;
|
|
|
- unsigned long buf_max;
|
|
|
- bool top_down; /* allocate from top of memory hole */
|
|
|
-};
|
|
|
-
|
|
|
-typedef int (kexec_probe_t)(const char *kernel_buf, unsigned long kernel_size);
|
|
|
-typedef void *(kexec_load_t)(struct kimage *image, char *kernel_buf,
|
|
|
- unsigned long kernel_len, char *initrd,
|
|
|
- unsigned long initrd_len, char *cmdline,
|
|
|
- unsigned long cmdline_len);
|
|
|
-typedef int (kexec_cleanup_t)(void *loader_data);
|
|
|
-typedef int (kexec_verify_sig_t)(const char *kernel_buf,
|
|
|
- unsigned long kernel_len);
|
|
|
-
|
|
|
-struct kexec_file_ops {
|
|
|
- kexec_probe_t *probe;
|
|
|
- kexec_load_t *load;
|
|
|
- kexec_cleanup_t *cleanup;
|
|
|
- kexec_verify_sig_t *verify_sig;
|
|
|
+#endif
|
|
|
};
|
|
|
|
|
|
/* kexec interface functions */
|