s390: report new CPU capabilities
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 5 Feb 2019 15:15:01 +0000 (16:15 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 25 Apr 2019 13:34:10 +0000 (15:34 +0200)
Add hardware capability bits and features tags to /proc/cpuinfo
for 4 new CPU features:
  "Vector-Enhancements Facility 2" (tag "vxe2", hwcap 2^15)
  "Vector-Packed-Decimal-Enhancement Facility" (tag "vxp", hwcap 2^16)
  "Enhanced-Sort Facility" (tag "sort", hwcap 2^17)
  "Deflate-Conversion Facility" (tag "dflt", hwcap 2^18)

Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/elf.h
arch/s390/kernel/processor.c
arch/s390/kernel/setup.c

index f74639a..5775fc2 100644 (file)
 #define HWCAP_S390_VXRS_BCD    4096
 #define HWCAP_S390_VXRS_EXT    8192
 #define HWCAP_S390_GS          16384
+#define HWCAP_S390_VXRS_EXT2   32768
+#define HWCAP_S390_VXRS_PDE    65536
+#define HWCAP_S390_SORT                131072
+#define HWCAP_S390_DFLT                262144
 
 /* Internal bits, not exposed via elf */
 #define HWCAP_INT_SIE          1UL
index 6fe2e18..5de1330 100644 (file)
@@ -109,7 +109,8 @@ static void show_cpu_summary(struct seq_file *m, void *v)
 {
        static const char *hwcap_str[] = {
                "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp",
-               "edat", "etf3eh", "highgprs", "te", "vx", "vxd", "vxe", "gs"
+               "edat", "etf3eh", "highgprs", "te", "vx", "vxd", "vxe", "gs",
+               "vxe2", "vxp", "sort", "dflt"
        };
        static const char * const int_hwcap_str[] = {
                "sie"
index 70197a6..12d136e 100644 (file)
@@ -919,7 +919,15 @@ static int __init setup_hwcaps(void)
                        elf_hwcap |= HWCAP_S390_VXRS_EXT;
                if (test_facility(135))
                        elf_hwcap |= HWCAP_S390_VXRS_BCD;
+               if (test_facility(148))
+                       elf_hwcap |= HWCAP_S390_VXRS_EXT2;
+               if (test_facility(152))
+                       elf_hwcap |= HWCAP_S390_VXRS_PDE;
        }
+       if (test_facility(150))
+               elf_hwcap |= HWCAP_S390_SORT;
+       if (test_facility(151))
+               elf_hwcap |= HWCAP_S390_DFLT;
 
        /*
         * Guarded storage support HWCAP_S390_GS is bit 12.