diff options
Diffstat (limited to 'arch/s390/include/asm/kvm_host.h')
-rw-r--r-- | arch/s390/include/asm/kvm_host.h | 58 |
1 files changed, 25 insertions, 33 deletions
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h index eef3dd3fd9a9..2c69ba285e81 100644 --- a/arch/s390/include/asm/kvm_host.h +++ b/arch/s390/include/asm/kvm_host.h | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/hrtimer.h> | 16 | #include <linux/hrtimer.h> |
17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
18 | #include <linux/kvm_host.h> | 18 | #include <linux/kvm_host.h> |
19 | #include <linux/kvm.h> | ||
19 | #include <asm/debug.h> | 20 | #include <asm/debug.h> |
20 | #include <asm/cpu.h> | 21 | #include <asm/cpu.h> |
21 | 22 | ||
@@ -168,18 +169,6 @@ struct kvm_vcpu_stat { | |||
168 | u32 diagnose_9c; | 169 | u32 diagnose_9c; |
169 | }; | 170 | }; |
170 | 171 | ||
171 | struct kvm_s390_io_info { | ||
172 | __u16 subchannel_id; /* 0x0b8 */ | ||
173 | __u16 subchannel_nr; /* 0x0ba */ | ||
174 | __u32 io_int_parm; /* 0x0bc */ | ||
175 | __u32 io_int_word; /* 0x0c0 */ | ||
176 | }; | ||
177 | |||
178 | struct kvm_s390_ext_info { | ||
179 | __u32 ext_params; | ||
180 | __u64 ext_params2; | ||
181 | }; | ||
182 | |||
183 | #define PGM_OPERATION 0x01 | 172 | #define PGM_OPERATION 0x01 |
184 | #define PGM_PRIVILEGED_OP 0x02 | 173 | #define PGM_PRIVILEGED_OP 0x02 |
185 | #define PGM_EXECUTE 0x03 | 174 | #define PGM_EXECUTE 0x03 |
@@ -188,27 +177,6 @@ struct kvm_s390_ext_info { | |||
188 | #define PGM_SPECIFICATION 0x06 | 177 | #define PGM_SPECIFICATION 0x06 |
189 | #define PGM_DATA 0x07 | 178 | #define PGM_DATA 0x07 |
190 | 179 | ||
191 | struct kvm_s390_pgm_info { | ||
192 | __u16 code; | ||
193 | }; | ||
194 | |||
195 | struct kvm_s390_prefix_info { | ||
196 | __u32 address; | ||
197 | }; | ||
198 | |||
199 | struct kvm_s390_extcall_info { | ||
200 | __u16 code; | ||
201 | }; | ||
202 | |||
203 | struct kvm_s390_emerg_info { | ||
204 | __u16 code; | ||
205 | }; | ||
206 | |||
207 | struct kvm_s390_mchk_info { | ||
208 | __u64 cr14; | ||
209 | __u64 mcic; | ||
210 | }; | ||
211 | |||
212 | struct kvm_s390_interrupt_info { | 180 | struct kvm_s390_interrupt_info { |
213 | struct list_head list; | 181 | struct list_head list; |
214 | u64 type; | 182 | u64 type; |
@@ -246,6 +214,7 @@ struct kvm_s390_float_interrupt { | |||
246 | unsigned long idle_mask[(KVM_MAX_VCPUS + sizeof(long) - 1) | 214 | unsigned long idle_mask[(KVM_MAX_VCPUS + sizeof(long) - 1) |
247 | / sizeof(long)]; | 215 | / sizeof(long)]; |
248 | struct kvm_s390_local_interrupt *local_int[KVM_MAX_VCPUS]; | 216 | struct kvm_s390_local_interrupt *local_int[KVM_MAX_VCPUS]; |
217 | unsigned int irq_count; | ||
249 | }; | 218 | }; |
250 | 219 | ||
251 | 220 | ||
@@ -262,6 +231,10 @@ struct kvm_vcpu_arch { | |||
262 | u64 stidp_data; | 231 | u64 stidp_data; |
263 | }; | 232 | }; |
264 | struct gmap *gmap; | 233 | struct gmap *gmap; |
234 | #define KVM_S390_PFAULT_TOKEN_INVALID (-1UL) | ||
235 | unsigned long pfault_token; | ||
236 | unsigned long pfault_select; | ||
237 | unsigned long pfault_compare; | ||
265 | }; | 238 | }; |
266 | 239 | ||
267 | struct kvm_vm_stat { | 240 | struct kvm_vm_stat { |
@@ -275,6 +248,7 @@ struct kvm_arch{ | |||
275 | struct sca_block *sca; | 248 | struct sca_block *sca; |
276 | debug_info_t *dbf; | 249 | debug_info_t *dbf; |
277 | struct kvm_s390_float_interrupt float_int; | 250 | struct kvm_s390_float_interrupt float_int; |
251 | struct kvm_device *flic; | ||
278 | struct gmap *gmap; | 252 | struct gmap *gmap; |
279 | int css_support; | 253 | int css_support; |
280 | }; | 254 | }; |
@@ -287,6 +261,24 @@ static inline bool kvm_is_error_hva(unsigned long addr) | |||
287 | return IS_ERR_VALUE(addr); | 261 | return IS_ERR_VALUE(addr); |
288 | } | 262 | } |
289 | 263 | ||
264 | #define ASYNC_PF_PER_VCPU 64 | ||
265 | struct kvm_vcpu; | ||
266 | struct kvm_async_pf; | ||
267 | struct kvm_arch_async_pf { | ||
268 | unsigned long pfault_token; | ||
269 | }; | ||
270 | |||
271 | bool kvm_arch_can_inject_async_page_present(struct kvm_vcpu *vcpu); | ||
272 | |||
273 | void kvm_arch_async_page_ready(struct kvm_vcpu *vcpu, | ||
274 | struct kvm_async_pf *work); | ||
275 | |||
276 | void kvm_arch_async_page_not_present(struct kvm_vcpu *vcpu, | ||
277 | struct kvm_async_pf *work); | ||
278 | |||
279 | void kvm_arch_async_page_present(struct kvm_vcpu *vcpu, | ||
280 | struct kvm_async_pf *work); | ||
281 | |||
290 | extern int sie64a(struct kvm_s390_sie_block *, u64 *); | 282 | extern int sie64a(struct kvm_s390_sie_block *, u64 *); |
291 | extern char sie_exit; | 283 | extern char sie_exit; |
292 | #endif | 284 | #endif |