[PATCH] arm: use /sys/firmware/fdt in case without --atags and --dtb
Dave Young
dyoung at redhat.com
Sun Nov 22 23:04:23 PST 2015
Latest linux kernel will create /sys/firmware/fdt file. It will be convenient
to use it in case one does not specify --atags and --dtb options.
Signed-off-by: Dave Young <dyoung at redhat.com>
---
kexec/arch/arm/kexec-arm.c | 7 +++++++
kexec/arch/arm/kexec-arm.h | 2 ++
kexec/arch/arm/kexec-zImage-arm.c | 8 ++++++++
3 files changed, 17 insertions(+)
--- kexec-tools.orig/kexec/arch/arm/kexec-arm.c
+++ kexec-tools/kexec/arch/arm/kexec-arm.c
@@ -12,6 +12,7 @@
#include <stdint.h>
#include <string.h>
#include <getopt.h>
+#include <unistd.h>
#include "../../kexec.h"
#include "../../kexec-syscall.h"
#include "kexec-arm.h"
@@ -137,3 +138,9 @@ int arch_compat_trampoline(struct kexec_
void arch_update_purgatory(struct kexec_info *UNUSED(info))
{
}
+
+/* return 1 if /sys/firmware/fdt exists, otherwise return 0 */
+int have_sysfs_fdt(void)
+{
+ return !access(SYSFS_FDT, F_OK);
+}
--- kexec-tools.orig/kexec/arch/arm/kexec-arm.h
+++ kexec-tools/kexec/arch/arm/kexec-arm.h
@@ -3,6 +3,7 @@
#include <sys/types.h>
+#define SYSFS_FDT "/sys/firmware/fdt"
#define BOOT_BLOCK_VERSION 17
#define BOOT_BLOCK_LAST_COMP_VERSION 16
@@ -16,5 +17,6 @@ void zImage_arm_usage(void);
int uImage_arm_probe(const char *buf, off_t len);
int uImage_arm_load(int argc, char **argv, const char *buf, off_t len,
struct kexec_info *info);
+extern int have_sysfs_fdt(void);
#endif /* KEXEC_ARM_H */
--- kexec-tools.orig/kexec/arch/arm/kexec-zImage-arm.c
+++ kexec-tools/kexec/arch/arm/kexec-zImage-arm.c
@@ -358,6 +358,14 @@ int zImage_arm_load(int argc, char **arg
return -1;
}
+ if (!use_atags && !dtb_file) {
+ int f;
+
+ f = have_sysfs_fdt();
+ if (f)
+ dtb_file = SYSFS_FDT;
+ }
+
if (command_line) {
command_line_len = strlen(command_line) + 1;
if (command_line_len > COMMAND_LINE_SIZE)
More information about the kexec
mailing list