aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/include/asm/kvm_para.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/include/asm/kvm_para.h')
-rw-r--r--arch/s390/include/asm/kvm_para.h67
1 files changed, 58 insertions, 9 deletions
diff --git a/arch/s390/include/asm/kvm_para.h b/arch/s390/include/asm/kvm_para.h
index e0f842308a68..41393052ac57 100644
--- a/arch/s390/include/asm/kvm_para.h
+++ b/arch/s390/include/asm/kvm_para.h
@@ -27,10 +27,9 @@
27#define __S390_KVM_PARA_H 27#define __S390_KVM_PARA_H
28 28
29#include <uapi/asm/kvm_para.h> 29#include <uapi/asm/kvm_para.h>
30#include <asm/diag.h>
30 31
31 32static inline long __kvm_hypercall0(unsigned long nr)
32
33static inline long kvm_hypercall0(unsigned long nr)
34{ 33{
35 register unsigned long __nr asm("1") = nr; 34 register unsigned long __nr asm("1") = nr;
36 register long __rc asm("2"); 35 register long __rc asm("2");
@@ -40,7 +39,13 @@ static inline long kvm_hypercall0(unsigned long nr)
40 return __rc; 39 return __rc;
41} 40}
42 41
43static inline long kvm_hypercall1(unsigned long nr, unsigned long p1) 42static inline long kvm_hypercall0(unsigned long nr)
43{
44 diag_stat_inc(DIAG_STAT_X500);
45 return __kvm_hypercall0(nr);
46}
47
48static inline long __kvm_hypercall1(unsigned long nr, unsigned long p1)
44{ 49{
45 register unsigned long __nr asm("1") = nr; 50 register unsigned long __nr asm("1") = nr;
46 register unsigned long __p1 asm("2") = p1; 51 register unsigned long __p1 asm("2") = p1;
@@ -51,7 +56,13 @@ static inline long kvm_hypercall1(unsigned long nr, unsigned long p1)
51 return __rc; 56 return __rc;
52} 57}
53 58
54static inline long kvm_hypercall2(unsigned long nr, unsigned long p1, 59static inline long kvm_hypercall1(unsigned long nr, unsigned long p1)
60{
61 diag_stat_inc(DIAG_STAT_X500);
62 return __kvm_hypercall1(nr, p1);
63}
64
65static inline long __kvm_hypercall2(unsigned long nr, unsigned long p1,
55 unsigned long p2) 66 unsigned long p2)
56{ 67{
57 register unsigned long __nr asm("1") = nr; 68 register unsigned long __nr asm("1") = nr;
@@ -65,7 +76,14 @@ static inline long kvm_hypercall2(unsigned long nr, unsigned long p1,
65 return __rc; 76 return __rc;
66} 77}
67 78
68static inline long kvm_hypercall3(unsigned long nr, unsigned long p1, 79static inline long kvm_hypercall2(unsigned long nr, unsigned long p1,
80 unsigned long p2)
81{
82 diag_stat_inc(DIAG_STAT_X500);
83 return __kvm_hypercall2(nr, p1, p2);
84}
85
86static inline long __kvm_hypercall3(unsigned long nr, unsigned long p1,
69 unsigned long p2, unsigned long p3) 87 unsigned long p2, unsigned long p3)
70{ 88{
71 register unsigned long __nr asm("1") = nr; 89 register unsigned long __nr asm("1") = nr;
@@ -80,8 +98,14 @@ static inline long kvm_hypercall3(unsigned long nr, unsigned long p1,
80 return __rc; 98 return __rc;
81} 99}
82 100
101static inline long kvm_hypercall3(unsigned long nr, unsigned long p1,
102 unsigned long p2, unsigned long p3)
103{
104 diag_stat_inc(DIAG_STAT_X500);
105 return __kvm_hypercall3(nr, p1, p2, p3);
106}
83 107
84static inline long kvm_hypercall4(unsigned long nr, unsigned long p1, 108static inline long __kvm_hypercall4(unsigned long nr, unsigned long p1,
85 unsigned long p2, unsigned long p3, 109 unsigned long p2, unsigned long p3,
86 unsigned long p4) 110 unsigned long p4)
87{ 111{
@@ -98,7 +122,15 @@ static inline long kvm_hypercall4(unsigned long nr, unsigned long p1,
98 return __rc; 122 return __rc;
99} 123}
100 124
101static inline long kvm_hypercall5(unsigned long nr, unsigned long p1, 125static inline long kvm_hypercall4(unsigned long nr, unsigned long p1,
126 unsigned long p2, unsigned long p3,
127 unsigned long p4)
128{
129 diag_stat_inc(DIAG_STAT_X500);
130 return __kvm_hypercall4(nr, p1, p2, p3, p4);
131}
132
133static inline long __kvm_hypercall5(unsigned long nr, unsigned long p1,
102 unsigned long p2, unsigned long p3, 134 unsigned long p2, unsigned long p3,
103 unsigned long p4, unsigned long p5) 135 unsigned long p4, unsigned long p5)
104{ 136{
@@ -116,7 +148,15 @@ static inline long kvm_hypercall5(unsigned long nr, unsigned long p1,
116 return __rc; 148 return __rc;
117} 149}
118 150
119static inline long kvm_hypercall6(unsigned long nr, unsigned long p1, 151static inline long kvm_hypercall5(unsigned long nr, unsigned long p1,
152 unsigned long p2, unsigned long p3,
153 unsigned long p4, unsigned long p5)
154{
155 diag_stat_inc(DIAG_STAT_X500);
156 return __kvm_hypercall5(nr, p1, p2, p3, p4, p5);
157}
158
159static inline long __kvm_hypercall6(unsigned long nr, unsigned long p1,
120 unsigned long p2, unsigned long p3, 160 unsigned long p2, unsigned long p3,
121 unsigned long p4, unsigned long p5, 161 unsigned long p4, unsigned long p5,
122 unsigned long p6) 162 unsigned long p6)
@@ -137,6 +177,15 @@ static inline long kvm_hypercall6(unsigned long nr, unsigned long p1,
137 return __rc; 177 return __rc;
138} 178}
139 179
180static inline long kvm_hypercall6(unsigned long nr, unsigned long p1,
181 unsigned long p2, unsigned long p3,
182 unsigned long p4, unsigned long p5,
183 unsigned long p6)
184{
185 diag_stat_inc(DIAG_STAT_X500);
186 return __kvm_hypercall6(nr, p1, p2, p3, p4, p5, p6);
187}
188
140/* kvm on s390 is always paravirtualization enabled */ 189/* kvm on s390 is always paravirtualization enabled */
141static inline int kvm_para_available(void) 190static inline int kvm_para_available(void)
142{ 191{