Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[cascardo/linux.git] / arch / s390 / kernel / setup.c
index f319391..ba5f456 100644 (file)
@@ -130,17 +130,14 @@ __setup("condev=", condev_setup);
 
 static void __init set_preferred_console(void)
 {
-       if (MACHINE_IS_KVM) {
-               if (sclp.has_vt220)
-                       add_preferred_console("ttyS", 1, NULL);
-               else if (sclp.has_linemode)
-                       add_preferred_console("ttyS", 0, NULL);
-               else
-                       add_preferred_console("hvc", 0, NULL);
-       } else if (CONSOLE_IS_3215 || CONSOLE_IS_SCLP)
+       if (CONSOLE_IS_3215 || CONSOLE_IS_SCLP)
                add_preferred_console("ttyS", 0, NULL);
        else if (CONSOLE_IS_3270)
                add_preferred_console("tty3270", 0, NULL);
+       else if (CONSOLE_IS_VT220)
+               add_preferred_console("ttyS", 1, NULL);
+       else if (CONSOLE_IS_HVC)
+               add_preferred_console("hvc", 0, NULL);
 }
 
 static int __init conmode_setup(char *str)
@@ -206,6 +203,15 @@ static void __init conmode_default(void)
                        SET_CONSOLE_SCLP;
 #endif
                }
+       } else if (MACHINE_IS_KVM) {
+               if (sclp.has_vt220 &&
+                   config_enabled(CONFIG_SCLP_VT220_CONSOLE))
+                       SET_CONSOLE_VT220;
+               else if (sclp.has_linemode &&
+                        config_enabled(CONFIG_SCLP_CONSOLE))
+                       SET_CONSOLE_SCLP;
+               else
+                       SET_CONSOLE_HVC;
        } else {
 #if defined(CONFIG_SCLP_CONSOLE) || defined(CONFIG_SCLP_VT220_CONSOLE)
                SET_CONSOLE_SCLP;
@@ -289,7 +295,7 @@ static int __init parse_vmalloc(char *arg)
 }
 early_param("vmalloc", parse_vmalloc);
 
-void *restart_stack __attribute__((__section__(".data")));
+void *restart_stack __section(.data);
 
 static void __init setup_lowcore(void)
 {
@@ -432,6 +438,20 @@ static void __init setup_resources(void)
                        }
                }
        }
+#ifdef CONFIG_CRASH_DUMP
+       /*
+        * Re-add removed crash kernel memory as reserved memory. This makes
+        * sure it will be mapped with the identity mapping and struct pages
+        * will be created, so it can be resized later on.
+        * However add it later since the crash kernel resource should not be
+        * part of the System RAM resource.
+        */
+       if (crashk_res.end) {
+               memblock_add(crashk_res.start, resource_size(&crashk_res));
+               memblock_reserve(crashk_res.start, resource_size(&crashk_res));
+               insert_resource(&iomem_resource, &crashk_res);
+       }
+#endif
 }
 
 static void __init setup_memory_end(void)
@@ -602,7 +622,6 @@ static void __init reserve_crashkernel(void)
                diag10_range(PFN_DOWN(crash_base), PFN_DOWN(crash_size));
        crashk_res.start = crash_base;
        crashk_res.end = crash_base + crash_size - 1;
-       insert_resource(&iomem_resource, &crashk_res);
        memblock_remove(crash_base, crash_size);
        pr_info("Reserving %lluMB of memory at %lluMB "
                "for crashkernel (System RAM: %luMB)\n",
@@ -901,6 +920,7 @@ void __init setup_arch(char **cmdline_p)
        setup_vmcoreinfo();
        setup_lowcore();
        smp_fill_possible_mask();
+       cpu_detect_mhz_feature();
         cpu_init();
        numa_setup();