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