]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - init/main.c
printk: queue wake_up_klogd irq_work only if per-CPU areas are ready
[thirdparty/linux.git] / init / main.c
index ee4947af823f3bb81ce5502781d24c4de6d3eb7f..a48617f2e5e5bcf789998415c7ea37c8e97de55d 100644 (file)
@@ -353,6 +353,8 @@ static int __init bootconfig_params(char *param, char *val,
 static void __init setup_boot_config(const char *cmdline)
 {
        static char tmp_cmdline[COMMAND_LINE_SIZE] __initdata;
+       const char *msg;
+       int pos;
        u32 size, csum;
        char *data, *copy;
        u32 *hdr;
@@ -400,10 +402,14 @@ static void __init setup_boot_config(const char *cmdline)
        memcpy(copy, data, size);
        copy[size] = '\0';
 
-       ret = xbc_init(copy);
-       if (ret < 0)
-               pr_err("Failed to parse bootconfig\n");
-       else {
+       ret = xbc_init(copy, &msg, &pos);
+       if (ret < 0) {
+               if (pos < 0)
+                       pr_err("Failed to init bootconfig: %s.\n", msg);
+               else
+                       pr_err("Failed to parse bootconfig: %s at %d.\n",
+                               msg, pos);
+       } else {
                pr_info("Load bootconfig: %d bytes %d nodes\n", size, ret);
                /* keys starting with "kernel." are passed via cmdline */
                extra_command_line = xbc_make_cmdline("kernel");
@@ -907,7 +913,6 @@ asmlinkage __visible void __init start_kernel(void)
        boot_init_stack_canary();
 
        time_init();
-       printk_safe_init();
        perf_event_init();
        profile_init();
        call_function_init();