s390: add z13 code generation support
[firefly-linux-kernel-4.4.55.git] / arch / s390 / kernel / setup.c
index 82bc113e8c1dd3718cf663a88d7bc9a2c9c97fb4..bfac77ada4f28137b5545d9268d37346eb3af0ff 100644 (file)
@@ -41,7 +41,6 @@
 #include <linux/ctype.h>
 #include <linux/reboot.h>
 #include <linux/topology.h>
-#include <linux/ftrace.h>
 #include <linux/kexec.h>
 #include <linux/crash_dump.h>
 #include <linux/memory.h>
@@ -343,6 +342,9 @@ static void __init setup_lowcore(void)
                __ctl_set_bit(14, 29);
        }
 #else
+       if (MACHINE_HAS_VX)
+               lc->vector_save_area_addr =
+                       (unsigned long) &lc->vector_save_area;
        lc->vdso_per_cpu_data = (unsigned long) &lc->paste[0];
 #endif
        lc->sync_enter_timer = S390_lowcore.sync_enter_timer;
@@ -353,7 +355,6 @@ static void __init setup_lowcore(void)
        lc->steal_timer = S390_lowcore.steal_timer;
        lc->last_update_timer = S390_lowcore.last_update_timer;
        lc->last_update_clock = S390_lowcore.last_update_clock;
-       lc->ftrace_func = S390_lowcore.ftrace_func;
 
        restart_stack = __alloc_bootmem(ASYNC_SIZE, ASYNC_SIZE, 0);
        restart_stack += ASYNC_SIZE;
@@ -452,8 +453,8 @@ static void __init setup_memory_end(void)
 #ifdef CONFIG_64BIT
        vmalloc_size = VMALLOC_END ?: (128UL << 30) - MODULES_LEN;
        tmp = (memory_end ?: max_physmem_end) / PAGE_SIZE;
-       tmp = tmp * (sizeof(struct page) + PAGE_SIZE) + vmalloc_size;
-       if (tmp <= (1UL << 42))
+       tmp = tmp * (sizeof(struct page) + PAGE_SIZE);
+       if (tmp + vmalloc_size + MODULES_LEN <= (1UL << 42))
                vmax = 1UL << 42;       /* 3-level kernel page table */
        else
                vmax = 1UL << 53;       /* 4-level kernel page table */
@@ -765,6 +766,12 @@ static void __init setup_hwcaps(void)
         */
        if (test_facility(50) && test_facility(73))
                elf_hwcap |= HWCAP_S390_TE;
+
+       /*
+        * Vector extension HWCAP_S390_VXRS is bit 11.
+        */
+       if (test_facility(129))
+               elf_hwcap |= HWCAP_S390_VXRS;
 #endif
 
        get_cpu_id(&cpu_id);
@@ -803,6 +810,9 @@ static void __init setup_hwcaps(void)
        case 0x2828:
                strcpy(elf_platform, "zEC12");
                break;
+       case 0x2964:
+               strcpy(elf_platform, "z13");
+               break;
        }
 }