Blob Blame History Raw
From: Sebastian Ott <sebott@linux.ibm.com>
Date: Tue, 23 Apr 2019 13:14:28 +0200
Subject: s390: enable processes for mio instructions
Git-commit: 833b441ec0f6f3c57cc2106ef628bb19d8fb0ee2
Patch-mainline: v5.2-rc1
References: jsc#SLE-5802 FATE#327055 bsc#1134738 LTC#173387

Allow for userspace to use PCI MIO instructions.

Signed-off-by: Sebastian Ott <sebott@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Acked-by: Petr Tesarik <ptesarik@suse.com>
---
 arch/s390/include/asm/pci_insn.h |   10 ++++++++++
 arch/s390/kernel/early.c         |    2 ++
 2 files changed, 12 insertions(+)

--- a/arch/s390/include/asm/pci_insn.h
+++ b/arch/s390/include/asm/pci_insn.h
@@ -142,4 +142,14 @@ static inline int zpci_set_irq_ctrl(u16
 	return __zpci_set_irq_ctrl(ctl, isc, &iib);
 }
 
+#ifdef CONFIG_PCI
+static inline void enable_mio_ctl(void)
+{
+	if (static_branch_likely(&have_mio))
+		__ctl_set_bit(2, 5);
+}
+#else /* CONFIG_PCI */
+static inline void enable_mio_ctl(void) {}
+#endif /* CONFIG_PCI */
+
 #endif
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -29,6 +29,7 @@
 #include <asm/sclp.h>
 #include <asm/facility.h>
 #include <asm/uv.h>
+#include <asm/pci_insn.h>
 #include "entry.h"
 
 /*
@@ -402,6 +403,7 @@ static __init void detect_machine_facili
 		clock_comparator_max = -1ULL >> 1;
 		__ctl_set_bit(0, 53);
 	}
+	enable_mio_ctl();
 }
 
 static inline void save_vector_registers(void)