s390: add support for IBM z15 machines
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 6 Feb 2019 07:22:11 +0000 (08:22 +0100)
committerHeiko Carstens <heiko.carstens@de.ibm.com>
Fri, 13 Sep 2019 10:19:14 +0000 (12:19 +0200)
Add detection for machine types 0x8562 and 8x8561 and set the ELF platform
name to z15. Add the miscellaneous-instruction-extension 3 facility to
the list of facilities for z15.

And allow to generate code that only runs on a z15 machine.

Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
arch/s390/Kconfig
arch/s390/Makefile
arch/s390/kernel/setup.c
arch/s390/tools/gen_facilities.c

index 3289cc2..8c5b05d 100644 (file)
@@ -237,6 +237,10 @@ config HAVE_MARCH_Z14_FEATURES
        def_bool n
        select HAVE_MARCH_Z13_FEATURES
 
+config HAVE_MARCH_Z15_FEATURES
+       def_bool n
+       select HAVE_MARCH_Z14_FEATURES
+
 choice
        prompt "Processor type"
        default MARCH_Z196
@@ -308,6 +312,14 @@ config MARCH_Z14
          and 3906 series). The kernel will be slightly faster but will not
          work on older machines.
 
+config MARCH_Z15
+       bool "IBM z15"
+       select HAVE_MARCH_Z15_FEATURES
+       help
+         Select this to enable optimizations for IBM z15 (8562
+         and 8561 series). The kernel will be slightly faster but will not
+         work on older machines.
+
 endchoice
 
 config MARCH_Z900_TUNE
@@ -334,6 +346,9 @@ config MARCH_Z13_TUNE
 config MARCH_Z14_TUNE
        def_bool TUNE_Z14 || MARCH_Z14 && TUNE_DEFAULT
 
+config MARCH_Z15_TUNE
+       def_bool TUNE_Z15 || MARCH_Z15 && TUNE_DEFAULT
+
 choice
        prompt "Tune code generation"
        default TUNE_DEFAULT
@@ -378,6 +393,9 @@ config TUNE_Z13
 config TUNE_Z14
        bool "IBM z14"
 
+config TUNE_Z15
+       bool "IBM z15"
+
 endchoice
 
 config 64BIT
index e0bab7e..478b645 100644 (file)
@@ -45,6 +45,7 @@ mflags-$(CONFIG_MARCH_Z196)   := -march=z196
 mflags-$(CONFIG_MARCH_ZEC12)  := -march=zEC12
 mflags-$(CONFIG_MARCH_Z13)    := -march=z13
 mflags-$(CONFIG_MARCH_Z14)    := -march=z14
+mflags-$(CONFIG_MARCH_Z15)    := -march=z15
 
 export CC_FLAGS_MARCH := $(mflags-y)
 
@@ -59,6 +60,7 @@ cflags-$(CONFIG_MARCH_Z196_TUNE)      += -mtune=z196
 cflags-$(CONFIG_MARCH_ZEC12_TUNE)      += -mtune=zEC12
 cflags-$(CONFIG_MARCH_Z13_TUNE)                += -mtune=z13
 cflags-$(CONFIG_MARCH_Z14_TUNE)                += -mtune=z14
+cflags-$(CONFIG_MARCH_Z15_TUNE)                += -mtune=z15
 
 cflags-y += -Wa,-I$(srctree)/arch/$(ARCH)/include
 
index 3e4b4a4..f63a9f3 100644 (file)
@@ -981,6 +981,10 @@ static int __init setup_hwcaps(void)
        case 0x3907:
                strcpy(elf_platform, "z14");
                break;
+       case 0x8561:
+       case 0x8562:
+               strcpy(elf_platform, "z15");
+               break;
        }
 
        /*
index cead9e0..61ce5b5 100644 (file)
@@ -58,6 +58,9 @@ static struct facility_def facility_defs[] = {
 #ifdef CONFIG_HAVE_MARCH_Z14_FEATURES
                        58, /* miscellaneous-instruction-extension 2 */
 #endif
+#ifdef CONFIG_HAVE_MARCH_Z15_FEATURES
+                       61, /* miscellaneous-instruction-extension 3 */
+#endif
                        -1 /* END */
                }
        },