summaryrefslogtreecommitdiff
path: root/arch/s390/include/asm/facility.h
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2018-01-16 09:03:44 +0300
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2018-02-05 15:49:16 +0300
commitcf1489984641369611556bf00c48f945c77bcf02 (patch)
treedb97d15f77022fd35bea4f20274efa965bb5230f /arch/s390/include/asm/facility.h
parente2dd833389cc4069a96b57bdd24227b5f52288f5 (diff)
downloadlinux-cf1489984641369611556bf00c48f945c77bcf02.tar.xz
s390/alternative: use a copy of the facility bit mask
To be able to switch off specific CPU alternatives with kernel parameters make a copy of the facility bit mask provided by STFLE and use the copy for the decision to apply an alternative. Reviewed-by: David Hildenbrand <david@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/facility.h')
-rw-r--r--arch/s390/include/asm/facility.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/s390/include/asm/facility.h b/arch/s390/include/asm/facility.h
index fbe0c4be3cd8..99c8ce30b3cd 100644
--- a/arch/s390/include/asm/facility.h
+++ b/arch/s390/include/asm/facility.h
@@ -15,6 +15,24 @@
#define MAX_FACILITY_BIT (sizeof(((struct lowcore *)0)->stfle_fac_list) * 8)
+static inline void __set_facility(unsigned long nr, void *facilities)
+{
+ unsigned char *ptr = (unsigned char *) facilities;
+
+ if (nr >= MAX_FACILITY_BIT)
+ return;
+ ptr[nr >> 3] |= 0x80 >> (nr & 7);
+}
+
+static inline void __clear_facility(unsigned long nr, void *facilities)
+{
+ unsigned char *ptr = (unsigned char *) facilities;
+
+ if (nr >= MAX_FACILITY_BIT)
+ return;
+ ptr[nr >> 3] &= ~(0x80 >> (nr & 7));
+}
+
static inline int __test_facility(unsigned long nr, void *facilities)
{
unsigned char *ptr;