s390: dump_stack: fill in arch description
authorChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 24 May 2016 13:23:20 +0000 (15:23 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 13 Jun 2016 13:58:18 +0000 (15:58 +0200)
Lets provide the basic machine information for dump_stack on
s390. This enables the "Hardware name:" line and results in
output like

[...]
Oops: 0004 ilc:2 [#1] SMP
Modules linked in:
CPU: 1 PID: 74 Comm: sh Not tainted 4.5.0+ #205
Hardware name: IBM              2964 NC9              704 (KVM)
[...]

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/early.c

index a0684de5a93b99ae199f9bf6906327f4513f662e..4067dbe390ace703d53621668773443d39c5b4a3 100644 (file)
@@ -231,6 +231,26 @@ static noinline __init void detect_machine_type(void)
                S390_lowcore.machine_flags |= MACHINE_FLAG_VM;
 }
 
+static noinline __init void setup_arch_string(void)
+{
+       struct sysinfo_1_1_1 *mach = (struct sysinfo_1_1_1 *)&sysinfo_page;
+
+       if (stsi(mach, 1, 1, 1))
+               return;
+       EBCASC(mach->manufacturer, sizeof(mach->manufacturer));
+       EBCASC(mach->type, sizeof(mach->type));
+       EBCASC(mach->model, sizeof(mach->model));
+       EBCASC(mach->model_capacity, sizeof(mach->model_capacity));
+       dump_stack_set_arch_desc("%-16.16s %-4.4s %-16.16s %-16.16s (%s)",
+                                mach->manufacturer,
+                                mach->type,
+                                mach->model,
+                                mach->model_capacity,
+                                MACHINE_IS_LPAR ? "LPAR" :
+                                MACHINE_IS_VM ? "z/VM" :
+                                MACHINE_IS_KVM ? "KVM" : "unknown");
+}
+
 static __init void setup_topology(void)
 {
        int max_mnest;
@@ -452,6 +472,7 @@ void __init startup_init(void)
        setup_lowcore_early();
        setup_facility_list();
        detect_machine_type();
+       setup_arch_string();
        ipl_update_parameters();
        setup_boot_command_line();
        create_kernel_nss();