2727#define __S390_KVM_PARA_H
2828
2929#include <uapi/asm/kvm_para.h>
30+ #include <asm/diag.h>
3031
31-
32-
33- static inline long kvm_hypercall0 (unsigned long nr )
32+ static inline long __kvm_hypercall0 (unsigned long nr )
3433{
3534 register unsigned long __nr asm("1" ) = nr ;
3635 register long __rc asm("2" );
@@ -40,7 +39,13 @@ static inline long kvm_hypercall0(unsigned long nr)
4039 return __rc ;
4140}
4241
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 )
4449{
4550 register unsigned long __nr asm("1" ) = nr ;
4651 register unsigned long __p1 asm("2" ) = p1 ;
@@ -51,7 +56,13 @@ static inline long kvm_hypercall1(unsigned long nr, unsigned long p1)
5156 return __rc ;
5257}
5358
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 ,
5566 unsigned long p2 )
5667{
5768 register unsigned long __nr asm("1" ) = nr ;
@@ -65,7 +76,14 @@ static inline long kvm_hypercall2(unsigned long nr, unsigned long p1,
6576 return __rc ;
6677}
6778
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 ,
6987 unsigned long p2 , unsigned long p3 )
7088{
7189 register unsigned long __nr asm("1" ) = nr ;
@@ -80,8 +98,14 @@ static inline long kvm_hypercall3(unsigned long nr, unsigned long p1,
8098 return __rc ;
8199}
82100
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+ }
83107
84- static inline long kvm_hypercall4 (unsigned long nr , unsigned long p1 ,
108+ static inline long __kvm_hypercall4 (unsigned long nr , unsigned long p1 ,
85109 unsigned long p2 , unsigned long p3 ,
86110 unsigned long p4 )
87111{
@@ -98,7 +122,15 @@ static inline long kvm_hypercall4(unsigned long nr, unsigned long p1,
98122 return __rc ;
99123}
100124
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 ,
102134 unsigned long p2 , unsigned long p3 ,
103135 unsigned long p4 , unsigned long p5 )
104136{
@@ -116,7 +148,15 @@ static inline long kvm_hypercall5(unsigned long nr, unsigned long p1,
116148 return __rc ;
117149}
118150
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 ,
120160 unsigned long p2 , unsigned long p3 ,
121161 unsigned long p4 , unsigned long p5 ,
122162 unsigned long p6 )
@@ -137,6 +177,15 @@ static inline long kvm_hypercall6(unsigned long nr, unsigned long p1,
137177 return __rc ;
138178}
139179
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+
140189/* kvm on s390 is always paravirtualization enabled */
141190static inline int kvm_para_available (void )
142191{
0 commit comments