GNU Linux-libre 4.9.304-gnu1
[releases.git] / include / linux / kvm_host.h
1 #ifndef __KVM_HOST_H
2 #define __KVM_HOST_H
3
4 /*
5  * This work is licensed under the terms of the GNU GPL, version 2.  See
6  * the COPYING file in the top-level directory.
7  */
8
9 #include <linux/types.h>
10 #include <linux/hardirq.h>
11 #include <linux/list.h>
12 #include <linux/mutex.h>
13 #include <linux/spinlock.h>
14 #include <linux/signal.h>
15 #include <linux/sched.h>
16 #include <linux/bug.h>
17 #include <linux/mm.h>
18 #include <linux/mmu_notifier.h>
19 #include <linux/preempt.h>
20 #include <linux/msi.h>
21 #include <linux/slab.h>
22 #include <linux/rcupdate.h>
23 #include <linux/ratelimit.h>
24 #include <linux/err.h>
25 #include <linux/irqflags.h>
26 #include <linux/context_tracking.h>
27 #include <linux/irqbypass.h>
28 #include <linux/swait.h>
29 #include <linux/nospec.h>
30 #include <asm/signal.h>
31
32 #include <linux/kvm.h>
33 #include <linux/kvm_para.h>
34
35 #include <linux/kvm_types.h>
36
37 #include <asm/kvm_host.h>
38
39 #ifndef KVM_MAX_VCPU_ID
40 #define KVM_MAX_VCPU_ID KVM_MAX_VCPUS
41 #endif
42
43 /*
44  * The bit 16 ~ bit 31 of kvm_memory_region::flags are internally used
45  * in kvm, other bits are visible for userspace which are defined in
46  * include/linux/kvm_h.
47  */
48 #define KVM_MEMSLOT_INVALID     (1UL << 16)
49 #define KVM_MEMSLOT_INCOHERENT  (1UL << 17)
50
51 /* Two fragments for cross MMIO pages. */
52 #define KVM_MAX_MMIO_FRAGMENTS  2
53
54 #ifndef KVM_ADDRESS_SPACE_NUM
55 #define KVM_ADDRESS_SPACE_NUM   1
56 #endif
57
58 /*
59  * For the normal pfn, the highest 12 bits should be zero,
60  * so we can mask bit 62 ~ bit 52  to indicate the error pfn,
61  * mask bit 63 to indicate the noslot pfn.
62  */
63 #define KVM_PFN_ERR_MASK        (0x7ffULL << 52)
64 #define KVM_PFN_ERR_NOSLOT_MASK (0xfffULL << 52)
65 #define KVM_PFN_NOSLOT          (0x1ULL << 63)
66
67 #define KVM_PFN_ERR_FAULT       (KVM_PFN_ERR_MASK)
68 #define KVM_PFN_ERR_HWPOISON    (KVM_PFN_ERR_MASK + 1)
69 #define KVM_PFN_ERR_RO_FAULT    (KVM_PFN_ERR_MASK + 2)
70
71 /*
72  * error pfns indicate that the gfn is in slot but faild to
73  * translate it to pfn on host.
74  */
75 static inline bool is_error_pfn(kvm_pfn_t pfn)
76 {
77         return !!(pfn & KVM_PFN_ERR_MASK);
78 }
79
80 /*
81  * error_noslot pfns indicate that the gfn can not be
82  * translated to pfn - it is not in slot or failed to
83  * translate it to pfn.
84  */
85 static inline bool is_error_noslot_pfn(kvm_pfn_t pfn)
86 {
87         return !!(pfn & KVM_PFN_ERR_NOSLOT_MASK);
88 }
89
90 /* noslot pfn indicates that the gfn is not in slot. */
91 static inline bool is_noslot_pfn(kvm_pfn_t pfn)
92 {
93         return pfn == KVM_PFN_NOSLOT;
94 }
95
96 /*
97  * architectures with KVM_HVA_ERR_BAD other than PAGE_OFFSET (e.g. s390)
98  * provide own defines and kvm_is_error_hva
99  */
100 #ifndef KVM_HVA_ERR_BAD
101
102 #define KVM_HVA_ERR_BAD         (PAGE_OFFSET)
103 #define KVM_HVA_ERR_RO_BAD      (PAGE_OFFSET + PAGE_SIZE)
104
105 static inline bool kvm_is_error_hva(unsigned long addr)
106 {
107         return addr >= PAGE_OFFSET;
108 }
109
110 #endif
111
112 #define KVM_ERR_PTR_BAD_PAGE    (ERR_PTR(-ENOENT))
113
114 static inline bool is_error_page(struct page *page)
115 {
116         return IS_ERR(page);
117 }
118
119 /*
120  * Architecture-independent vcpu->requests bit members
121  * Bits 4-7 are reserved for more arch-independent bits.
122  */
123 #define KVM_REQ_TLB_FLUSH          0
124 #define KVM_REQ_MMU_RELOAD         1
125 #define KVM_REQ_PENDING_TIMER      2
126 #define KVM_REQ_UNHALT             3
127
128 #define KVM_USERSPACE_IRQ_SOURCE_ID             0
129 #define KVM_IRQFD_RESAMPLE_IRQ_SOURCE_ID        1
130
131 extern struct kmem_cache *kvm_vcpu_cache;
132
133 extern struct mutex kvm_lock;
134 extern struct list_head vm_list;
135
136 struct kvm_io_range {
137         gpa_t addr;
138         int len;
139         struct kvm_io_device *dev;
140 };
141
142 #define NR_IOBUS_DEVS 1000
143
144 struct kvm_io_bus {
145         int dev_count;
146         int ioeventfd_count;
147         struct kvm_io_range range[];
148 };
149
150 enum kvm_bus {
151         KVM_MMIO_BUS,
152         KVM_PIO_BUS,
153         KVM_VIRTIO_CCW_NOTIFY_BUS,
154         KVM_FAST_MMIO_BUS,
155         KVM_NR_BUSES
156 };
157
158 int kvm_io_bus_write(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr,
159                      int len, const void *val);
160 int kvm_io_bus_write_cookie(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx,
161                             gpa_t addr, int len, const void *val, long cookie);
162 int kvm_io_bus_read(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr,
163                     int len, void *val);
164 int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,
165                             int len, struct kvm_io_device *dev);
166 void kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx,
167                                struct kvm_io_device *dev);
168 struct kvm_io_device *kvm_io_bus_get_dev(struct kvm *kvm, enum kvm_bus bus_idx,
169                                          gpa_t addr);
170
171 #ifdef CONFIG_KVM_ASYNC_PF
172 struct kvm_async_pf {
173         struct work_struct work;
174         struct list_head link;
175         struct list_head queue;
176         struct kvm_vcpu *vcpu;
177         struct mm_struct *mm;
178         gva_t gva;
179         unsigned long addr;
180         struct kvm_arch_async_pf arch;
181         bool   wakeup_all;
182 };
183
184 void kvm_clear_async_pf_completion_queue(struct kvm_vcpu *vcpu);
185 void kvm_check_async_pf_completion(struct kvm_vcpu *vcpu);
186 int kvm_setup_async_pf(struct kvm_vcpu *vcpu, gva_t gva, unsigned long hva,
187                        struct kvm_arch_async_pf *arch);
188 int kvm_async_pf_wakeup_all(struct kvm_vcpu *vcpu);
189 #endif
190
191 enum {
192         OUTSIDE_GUEST_MODE,
193         IN_GUEST_MODE,
194         EXITING_GUEST_MODE,
195         READING_SHADOW_PAGE_TABLES,
196 };
197
198 /*
199  * Sometimes a large or cross-page mmio needs to be broken up into separate
200  * exits for userspace servicing.
201  */
202 struct kvm_mmio_fragment {
203         gpa_t gpa;
204         void *data;
205         unsigned len;
206 };
207
208 struct kvm_vcpu {
209         struct kvm *kvm;
210 #ifdef CONFIG_PREEMPT_NOTIFIERS
211         struct preempt_notifier preempt_notifier;
212 #endif
213         int cpu;
214         int vcpu_id;
215         int srcu_idx;
216         int mode;
217         unsigned long requests;
218         unsigned long guest_debug;
219
220         int pre_pcpu;
221         struct list_head blocked_vcpu_list;
222
223         struct mutex mutex;
224         struct kvm_run *run;
225
226         int fpu_active;
227         int guest_fpu_loaded, guest_xcr0_loaded;
228         unsigned char fpu_counter;
229         struct swait_queue_head wq;
230         struct pid *pid;
231         int sigset_active;
232         sigset_t sigset;
233         struct kvm_vcpu_stat stat;
234         unsigned int halt_poll_ns;
235         bool valid_wakeup;
236
237 #ifdef CONFIG_HAS_IOMEM
238         int mmio_needed;
239         int mmio_read_completed;
240         int mmio_is_write;
241         int mmio_cur_fragment;
242         int mmio_nr_fragments;
243         struct kvm_mmio_fragment mmio_fragments[KVM_MAX_MMIO_FRAGMENTS];
244 #endif
245
246 #ifdef CONFIG_KVM_ASYNC_PF
247         struct {
248                 u32 queued;
249                 struct list_head queue;
250                 struct list_head done;
251                 spinlock_t lock;
252         } async_pf;
253 #endif
254
255 #ifdef CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT
256         /*
257          * Cpu relax intercept or pause loop exit optimization
258          * in_spin_loop: set when a vcpu does a pause loop exit
259          *  or cpu relax intercepted.
260          * dy_eligible: indicates whether vcpu is eligible for directed yield.
261          */
262         struct {
263                 bool in_spin_loop;
264                 bool dy_eligible;
265         } spin_loop;
266 #endif
267         bool preempted;
268         struct kvm_vcpu_arch arch;
269         struct dentry *debugfs_dentry;
270 };
271
272 static inline int kvm_vcpu_exiting_guest_mode(struct kvm_vcpu *vcpu)
273 {
274         return cmpxchg(&vcpu->mode, IN_GUEST_MODE, EXITING_GUEST_MODE);
275 }
276
277 /*
278  * Some of the bitops functions do not support too long bitmaps.
279  * This number must be determined not to exceed such limits.
280  */
281 #define KVM_MEM_MAX_NR_PAGES ((1UL << 31) - 1)
282
283 struct kvm_memory_slot {
284         gfn_t base_gfn;
285         unsigned long npages;
286         unsigned long *dirty_bitmap;
287         struct kvm_arch_memory_slot arch;
288         unsigned long userspace_addr;
289         u32 flags;
290         short id;
291 };
292
293 static inline unsigned long kvm_dirty_bitmap_bytes(struct kvm_memory_slot *memslot)
294 {
295         return ALIGN(memslot->npages, BITS_PER_LONG) / 8;
296 }
297
298 struct kvm_s390_adapter_int {
299         u64 ind_addr;
300         u64 summary_addr;
301         u64 ind_offset;
302         u32 summary_offset;
303         u32 adapter_id;
304 };
305
306 struct kvm_hv_sint {
307         u32 vcpu;
308         u32 sint;
309 };
310
311 struct kvm_kernel_irq_routing_entry {
312         u32 gsi;
313         u32 type;
314         int (*set)(struct kvm_kernel_irq_routing_entry *e,
315                    struct kvm *kvm, int irq_source_id, int level,
316                    bool line_status);
317         union {
318                 struct {
319                         unsigned irqchip;
320                         unsigned pin;
321                 } irqchip;
322                 struct {
323                         u32 address_lo;
324                         u32 address_hi;
325                         u32 data;
326                         u32 flags;
327                         u32 devid;
328                 } msi;
329                 struct kvm_s390_adapter_int adapter;
330                 struct kvm_hv_sint hv_sint;
331         };
332         struct hlist_node link;
333 };
334
335 #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
336 struct kvm_irq_routing_table {
337         int chip[KVM_NR_IRQCHIPS][KVM_IRQCHIP_NUM_PINS];
338         u32 nr_rt_entries;
339         /*
340          * Array indexed by gsi. Each entry contains list of irq chips
341          * the gsi is connected to.
342          */
343         struct hlist_head map[0];
344 };
345 #endif
346
347 #ifndef KVM_PRIVATE_MEM_SLOTS
348 #define KVM_PRIVATE_MEM_SLOTS 0
349 #endif
350
351 #ifndef KVM_MEM_SLOTS_NUM
352 #define KVM_MEM_SLOTS_NUM (KVM_USER_MEM_SLOTS + KVM_PRIVATE_MEM_SLOTS)
353 #endif
354
355 #ifndef __KVM_VCPU_MULTIPLE_ADDRESS_SPACE
356 static inline int kvm_arch_vcpu_memslots_id(struct kvm_vcpu *vcpu)
357 {
358         return 0;
359 }
360 #endif
361
362 /*
363  * Note:
364  * memslots are not sorted by id anymore, please use id_to_memslot()
365  * to get the memslot by its id.
366  */
367 struct kvm_memslots {
368         u64 generation;
369         struct kvm_memory_slot memslots[KVM_MEM_SLOTS_NUM];
370         /* The mapping table from slot id to the index in memslots[]. */
371         short id_to_index[KVM_MEM_SLOTS_NUM];
372         atomic_t lru_slot;
373         int used_slots;
374 };
375
376 struct kvm {
377         spinlock_t mmu_lock;
378         struct mutex slots_lock;
379         struct mm_struct *mm; /* userspace tied to this vm */
380         struct kvm_memslots *memslots[KVM_ADDRESS_SPACE_NUM];
381         struct srcu_struct srcu;
382         struct srcu_struct irq_srcu;
383         struct kvm_vcpu *vcpus[KVM_MAX_VCPUS];
384
385         /*
386          * created_vcpus is protected by kvm->lock, and is incremented
387          * at the beginning of KVM_CREATE_VCPU.  online_vcpus is only
388          * incremented after storing the kvm_vcpu pointer in vcpus,
389          * and is accessed atomically.
390          */
391         atomic_t online_vcpus;
392         int created_vcpus;
393         int last_boosted_vcpu;
394         struct list_head vm_list;
395         struct mutex lock;
396         struct kvm_io_bus *buses[KVM_NR_BUSES];
397 #ifdef CONFIG_HAVE_KVM_EVENTFD
398         struct {
399                 spinlock_t        lock;
400                 struct list_head  items;
401                 struct list_head  resampler_list;
402                 struct mutex      resampler_lock;
403         } irqfds;
404         struct list_head ioeventfds;
405 #endif
406         struct kvm_vm_stat stat;
407         struct kvm_arch arch;
408         atomic_t users_count;
409 #ifdef KVM_COALESCED_MMIO_PAGE_OFFSET
410         struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
411         spinlock_t ring_lock;
412         struct list_head coalesced_zones;
413 #endif
414
415         struct mutex irq_lock;
416 #ifdef CONFIG_HAVE_KVM_IRQCHIP
417         /*
418          * Update side is protected by irq_lock.
419          */
420         struct kvm_irq_routing_table __rcu *irq_routing;
421 #endif
422 #ifdef CONFIG_HAVE_KVM_IRQFD
423         struct hlist_head irq_ack_notifier_list;
424 #endif
425
426 #if defined(CONFIG_MMU_NOTIFIER) && defined(KVM_ARCH_WANT_MMU_NOTIFIER)
427         struct mmu_notifier mmu_notifier;
428         unsigned long mmu_notifier_seq;
429         long mmu_notifier_count;
430 #endif
431         long tlbs_dirty;
432         struct list_head devices;
433         struct dentry *debugfs_dentry;
434         struct kvm_stat_data **debugfs_stat_data;
435 };
436
437 #define kvm_err(fmt, ...) \
438         pr_err("kvm [%i]: " fmt, task_pid_nr(current), ## __VA_ARGS__)
439 #define kvm_info(fmt, ...) \
440         pr_info("kvm [%i]: " fmt, task_pid_nr(current), ## __VA_ARGS__)
441 #define kvm_debug(fmt, ...) \
442         pr_debug("kvm [%i]: " fmt, task_pid_nr(current), ## __VA_ARGS__)
443 #define kvm_pr_unimpl(fmt, ...) \
444         pr_err_ratelimited("kvm [%i]: " fmt, \
445                            task_tgid_nr(current), ## __VA_ARGS__)
446
447 /* The guest did something we don't support. */
448 #define vcpu_unimpl(vcpu, fmt, ...)                                     \
449         kvm_pr_unimpl("vcpu%i, guest rIP: 0x%lx " fmt,                  \
450                         (vcpu)->vcpu_id, kvm_rip_read(vcpu), ## __VA_ARGS__)
451
452 #define vcpu_debug(vcpu, fmt, ...)                                      \
453         kvm_debug("vcpu%i " fmt, (vcpu)->vcpu_id, ## __VA_ARGS__)
454 #define vcpu_err(vcpu, fmt, ...)                                        \
455         kvm_err("vcpu%i " fmt, (vcpu)->vcpu_id, ## __VA_ARGS__)
456
457 static inline struct kvm_vcpu *kvm_get_vcpu(struct kvm *kvm, int i)
458 {
459         /* Pairs with smp_wmb() in kvm_vm_ioctl_create_vcpu, in case
460          * the caller has read kvm->online_vcpus before (as is the case
461          * for kvm_for_each_vcpu, for example).
462          */
463         smp_rmb();
464         return kvm->vcpus[i];
465 }
466
467 #define kvm_for_each_vcpu(idx, vcpup, kvm) \
468         for (idx = 0; \
469              idx < atomic_read(&kvm->online_vcpus) && \
470              (vcpup = kvm_get_vcpu(kvm, idx)) != NULL; \
471              idx++)
472
473 static inline struct kvm_vcpu *kvm_get_vcpu_by_id(struct kvm *kvm, int id)
474 {
475         struct kvm_vcpu *vcpu = NULL;
476         int i;
477
478         if (id < 0)
479                 return NULL;
480         if (id < KVM_MAX_VCPUS)
481                 vcpu = kvm_get_vcpu(kvm, id);
482         if (vcpu && vcpu->vcpu_id == id)
483                 return vcpu;
484         kvm_for_each_vcpu(i, vcpu, kvm)
485                 if (vcpu->vcpu_id == id)
486                         return vcpu;
487         return NULL;
488 }
489
490 #define kvm_for_each_memslot(memslot, slots)    \
491         for (memslot = &slots->memslots[0];     \
492               memslot < slots->memslots + KVM_MEM_SLOTS_NUM && memslot->npages;\
493                 memslot++)
494
495 int kvm_vcpu_init(struct kvm_vcpu *vcpu, struct kvm *kvm, unsigned id);
496 void kvm_vcpu_uninit(struct kvm_vcpu *vcpu);
497
498 int __must_check vcpu_load(struct kvm_vcpu *vcpu);
499 void vcpu_put(struct kvm_vcpu *vcpu);
500
501 #ifdef __KVM_HAVE_IOAPIC
502 void kvm_vcpu_request_scan_ioapic(struct kvm *kvm);
503 void kvm_arch_post_irq_routing_update(struct kvm *kvm);
504 #else
505 static inline void kvm_vcpu_request_scan_ioapic(struct kvm *kvm)
506 {
507 }
508 static inline void kvm_arch_post_irq_routing_update(struct kvm *kvm)
509 {
510 }
511 #endif
512
513 #ifdef CONFIG_HAVE_KVM_IRQFD
514 int kvm_irqfd_init(void);
515 void kvm_irqfd_exit(void);
516 #else
517 static inline int kvm_irqfd_init(void)
518 {
519         return 0;
520 }
521
522 static inline void kvm_irqfd_exit(void)
523 {
524 }
525 #endif
526 int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
527                   struct module *module);
528 void kvm_exit(void);
529
530 void kvm_get_kvm(struct kvm *kvm);
531 void kvm_put_kvm(struct kvm *kvm);
532
533 static inline struct kvm_memslots *__kvm_memslots(struct kvm *kvm, int as_id)
534 {
535         return rcu_dereference_check(kvm->memslots[as_id],
536                         srcu_read_lock_held(&kvm->srcu)
537                         || lockdep_is_held(&kvm->slots_lock));
538 }
539
540 static inline struct kvm_memslots *kvm_memslots(struct kvm *kvm)
541 {
542         return __kvm_memslots(kvm, 0);
543 }
544
545 static inline struct kvm_memslots *kvm_vcpu_memslots(struct kvm_vcpu *vcpu)
546 {
547         int as_id = kvm_arch_vcpu_memslots_id(vcpu);
548
549         return __kvm_memslots(vcpu->kvm, as_id);
550 }
551
552 static inline struct kvm_memory_slot *
553 id_to_memslot(struct kvm_memslots *slots, int id)
554 {
555         int index = slots->id_to_index[id];
556         struct kvm_memory_slot *slot;
557
558         slot = &slots->memslots[index];
559
560         WARN_ON(slot->id != id);
561         return slot;
562 }
563
564 /*
565  * KVM_SET_USER_MEMORY_REGION ioctl allows the following operations:
566  * - create a new memory slot
567  * - delete an existing memory slot
568  * - modify an existing memory slot
569  *   -- move it in the guest physical memory space
570  *   -- just change its flags
571  *
572  * Since flags can be changed by some of these operations, the following
573  * differentiation is the best we can do for __kvm_set_memory_region():
574  */
575 enum kvm_mr_change {
576         KVM_MR_CREATE,
577         KVM_MR_DELETE,
578         KVM_MR_MOVE,
579         KVM_MR_FLAGS_ONLY,
580 };
581
582 int kvm_set_memory_region(struct kvm *kvm,
583                           const struct kvm_userspace_memory_region *mem);
584 int __kvm_set_memory_region(struct kvm *kvm,
585                             const struct kvm_userspace_memory_region *mem);
586 void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free,
587                            struct kvm_memory_slot *dont);
588 int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
589                             unsigned long npages);
590 void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots);
591 int kvm_arch_prepare_memory_region(struct kvm *kvm,
592                                 struct kvm_memory_slot *memslot,
593                                 const struct kvm_userspace_memory_region *mem,
594                                 enum kvm_mr_change change);
595 void kvm_arch_commit_memory_region(struct kvm *kvm,
596                                 const struct kvm_userspace_memory_region *mem,
597                                 const struct kvm_memory_slot *old,
598                                 const struct kvm_memory_slot *new,
599                                 enum kvm_mr_change change);
600 bool kvm_largepages_enabled(void);
601 void kvm_disable_largepages(void);
602 /* flush all memory translations */
603 void kvm_arch_flush_shadow_all(struct kvm *kvm);
604 /* flush memory translations pointing to 'slot' */
605 void kvm_arch_flush_shadow_memslot(struct kvm *kvm,
606                                    struct kvm_memory_slot *slot);
607
608 int gfn_to_page_many_atomic(struct kvm_memory_slot *slot, gfn_t gfn,
609                             struct page **pages, int nr_pages);
610
611 struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn);
612 unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn);
613 unsigned long gfn_to_hva_prot(struct kvm *kvm, gfn_t gfn, bool *writable);
614 unsigned long gfn_to_hva_memslot(struct kvm_memory_slot *slot, gfn_t gfn);
615 unsigned long gfn_to_hva_memslot_prot(struct kvm_memory_slot *slot, gfn_t gfn,
616                                       bool *writable);
617 void kvm_release_page_clean(struct page *page);
618 void kvm_release_page_dirty(struct page *page);
619 void kvm_set_page_accessed(struct page *page);
620
621 kvm_pfn_t gfn_to_pfn_atomic(struct kvm *kvm, gfn_t gfn);
622 kvm_pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn);
623 kvm_pfn_t gfn_to_pfn_prot(struct kvm *kvm, gfn_t gfn, bool write_fault,
624                       bool *writable);
625 kvm_pfn_t gfn_to_pfn_memslot(struct kvm_memory_slot *slot, gfn_t gfn);
626 kvm_pfn_t gfn_to_pfn_memslot_atomic(struct kvm_memory_slot *slot, gfn_t gfn);
627 kvm_pfn_t __gfn_to_pfn_memslot(struct kvm_memory_slot *slot, gfn_t gfn,
628                                bool atomic, bool *async, bool write_fault,
629                                bool *writable);
630
631 void kvm_release_pfn_clean(kvm_pfn_t pfn);
632 void kvm_set_pfn_dirty(kvm_pfn_t pfn);
633 void kvm_set_pfn_accessed(kvm_pfn_t pfn);
634 void kvm_get_pfn(kvm_pfn_t pfn);
635
636 int kvm_read_guest_page(struct kvm *kvm, gfn_t gfn, void *data, int offset,
637                         int len);
638 int kvm_read_guest_atomic(struct kvm *kvm, gpa_t gpa, void *data,
639                           unsigned long len);
640 int kvm_read_guest(struct kvm *kvm, gpa_t gpa, void *data, unsigned long len);
641 int kvm_read_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc,
642                            void *data, unsigned long len);
643 int kvm_write_guest_page(struct kvm *kvm, gfn_t gfn, const void *data,
644                          int offset, int len);
645 int kvm_write_guest(struct kvm *kvm, gpa_t gpa, const void *data,
646                     unsigned long len);
647 int kvm_write_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc,
648                            void *data, unsigned long len);
649 int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc,
650                               gpa_t gpa, unsigned long len);
651 int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len);
652 int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len);
653 struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn);
654 bool kvm_is_visible_gfn(struct kvm *kvm, gfn_t gfn);
655 unsigned long kvm_host_page_size(struct kvm *kvm, gfn_t gfn);
656 void mark_page_dirty(struct kvm *kvm, gfn_t gfn);
657
658 struct kvm_memslots *kvm_vcpu_memslots(struct kvm_vcpu *vcpu);
659 struct kvm_memory_slot *kvm_vcpu_gfn_to_memslot(struct kvm_vcpu *vcpu, gfn_t gfn);
660 kvm_pfn_t kvm_vcpu_gfn_to_pfn_atomic(struct kvm_vcpu *vcpu, gfn_t gfn);
661 kvm_pfn_t kvm_vcpu_gfn_to_pfn(struct kvm_vcpu *vcpu, gfn_t gfn);
662 struct page *kvm_vcpu_gfn_to_page(struct kvm_vcpu *vcpu, gfn_t gfn);
663 unsigned long kvm_vcpu_gfn_to_hva(struct kvm_vcpu *vcpu, gfn_t gfn);
664 unsigned long kvm_vcpu_gfn_to_hva_prot(struct kvm_vcpu *vcpu, gfn_t gfn, bool *writable);
665 int kvm_vcpu_read_guest_page(struct kvm_vcpu *vcpu, gfn_t gfn, void *data, int offset,
666                              int len);
667 int kvm_vcpu_read_guest_atomic(struct kvm_vcpu *vcpu, gpa_t gpa, void *data,
668                                unsigned long len);
669 int kvm_vcpu_read_guest(struct kvm_vcpu *vcpu, gpa_t gpa, void *data,
670                         unsigned long len);
671 int kvm_vcpu_write_guest_page(struct kvm_vcpu *vcpu, gfn_t gfn, const void *data,
672                               int offset, int len);
673 int kvm_vcpu_write_guest(struct kvm_vcpu *vcpu, gpa_t gpa, const void *data,
674                          unsigned long len);
675 void kvm_vcpu_mark_page_dirty(struct kvm_vcpu *vcpu, gfn_t gfn);
676
677 void kvm_vcpu_block(struct kvm_vcpu *vcpu);
678 void kvm_arch_vcpu_blocking(struct kvm_vcpu *vcpu);
679 void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu);
680 void kvm_vcpu_wake_up(struct kvm_vcpu *vcpu);
681 void kvm_vcpu_kick(struct kvm_vcpu *vcpu);
682 int kvm_vcpu_yield_to(struct kvm_vcpu *target);
683 void kvm_vcpu_on_spin(struct kvm_vcpu *vcpu);
684 void kvm_load_guest_fpu(struct kvm_vcpu *vcpu);
685 void kvm_put_guest_fpu(struct kvm_vcpu *vcpu);
686
687 void kvm_flush_remote_tlbs(struct kvm *kvm);
688 void kvm_reload_remote_mmus(struct kvm *kvm);
689 bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req);
690
691 long kvm_arch_dev_ioctl(struct file *filp,
692                         unsigned int ioctl, unsigned long arg);
693 long kvm_arch_vcpu_ioctl(struct file *filp,
694                          unsigned int ioctl, unsigned long arg);
695 int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf);
696
697 int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext);
698
699 int kvm_get_dirty_log(struct kvm *kvm,
700                         struct kvm_dirty_log *log, int *is_dirty);
701
702 int kvm_get_dirty_log_protect(struct kvm *kvm,
703                         struct kvm_dirty_log *log, bool *is_dirty);
704
705 void kvm_arch_mmu_enable_log_dirty_pt_masked(struct kvm *kvm,
706                                         struct kvm_memory_slot *slot,
707                                         gfn_t gfn_offset,
708                                         unsigned long mask);
709
710 int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
711                                 struct kvm_dirty_log *log);
712
713 int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level,
714                         bool line_status);
715 long kvm_arch_vm_ioctl(struct file *filp,
716                        unsigned int ioctl, unsigned long arg);
717
718 int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu);
719 int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu);
720
721 int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
722                                     struct kvm_translation *tr);
723
724 int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs);
725 int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs);
726 int kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu,
727                                   struct kvm_sregs *sregs);
728 int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu,
729                                   struct kvm_sregs *sregs);
730 int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu,
731                                     struct kvm_mp_state *mp_state);
732 int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,
733                                     struct kvm_mp_state *mp_state);
734 int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
735                                         struct kvm_guest_debug *dbg);
736 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
737
738 int kvm_arch_init(void *opaque);
739 void kvm_arch_exit(void);
740
741 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
742 void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu);
743
744 void kvm_arch_sched_in(struct kvm_vcpu *vcpu, int cpu);
745
746 void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu);
747 void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
748 void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu);
749 struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, unsigned int id);
750 int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu);
751 void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu);
752 void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu);
753
754 bool kvm_arch_has_vcpu_debugfs(void);
755 int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu);
756
757 int kvm_arch_hardware_enable(void);
758 void kvm_arch_hardware_disable(void);
759 int kvm_arch_hardware_setup(void);
760 void kvm_arch_hardware_unsetup(void);
761 void kvm_arch_check_processor_compat(void *rtn);
762 int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu);
763 int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu);
764
765 void *kvm_kvzalloc(unsigned long size);
766
767 #ifndef __KVM_HAVE_ARCH_VM_ALLOC
768 static inline struct kvm *kvm_arch_alloc_vm(void)
769 {
770         return kzalloc(sizeof(struct kvm), GFP_KERNEL);
771 }
772
773 static inline void kvm_arch_free_vm(struct kvm *kvm)
774 {
775         kfree(kvm);
776 }
777 #endif
778
779 #ifdef __KVM_HAVE_ARCH_NONCOHERENT_DMA
780 void kvm_arch_register_noncoherent_dma(struct kvm *kvm);
781 void kvm_arch_unregister_noncoherent_dma(struct kvm *kvm);
782 bool kvm_arch_has_noncoherent_dma(struct kvm *kvm);
783 #else
784 static inline void kvm_arch_register_noncoherent_dma(struct kvm *kvm)
785 {
786 }
787
788 static inline void kvm_arch_unregister_noncoherent_dma(struct kvm *kvm)
789 {
790 }
791
792 static inline bool kvm_arch_has_noncoherent_dma(struct kvm *kvm)
793 {
794         return false;
795 }
796 #endif
797 #ifdef __KVM_HAVE_ARCH_ASSIGNED_DEVICE
798 void kvm_arch_start_assignment(struct kvm *kvm);
799 void kvm_arch_end_assignment(struct kvm *kvm);
800 bool kvm_arch_has_assigned_device(struct kvm *kvm);
801 #else
802 static inline void kvm_arch_start_assignment(struct kvm *kvm)
803 {
804 }
805
806 static inline void kvm_arch_end_assignment(struct kvm *kvm)
807 {
808 }
809
810 static inline bool kvm_arch_has_assigned_device(struct kvm *kvm)
811 {
812         return false;
813 }
814 #endif
815
816 static inline struct swait_queue_head *kvm_arch_vcpu_wq(struct kvm_vcpu *vcpu)
817 {
818 #ifdef __KVM_HAVE_ARCH_WQP
819         return vcpu->arch.wqp;
820 #else
821         return &vcpu->wq;
822 #endif
823 }
824
825 #ifdef __KVM_HAVE_ARCH_INTC_INITIALIZED
826 /*
827  * returns true if the virtual interrupt controller is initialized and
828  * ready to accept virtual IRQ. On some architectures the virtual interrupt
829  * controller is dynamically instantiated and this is not always true.
830  */
831 bool kvm_arch_intc_initialized(struct kvm *kvm);
832 #else
833 static inline bool kvm_arch_intc_initialized(struct kvm *kvm)
834 {
835         return true;
836 }
837 #endif
838
839 int kvm_arch_init_vm(struct kvm *kvm, unsigned long type);
840 void kvm_arch_destroy_vm(struct kvm *kvm);
841 void kvm_arch_sync_events(struct kvm *kvm);
842
843 int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu);
844 void kvm_vcpu_kick(struct kvm_vcpu *vcpu);
845
846 bool kvm_is_reserved_pfn(kvm_pfn_t pfn);
847 bool kvm_is_zone_device_pfn(kvm_pfn_t pfn);
848
849 struct kvm_irq_ack_notifier {
850         struct hlist_node link;
851         unsigned gsi;
852         void (*irq_acked)(struct kvm_irq_ack_notifier *kian);
853 };
854
855 int kvm_irq_map_gsi(struct kvm *kvm,
856                     struct kvm_kernel_irq_routing_entry *entries, int gsi);
857 int kvm_irq_map_chip_pin(struct kvm *kvm, unsigned irqchip, unsigned pin);
858
859 int kvm_set_irq(struct kvm *kvm, int irq_source_id, u32 irq, int level,
860                 bool line_status);
861 int kvm_set_msi(struct kvm_kernel_irq_routing_entry *irq_entry, struct kvm *kvm,
862                 int irq_source_id, int level, bool line_status);
863 int kvm_arch_set_irq_inatomic(struct kvm_kernel_irq_routing_entry *e,
864                                struct kvm *kvm, int irq_source_id,
865                                int level, bool line_status);
866 bool kvm_irq_has_notifier(struct kvm *kvm, unsigned irqchip, unsigned pin);
867 void kvm_notify_acked_gsi(struct kvm *kvm, int gsi);
868 void kvm_notify_acked_irq(struct kvm *kvm, unsigned irqchip, unsigned pin);
869 void kvm_register_irq_ack_notifier(struct kvm *kvm,
870                                    struct kvm_irq_ack_notifier *kian);
871 void kvm_unregister_irq_ack_notifier(struct kvm *kvm,
872                                    struct kvm_irq_ack_notifier *kian);
873 int kvm_request_irq_source_id(struct kvm *kvm);
874 void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id);
875
876 #ifdef CONFIG_KVM_DEVICE_ASSIGNMENT
877 int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
878 void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
879 #else
880 static inline int kvm_iommu_map_pages(struct kvm *kvm,
881                                       struct kvm_memory_slot *slot)
882 {
883         return 0;
884 }
885
886 static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
887                                          struct kvm_memory_slot *slot)
888 {
889 }
890 #endif
891
892 /*
893  * search_memslots() and __gfn_to_memslot() are here because they are
894  * used in non-modular code in arch/powerpc/kvm/book3s_hv_rm_mmu.c.
895  * gfn_to_memslot() itself isn't here as an inline because that would
896  * bloat other code too much.
897  */
898 static inline struct kvm_memory_slot *
899 search_memslots(struct kvm_memslots *slots, gfn_t gfn)
900 {
901         int start = 0, end = slots->used_slots;
902         int slot = atomic_read(&slots->lru_slot);
903         struct kvm_memory_slot *memslots = slots->memslots;
904
905         if (gfn >= memslots[slot].base_gfn &&
906             gfn < memslots[slot].base_gfn + memslots[slot].npages)
907                 return &memslots[slot];
908
909         while (start < end) {
910                 slot = start + (end - start) / 2;
911
912                 if (gfn >= memslots[slot].base_gfn)
913                         end = slot;
914                 else
915                         start = slot + 1;
916         }
917
918         if (start < slots->used_slots && gfn >= memslots[start].base_gfn &&
919             gfn < memslots[start].base_gfn + memslots[start].npages) {
920                 atomic_set(&slots->lru_slot, start);
921                 return &memslots[start];
922         }
923
924         return NULL;
925 }
926
927 static inline struct kvm_memory_slot *
928 __gfn_to_memslot(struct kvm_memslots *slots, gfn_t gfn)
929 {
930         return search_memslots(slots, gfn);
931 }
932
933 static inline unsigned long
934 __gfn_to_hva_memslot(struct kvm_memory_slot *slot, gfn_t gfn)
935 {
936         /*
937          * The index was checked originally in search_memslots.  To avoid
938          * that a malicious guest builds a Spectre gadget out of e.g. page
939          * table walks, do not let the processor speculate loads outside
940          * the guest's registered memslots.
941          */
942         unsigned long offset = gfn - slot->base_gfn;
943         offset = array_index_nospec(offset, slot->npages);
944         return slot->userspace_addr + offset * PAGE_SIZE;
945 }
946
947 static inline int memslot_id(struct kvm *kvm, gfn_t gfn)
948 {
949         return gfn_to_memslot(kvm, gfn)->id;
950 }
951
952 static inline gfn_t
953 hva_to_gfn_memslot(unsigned long hva, struct kvm_memory_slot *slot)
954 {
955         gfn_t gfn_offset = (hva - slot->userspace_addr) >> PAGE_SHIFT;
956
957         return slot->base_gfn + gfn_offset;
958 }
959
960 static inline gpa_t gfn_to_gpa(gfn_t gfn)
961 {
962         return (gpa_t)gfn << PAGE_SHIFT;
963 }
964
965 static inline gfn_t gpa_to_gfn(gpa_t gpa)
966 {
967         return (gfn_t)(gpa >> PAGE_SHIFT);
968 }
969
970 static inline hpa_t pfn_to_hpa(kvm_pfn_t pfn)
971 {
972         return (hpa_t)pfn << PAGE_SHIFT;
973 }
974
975 static inline bool kvm_is_error_gpa(struct kvm *kvm, gpa_t gpa)
976 {
977         unsigned long hva = gfn_to_hva(kvm, gpa_to_gfn(gpa));
978
979         return kvm_is_error_hva(hva);
980 }
981
982 enum kvm_stat_kind {
983         KVM_STAT_VM,
984         KVM_STAT_VCPU,
985 };
986
987 struct kvm_stat_data {
988         int offset;
989         struct kvm *kvm;
990 };
991
992 struct kvm_stats_debugfs_item {
993         const char *name;
994         int offset;
995         enum kvm_stat_kind kind;
996 };
997 extern struct kvm_stats_debugfs_item debugfs_entries[];
998 extern struct dentry *kvm_debugfs_dir;
999
1000 #if defined(CONFIG_MMU_NOTIFIER) && defined(KVM_ARCH_WANT_MMU_NOTIFIER)
1001 static inline int mmu_notifier_retry(struct kvm *kvm, unsigned long mmu_seq)
1002 {
1003         if (unlikely(kvm->mmu_notifier_count))
1004                 return 1;
1005         /*
1006          * Ensure the read of mmu_notifier_count happens before the read
1007          * of mmu_notifier_seq.  This interacts with the smp_wmb() in
1008          * mmu_notifier_invalidate_range_end to make sure that the caller
1009          * either sees the old (non-zero) value of mmu_notifier_count or
1010          * the new (incremented) value of mmu_notifier_seq.
1011          * PowerPC Book3s HV KVM calls this under a per-page lock
1012          * rather than under kvm->mmu_lock, for scalability, so
1013          * can't rely on kvm->mmu_lock to keep things ordered.
1014          */
1015         smp_rmb();
1016         if (kvm->mmu_notifier_seq != mmu_seq)
1017                 return 1;
1018         return 0;
1019 }
1020 #endif
1021
1022 #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
1023
1024 #ifdef CONFIG_S390
1025 #define KVM_MAX_IRQ_ROUTES 4096 //FIXME: we can have more than that...
1026 #elif defined(CONFIG_ARM64)
1027 #define KVM_MAX_IRQ_ROUTES 4096
1028 #else
1029 #define KVM_MAX_IRQ_ROUTES 1024
1030 #endif
1031
1032 int kvm_set_irq_routing(struct kvm *kvm,
1033                         const struct kvm_irq_routing_entry *entries,
1034                         unsigned nr,
1035                         unsigned flags);
1036 int kvm_set_routing_entry(struct kvm *kvm,
1037                           struct kvm_kernel_irq_routing_entry *e,
1038                           const struct kvm_irq_routing_entry *ue);
1039 void kvm_free_irq_routing(struct kvm *kvm);
1040
1041 #else
1042
1043 static inline void kvm_free_irq_routing(struct kvm *kvm) {}
1044
1045 #endif
1046
1047 int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi);
1048
1049 #ifdef CONFIG_HAVE_KVM_EVENTFD
1050
1051 void kvm_eventfd_init(struct kvm *kvm);
1052 int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args);
1053
1054 #ifdef CONFIG_HAVE_KVM_IRQFD
1055 int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args);
1056 void kvm_irqfd_release(struct kvm *kvm);
1057 void kvm_irq_routing_update(struct kvm *);
1058 #else
1059 static inline int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args)
1060 {
1061         return -EINVAL;
1062 }
1063
1064 static inline void kvm_irqfd_release(struct kvm *kvm) {}
1065 #endif
1066
1067 #else
1068
1069 static inline void kvm_eventfd_init(struct kvm *kvm) {}
1070
1071 static inline int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args)
1072 {
1073         return -EINVAL;
1074 }
1075
1076 static inline void kvm_irqfd_release(struct kvm *kvm) {}
1077
1078 #ifdef CONFIG_HAVE_KVM_IRQCHIP
1079 static inline void kvm_irq_routing_update(struct kvm *kvm)
1080 {
1081 }
1082 #endif
1083
1084 static inline int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args)
1085 {
1086         return -ENOSYS;
1087 }
1088
1089 #endif /* CONFIG_HAVE_KVM_EVENTFD */
1090
1091 void kvm_arch_irq_routing_update(struct kvm *kvm);
1092
1093 static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu)
1094 {
1095         /*
1096          * Ensure the rest of the request is published to kvm_check_request's
1097          * caller.  Paired with the smp_mb__after_atomic in kvm_check_request.
1098          */
1099         smp_wmb();
1100         set_bit(req, &vcpu->requests);
1101 }
1102
1103 static inline bool kvm_check_request(int req, struct kvm_vcpu *vcpu)
1104 {
1105         if (test_bit(req, &vcpu->requests)) {
1106                 clear_bit(req, &vcpu->requests);
1107
1108                 /*
1109                  * Ensure the rest of the request is visible to kvm_check_request's
1110                  * caller.  Paired with the smp_wmb in kvm_make_request.
1111                  */
1112                 smp_mb__after_atomic();
1113                 return true;
1114         } else {
1115                 return false;
1116         }
1117 }
1118
1119 extern bool kvm_rebooting;
1120
1121 struct kvm_device {
1122         struct kvm_device_ops *ops;
1123         struct kvm *kvm;
1124         void *private;
1125         struct list_head vm_node;
1126 };
1127
1128 /* create, destroy, and name are mandatory */
1129 struct kvm_device_ops {
1130         const char *name;
1131
1132         /*
1133          * create is called holding kvm->lock and any operations not suitable
1134          * to do while holding the lock should be deferred to init (see
1135          * below).
1136          */
1137         int (*create)(struct kvm_device *dev, u32 type);
1138
1139         /*
1140          * init is called after create if create is successful and is called
1141          * outside of holding kvm->lock.
1142          */
1143         void (*init)(struct kvm_device *dev);
1144
1145         /*
1146          * Destroy is responsible for freeing dev.
1147          *
1148          * Destroy may be called before or after destructors are called
1149          * on emulated I/O regions, depending on whether a reference is
1150          * held by a vcpu or other kvm component that gets destroyed
1151          * after the emulated I/O.
1152          */
1153         void (*destroy)(struct kvm_device *dev);
1154
1155         int (*set_attr)(struct kvm_device *dev, struct kvm_device_attr *attr);
1156         int (*get_attr)(struct kvm_device *dev, struct kvm_device_attr *attr);
1157         int (*has_attr)(struct kvm_device *dev, struct kvm_device_attr *attr);
1158         long (*ioctl)(struct kvm_device *dev, unsigned int ioctl,
1159                       unsigned long arg);
1160 };
1161
1162 void kvm_device_get(struct kvm_device *dev);
1163 void kvm_device_put(struct kvm_device *dev);
1164 struct kvm_device *kvm_device_from_filp(struct file *filp);
1165 int kvm_register_device_ops(struct kvm_device_ops *ops, u32 type);
1166 void kvm_unregister_device_ops(u32 type);
1167
1168 extern struct kvm_device_ops kvm_mpic_ops;
1169 extern struct kvm_device_ops kvm_xics_ops;
1170 extern struct kvm_device_ops kvm_arm_vgic_v2_ops;
1171 extern struct kvm_device_ops kvm_arm_vgic_v3_ops;
1172
1173 #ifdef CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT
1174
1175 static inline void kvm_vcpu_set_in_spin_loop(struct kvm_vcpu *vcpu, bool val)
1176 {
1177         vcpu->spin_loop.in_spin_loop = val;
1178 }
1179 static inline void kvm_vcpu_set_dy_eligible(struct kvm_vcpu *vcpu, bool val)
1180 {
1181         vcpu->spin_loop.dy_eligible = val;
1182 }
1183
1184 #else /* !CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */
1185
1186 static inline void kvm_vcpu_set_in_spin_loop(struct kvm_vcpu *vcpu, bool val)
1187 {
1188 }
1189
1190 static inline void kvm_vcpu_set_dy_eligible(struct kvm_vcpu *vcpu, bool val)
1191 {
1192 }
1193 #endif /* CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */
1194
1195 #ifdef CONFIG_HAVE_KVM_IRQ_BYPASS
1196 bool kvm_arch_has_irq_bypass(void);
1197 int kvm_arch_irq_bypass_add_producer(struct irq_bypass_consumer *,
1198                            struct irq_bypass_producer *);
1199 void kvm_arch_irq_bypass_del_producer(struct irq_bypass_consumer *,
1200                            struct irq_bypass_producer *);
1201 void kvm_arch_irq_bypass_stop(struct irq_bypass_consumer *);
1202 void kvm_arch_irq_bypass_start(struct irq_bypass_consumer *);
1203 int kvm_arch_update_irqfd_routing(struct kvm *kvm, unsigned int host_irq,
1204                                   uint32_t guest_irq, bool set);
1205 #endif /* CONFIG_HAVE_KVM_IRQ_BYPASS */
1206
1207 #ifdef CONFIG_HAVE_KVM_INVALID_WAKEUPS
1208 /* If we wakeup during the poll time, was it a sucessful poll? */
1209 static inline bool vcpu_valid_wakeup(struct kvm_vcpu *vcpu)
1210 {
1211         return vcpu->valid_wakeup;
1212 }
1213
1214 #else
1215 static inline bool vcpu_valid_wakeup(struct kvm_vcpu *vcpu)
1216 {
1217         return true;
1218 }
1219 #endif /* CONFIG_HAVE_KVM_INVALID_WAKEUPS */
1220
1221 typedef int (*kvm_vm_thread_fn_t)(struct kvm *kvm, uintptr_t data);
1222
1223 int kvm_vm_create_worker_thread(struct kvm *kvm, kvm_vm_thread_fn_t thread_fn,
1224                                 uintptr_t data, const char *name,
1225                                 struct task_struct **thread_ptr);
1226
1227 #endif