s390/runtime instrumentation: provide uapi header file
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 22 Jan 2018 09:26:20 +0000 (10:26 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 2 Feb 2018 09:47:15 +0000 (10:47 +0100)
The man page for the s390_runtime_instr() system call refers to a
header file that was never exported. Therefore it's time to finally
provide the header file, and move large parts of the runtime
instrumentation header file to a new uapi header file.

Reported-by: Eugene Syromyatnikov <evgsyr@gmail.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/runtime_instr.h
arch/s390/include/uapi/asm/runtime_instr.h [new file with mode: 0644]

index 6b15403..0e16055 100644 (file)
@@ -2,75 +2,10 @@
 #ifndef _RUNTIME_INSTR_H
 #define _RUNTIME_INSTR_H
 
-#define S390_RUNTIME_INSTR_START       0x1
-#define S390_RUNTIME_INSTR_STOP                0x2
-
-struct runtime_instr_cb {
-       __u64 rca;
-       __u64 roa;
-       __u64 rla;
-
-       __u32 v                 : 1;
-       __u32 s                 : 1;
-       __u32 k                 : 1;
-       __u32 h                 : 1;
-       __u32 a                 : 1;
-       __u32 reserved1         : 3;
-       __u32 ps                : 1;
-       __u32 qs                : 1;
-       __u32 pc                : 1;
-       __u32 qc                : 1;
-       __u32 reserved2         : 1;
-       __u32 g                 : 1;
-       __u32 u                 : 1;
-       __u32 l                 : 1;
-       __u32 key               : 4;
-       __u32 reserved3         : 8;
-       __u32 t                 : 1;
-       __u32 rgs               : 3;
-
-       __u32 m                 : 4;
-       __u32 n                 : 1;
-       __u32 mae               : 1;
-       __u32 reserved4         : 2;
-       __u32 c                 : 1;
-       __u32 r                 : 1;
-       __u32 b                 : 1;
-       __u32 j                 : 1;
-       __u32 e                 : 1;
-       __u32 x                 : 1;
-       __u32 reserved5         : 2;
-       __u32 bpxn              : 1;
-       __u32 bpxt              : 1;
-       __u32 bpti              : 1;
-       __u32 bpni              : 1;
-       __u32 reserved6         : 2;
-
-       __u32 d                 : 1;
-       __u32 f                 : 1;
-       __u32 ic                : 4;
-       __u32 dc                : 4;
-
-       __u64 reserved7;
-       __u64 sf;
-       __u64 rsic;
-       __u64 reserved8;
-} __packed __aligned(8);
+#include <uapi/asm/runtime_instr.h>
 
 extern struct runtime_instr_cb runtime_instr_empty_cb;
 
-static inline void load_runtime_instr_cb(struct runtime_instr_cb *cb)
-{
-       asm volatile(".insn     rsy,0xeb0000000060,0,0,%0"      /* LRIC */
-               : : "Q" (*cb));
-}
-
-static inline void store_runtime_instr_cb(struct runtime_instr_cb *cb)
-{
-       asm volatile(".insn     rsy,0xeb0000000061,0,0,%0"      /* STRIC */
-               : "=Q" (*cb) : : "cc");
-}
-
 static inline void save_ri_cb(struct runtime_instr_cb *cb_prev)
 {
        if (cb_prev)
diff --git a/arch/s390/include/uapi/asm/runtime_instr.h b/arch/s390/include/uapi/asm/runtime_instr.h
new file mode 100644 (file)
index 0000000..45c9ec9
--- /dev/null
@@ -0,0 +1,74 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef _S390_UAPI_RUNTIME_INSTR_H
+#define _S390_UAPI_RUNTIME_INSTR_H
+
+#include <linux/types.h>
+
+#define S390_RUNTIME_INSTR_START       0x1
+#define S390_RUNTIME_INSTR_STOP                0x2
+
+struct runtime_instr_cb {
+       __u64 rca;
+       __u64 roa;
+       __u64 rla;
+
+       __u32 v                 : 1;
+       __u32 s                 : 1;
+       __u32 k                 : 1;
+       __u32 h                 : 1;
+       __u32 a                 : 1;
+       __u32 reserved1         : 3;
+       __u32 ps                : 1;
+       __u32 qs                : 1;
+       __u32 pc                : 1;
+       __u32 qc                : 1;
+       __u32 reserved2         : 1;
+       __u32 g                 : 1;
+       __u32 u                 : 1;
+       __u32 l                 : 1;
+       __u32 key               : 4;
+       __u32 reserved3         : 8;
+       __u32 t                 : 1;
+       __u32 rgs               : 3;
+
+       __u32 m                 : 4;
+       __u32 n                 : 1;
+       __u32 mae               : 1;
+       __u32 reserved4         : 2;
+       __u32 c                 : 1;
+       __u32 r                 : 1;
+       __u32 b                 : 1;
+       __u32 j                 : 1;
+       __u32 e                 : 1;
+       __u32 x                 : 1;
+       __u32 reserved5         : 2;
+       __u32 bpxn              : 1;
+       __u32 bpxt              : 1;
+       __u32 bpti              : 1;
+       __u32 bpni              : 1;
+       __u32 reserved6         : 2;
+
+       __u32 d                 : 1;
+       __u32 f                 : 1;
+       __u32 ic                : 4;
+       __u32 dc                : 4;
+
+       __u64 reserved7;
+       __u64 sf;
+       __u64 rsic;
+       __u64 reserved8;
+} __packed __aligned(8);
+
+static inline void load_runtime_instr_cb(struct runtime_instr_cb *cb)
+{
+       asm volatile(".insn     rsy,0xeb0000000060,0,0,%0"      /* LRIC */
+               : : "Q" (*cb));
+}
+
+static inline void store_runtime_instr_cb(struct runtime_instr_cb *cb)
+{
+       asm volatile(".insn     rsy,0xeb0000000061,0,0,%0"      /* STRIC */
+               : "=Q" (*cb) : : "cc");
+}
+
+#endif /* _S390_UAPI_RUNTIME_INSTR_H */