discover: Add --debug to kexec
authorGeoff Levand <geoff@infradead.org>
Thu, 2 Aug 2018 17:29:34 +0000 (17:29 +0000)
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>
Tue, 7 Aug 2018 01:30:36 +0000 (11:30 +1000)
If verbose logging is enabled then add '--debug' to the kexec command line.
Adds a new routine pb_log_get_debug() that can be used to query the log
debug state.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
discover/boot.c
lib/log/log.c
lib/log/log.h

index 7faec9fcf684027117283a4f9806f1db26be727b..3de7d28e3310979d2003c2f23078e7f7826cd9b9 100644 (file)
@@ -62,7 +62,7 @@ static int kexec_load(struct boot_task *boot_task)
        struct process *process;
        char *s_initrd = NULL;
        char *s_args = NULL;
-       const char *argv[7];
+       const char *argv[8];
        char *s_dtb = NULL;
        const char **p;
        int result;
@@ -107,27 +107,31 @@ static int kexec_load(struct boot_task *boot_task)
        *p++ = pb_system_apps.kexec;    /* 1 */
        *p++ = "-l";                    /* 2 */
 
+       if (pb_log_get_debug()) {
+               *p++ = "--debug";       /* 3 */
+       }
+
        if (local_initrd) {
                s_initrd = talloc_asprintf(boot_task, "--initrd=%s",
                                local_initrd);
                assert(s_initrd);
-               *p++ = s_initrd;         /* 3 */
+               *p++ = s_initrd;         /* 4 */
        }
 
        if (local_dtb) {
                s_dtb = talloc_asprintf(boot_task, "--dtb=%s",
                                                local_dtb);
                assert(s_dtb);
-               *p++ = s_dtb;            /* 4 */
+               *p++ = s_dtb;            /* 5 */
        }
 
        s_args = talloc_asprintf(boot_task, "--append=%s",
                                boot_task->args ?: "\"\"");
        assert(s_args);
-       *p++ = s_args;          /* 5 */
+       *p++ = s_args;                  /* 6 */
 
-       *p++ = local_image;             /* 6 */
-       *p++ = NULL;                    /* 7 */
+       *p++ = local_image;             /* 7 */
+       *p++ = NULL;                    /* 8 */
 
        result = process_run_sync(process);
        if (result) {
index 0b145e0d3d6013f608935b3b696c3863e887c2a1..5466d817575277ab32f7a827f822cb36ccc08965 100644 (file)
@@ -88,6 +88,11 @@ void pb_log_set_debug(bool _debug)
        debug = _debug;
 }
 
+bool pb_log_get_debug(void)
+{
+       return debug;
+}
+
 FILE *pb_log_get_stream(void)
 {
        static FILE *null_stream;
index 2d4fd915f9716d81a6b3836d6c822cfae7d082ed..c2ad58eef6fc372f3ff586ac43ffb4447cd1dea2 100644 (file)
@@ -26,6 +26,7 @@ void __pb_log_init(FILE *stream, bool debug);
 #endif
 
 void pb_log_set_debug(bool debug);
+bool pb_log_get_debug(void);
 FILE *pb_log_get_stream(void);
 
 #endif /* _LOG_H */