summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/s390/include/asm/elf.h2
-rw-r--r--arch/s390/kernel/processor.c2
-rw-r--r--arch/s390/kernel/setup.c4
3 files changed, 7 insertions, 1 deletions
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
index bd00c94620d3..6e55e4a2d6bd 100644
--- a/arch/s390/include/asm/elf.h
+++ b/arch/s390/include/asm/elf.h
@@ -111,6 +111,8 @@
#define HWCAP_S390_VXRS_PDE 65536
#define HWCAP_S390_SORT 131072
#define HWCAP_S390_DFLT 262144
+#define HWCAP_S390_VXRS_PDE2 524288
+#define HWCAP_S390_NNPA 1048576
/* Internal bits, not exposed via elf */
#define HWCAP_INT_SIE 1UL
diff --git a/arch/s390/kernel/processor.c b/arch/s390/kernel/processor.c
index 82df39b17bb5..9cd63efce1c1 100644
--- a/arch/s390/kernel/processor.c
+++ b/arch/s390/kernel/processor.c
@@ -115,7 +115,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", "vxd", "vxe", "gs",
- "vxe2", "vxp", "sort", "dflt"
+ "vxe2", "vxp", "sort", "dflt", "vxp2", "nnpa"
};
static const char * const int_hwcap_str[] = {
"sie"
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index c5bbf968669e..32ce8d40b2fb 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -949,11 +949,15 @@ static int __init setup_hwcaps(void)
elf_hwcap |= HWCAP_S390_VXRS_EXT2;
if (test_facility(152))
elf_hwcap |= HWCAP_S390_VXRS_PDE;
+ if (test_facility(192))
+ elf_hwcap |= HWCAP_S390_VXRS_PDE2;
}
if (test_facility(150))
elf_hwcap |= HWCAP_S390_SORT;
if (test_facility(151))
elf_hwcap |= HWCAP_S390_DFLT;
+ if (test_facility(165))
+ elf_hwcap |= HWCAP_S390_NNPA;
/*
* Guarded storage support HWCAP_S390_GS is bit 12.