diff mbox series

[SRU,Xenial,2/2] s390/cpuinfo: show facilities as reported by stfle

Message ID 264495c68936bb2f39f956175d23e6d7ee3e6341.1518729588.git.joseph.salisbury@canonical.com
State New
Headers show
Series Fixes for LP:1744736 | expand

Commit Message

Joseph Salisbury Feb. 15, 2018, 9:28 p.m. UTC
From: Heiko Carstens <heiko.carstens@de.ibm.com>

BugLink: http://bugs.launchpad.net/bugs/1744736

Add a new line to /proc/cpuinfo which shows all available facilities
as reported by the stfle instruction:

> cat /proc/cpuinfo
...
facilities      : 0 1 2 3 4 6 7 ...
...

Reviewed-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
(back ported from commit 157467ba9fb7e379f0540707dd89111de441e45e)
Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
---
 arch/s390/kernel/processor.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

Comments

Thadeu Lima de Souza Cascardo Feb. 27, 2018, 3:01 p.m. UTC | #1
Applied to xenial master-next branch.

Thanks.
Cascardo.

Applied-to: xenial/master-next
diff mbox series

Patch

diff --git a/arch/s390/kernel/processor.c b/arch/s390/kernel/processor.c
index 7ce00e7..bb92bd6 100644
--- a/arch/s390/kernel/processor.c
+++ b/arch/s390/kernel/processor.c
@@ -6,12 +6,14 @@ 
 #define KMSG_COMPONENT "cpu"
 #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
 
+#include <linux/bitops.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/seq_file.h>
 #include <linux/delay.h>
 #include <linux/cpu.h>
 #include <asm/diag.h>
+#include <asm/facility.h>
 #include <asm/elf.h>
 #include <asm/lowcore.h>
 #include <asm/param.h>
@@ -52,6 +54,18 @@  int cpu_have_feature(unsigned int num)
 }
 EXPORT_SYMBOL(cpu_have_feature);
 
+static void show_facilities(struct seq_file *m)
+{
+	unsigned int bit;
+	long *facilities;
+
+	facilities = (long *)&S390_lowcore.stfle_fac_list;
+	seq_puts(m, "facilities      :");
+	for_each_set_bit_inv(bit, facilities, MAX_FACILITY_BIT)
+		seq_printf(m, " %d", bit);
+	seq_putc(m, '\n');
+}
+
 /*
  * show_cpuinfo - Get information on one CPU for use by procfs.
  */
@@ -76,6 +90,7 @@  static int show_cpuinfo(struct seq_file *m, void *v)
 			if (hwcap_str[i] && (elf_hwcap & (1UL << i)))
 				seq_printf(m, "%s ", hwcap_str[i]);
 		seq_puts(m, "\n");
+		show_facilities(m);
 		show_cacheinfo(m);
 	}
 	get_online_cpus();