s390: report new vector facilities
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 31 Mar 2016 07:55:17 +0000 (09:55 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 8 Feb 2017 13:13:24 +0000 (14:13 +0100)
Add hardware capability bits and feature tags to /proc/cpuinfo for
the "Vector Packed Decimal Facility" (tag "vxd" / hwcap bit 2^12)
and the "Vector Enhancements Facility 1" (tag "vxe" / hwcap bit 2^13).

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 f4381e1..83aaefe 100644 (file)
 #define HWCAP_S390_HIGH_GPRS   512
 #define HWCAP_S390_TE          1024
 #define HWCAP_S390_VXRS                2048
+#define HWCAP_S390_VXRS_BCD    4096
+#define HWCAP_S390_VXRS_EXT    8192
 
 /* Internal bits, not exposed via elf */
 #define HWCAP_INT_SIE          1UL
index 8733b07..21004aa 100644 (file)
@@ -92,7 +92,7 @@ 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"
+               "edat", "etf3eh", "highgprs", "te", "vx", "vxd", "vxe"
        };
        static const char * const int_hwcap_str[] = {
                "sie"
index f92c782..8d59f20 100644 (file)
@@ -769,8 +769,14 @@ static int __init setup_hwcaps(void)
         * can be disabled with the "novx" parameter. Use MACHINE_HAS_VX
         * instead of facility bit 129.
         */
-       if (MACHINE_HAS_VX)
+       if (MACHINE_HAS_VX) {
                elf_hwcap |= HWCAP_S390_VXRS;
+               if (test_facility(134))
+                       elf_hwcap |= HWCAP_S390_VXRS_EXT;
+               if (test_facility(135))
+                       elf_hwcap |= HWCAP_S390_VXRS_BCD;
+       }
+
        get_cpu_id(&cpu_id);
        add_device_randomness(&cpu_id, sizeof(cpu_id));
        switch (cpu_id.machine) {