diff options
Diffstat (limited to 'arch/s390/include/asm/kvm_para.h')
-rw-r--r-- | arch/s390/include/asm/kvm_para.h | 67 |
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 | 32 | static inline long __kvm_hypercall0(unsigned long nr) | |
32 | |||
33 | static 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 | ||
43 | static inline long kvm_hypercall1(unsigned long nr, unsigned long p1) | 42 | static inline long kvm_hypercall0(unsigned long nr) |
43 | { | ||
44 | diag_stat_inc(DIAG_STAT_X500); | ||
45 | return __kvm_hypercall0(nr); | ||
46 | } | ||
47 | |||
48 | static 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 | ||
54 | static inline long kvm_hypercall2(unsigned long nr, unsigned long p1, | 59 | static 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 | |||
65 | static 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 | ||
68 | static inline long kvm_hypercall3(unsigned long nr, unsigned long p1, | 79 | static 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 | |||
86 | static 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 | ||
101 | static 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 | ||
84 | static inline long kvm_hypercall4(unsigned long nr, unsigned long p1, | 108 | static 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 | ||
101 | static inline long kvm_hypercall5(unsigned long nr, unsigned long p1, | 125 | static 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 | |||
133 | static 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 | ||
119 | static inline long kvm_hypercall6(unsigned long nr, unsigned long p1, | 151 | static 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 | |||
159 | static 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 | ||
180 | static 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 */ |
141 | static inline int kvm_para_available(void) | 190 | static inline int kvm_para_available(void) |
142 | { | 191 | { |