s390/hwcaps: make sie capability regular hwcap
authorHeiko Carstens <hca@linux.ibm.com>
Wed, 21 Jul 2021 12:03:33 +0000 (14:03 +0200)
committerHeiko Carstens <hca@linux.ibm.com>
Tue, 27 Jul 2021 07:39:21 +0000 (09:39 +0200)
Commit 7f16d7e787b7 ("s390: show virtualization support in /proc/cpuinfo")
introduced special handling for sie capability, saying this should not be
exposed via hwcaps, without giving a reason.

However this leads to an inconsistent /proc/cpuinfo features line
where all features except the sie capability are also present in
hwcaps. I really don't see a reason to not add that to hwcaps - it
might be quite pointless, but at least this way it is possible to get
rid of some special handling.

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/include/asm/elf.h
arch/s390/kernel/processor.c

index f022738..70a30ae 100644 (file)
@@ -114,6 +114,7 @@ enum {
        HWCAP_NR_VXRS_PDE2      = 19,
        HWCAP_NR_NNPA           = 20,
        HWCAP_NR_PCI_MIO        = 21,
+       HWCAP_NR_SIE            = 22,
        HWCAP_NR_MAX
 };
 
@@ -140,14 +141,7 @@ enum {
 #define HWCAP_VXRS_PDE2                BIT(HWCAP_NR_VXRS_PDE2)
 #define HWCAP_NNPA             BIT(HWCAP_NR_NNPA)
 #define HWCAP_PCI_MIO          BIT(HWCAP_NR_PCI_MIO)
-
-enum {
-       HWCAP_INT_NR_SIE        = 0,
-       HWCAP_INT_NR_MAX
-};
-
-/* Internal bits, not exposed via elf */
-#define HWCAP_INT_SIE          BIT(HWCAP_INT_NR_SIE)
+#define HWCAP_SIE              BIT(HWCAP_NR_SIE)
 
 /*
  * These are used to set parameters in the core dumps.
@@ -243,10 +237,6 @@ struct arch_elf_state {
 extern unsigned long elf_hwcap;
 #define ELF_HWCAP (elf_hwcap)
 
-/* Internal hardware capabilities, not exposed via elf */
-
-extern unsigned long int_hwcap;
-
 /* This yields a string that ld.so will use to load implementation
    specific libraries for optimization.  This is more specific in
    intent than poking at uname or /proc/cpuinfo.
index 4ee697d..eccd565 100644 (file)
@@ -30,8 +30,6 @@
 unsigned long __read_mostly elf_hwcap;
 char elf_platform[ELF_PLATFORM_SIZE];
 
-unsigned long int_hwcap;
-
 struct cpu_info {
        unsigned int cpu_mhz_dynamic;
        unsigned int cpu_mhz_static;
@@ -142,14 +140,11 @@ static void show_cpu_summary(struct seq_file *m, void *v)
                [HWCAP_NR_VXRS_PDE2]    = "vxp2",
                [HWCAP_NR_NNPA]         = "nnpa",
                [HWCAP_NR_PCI_MIO]      = "pcimio",
-       };
-       static const char * const int_hwcap_str[] = {
-               [HWCAP_INT_NR_SIE]      = "sie",
+               [HWCAP_NR_SIE]          = "sie",
        };
        int i, cpu;
 
        BUILD_BUG_ON(ARRAY_SIZE(hwcap_str) != HWCAP_NR_MAX);
-       BUILD_BUG_ON(ARRAY_SIZE(int_hwcap_str) != HWCAP_INT_NR_MAX);
        seq_printf(m, "vendor_id       : IBM/S390\n"
                   "# processors    : %i\n"
                   "bogomips per cpu: %lu.%02lu\n",
@@ -160,9 +155,6 @@ static void show_cpu_summary(struct seq_file *m, void *v)
        for (i = 0; i < ARRAY_SIZE(hwcap_str); i++)
                if (hwcap_str[i] && (elf_hwcap & (1UL << i)))
                        seq_printf(m, "%s ", hwcap_str[i]);
-       for (i = 0; i < ARRAY_SIZE(int_hwcap_str); i++)
-               if (int_hwcap_str[i] && (int_hwcap & (1UL << i)))
-                       seq_printf(m, "%s ", int_hwcap_str[i]);
        seq_puts(m, "\n");
        show_facilities(m);
        show_cacheinfo(m);
@@ -257,7 +249,7 @@ static int __init setup_hwcaps(void)
 
        /* virtualization support */
        if (sclp.has_sief2)
-               int_hwcap |= HWCAP_INT_SIE;
+               elf_hwcap |= HWCAP_SIE;
 
        return 0;
 }