1 /* 2 * Kernel-based Virtual Machine driver for Linux 3 * 4 * This module enables machines with Intel VT-x extensions to run virtual 5 * machines without emulation or binary translation. 6 * 7 * Copyright (C) 2006 Qumranet, Inc. 8 * Copyright 2010 Red Hat, Inc. and/or its affiliates. 9 * 10 * Authors: 11 * Avi Kivity <avi@qumranet.com> 12 * Yaniv Kamay <yaniv@qumranet.com> 13 * 14 * This work is licensed under the terms of the GNU GPL, version 2. See 15 * the COPYING file in the top-level directory. 16 * 17 */ 18 19 #include <kvm/iodev.h> 20 21 #include <linux/kvm_host.h> 22 #include <linux/kvm.h> 23 #include <linux/module.h> 24 #include <linux/errno.h> 25 #include <linux/percpu.h> 26 #include <linux/mm.h> 27 #include <linux/miscdevice.h> 28 #include <linux/vmalloc.h> 29 #include <linux/reboot.h> 30 #include <linux/debugfs.h> 31 #include <linux/highmem.h> 32 #include <linux/file.h> 33 #include <linux/syscore_ops.h> 34 #include <linux/cpu.h> 35 #include <linux/sched/signal.h> 36 #include <linux/sched/mm.h> 37 #include <linux/sched/stat.h> 38 #include <linux/cpumask.h> 39 #include <linux/smp.h> 40 #include <linux/anon_inodes.h> 41 #include <linux/profile.h> 42 #include <linux/kvm_para.h> 43 #include <linux/pagemap.h> 44 #include <linux/mman.h> 45 #include <linux/swap.h> 46 #include <linux/bitops.h> 47 #include <linux/spinlock.h> 48 #include <linux/compat.h> 49 #include <linux/srcu.h> 50 #include <linux/hugetlb.h> 51 #include <linux/slab.h> 52 #include <linux/sort.h> 53 #include <linux/bsearch.h> 54 55 #include <asm/processor.h> 56 #include <asm/io.h> 57 #include <asm/ioctl.h> 58 #include <linux/uaccess.h> 59 #include <asm/pgtable.h> 60 61 #include "coalesced_mmio.h" 62 #include "async_pf.h" 63 #include "vfio.h" 64 65 #define CREATE_TRACE_POINTS 66 #include <trace/events/kvm.h> 67 68 /* Worst case buffer size needed for holding an integer. */ 69 #define ITOA_MAX_LEN 12 70 71 MODULE_AUTHOR("Qumranet"); 72 MODULE_LICENSE("GPL"); 73 74 /* Architectures should define their poll value according to the halt latency */ 75 unsigned int halt_poll_ns = KVM_HALT_POLL_NS_DEFAULT; 76 module_param(halt_poll_ns, uint, 0644); 77 EXPORT_SYMBOL_GPL(halt_poll_ns); 78 79 /* Default doubles per-vcpu halt_poll_ns. */ 80 unsigned int halt_poll_ns_grow = 2; 81 module_param(halt_poll_ns_grow, uint, 0644); 82 EXPORT_SYMBOL_GPL(halt_poll_ns_grow); 83 84 /* Default resets per-vcpu halt_poll_ns . */ 85 unsigned int halt_poll_ns_shrink; 86 module_param(halt_poll_ns_shrink, uint, 0644); 87 EXPORT_SYMBOL_GPL(halt_poll_ns_shrink); 88 89 /* 90 * Ordering of locks: 91 * 92 * kvm->lock --> kvm->slots_lock --> kvm->irq_lock 93 */ 94 95 DEFINE_SPINLOCK(kvm_lock); 96 static DEFINE_RAW_SPINLOCK(kvm_count_lock); 97 LIST_HEAD(vm_list); 98 99 static cpumask_var_t cpus_hardware_enabled; 100 static int kvm_usage_count; 101 static atomic_t hardware_enable_failed; 102 103 struct kmem_cache *kvm_vcpu_cache; 104 EXPORT_SYMBOL_GPL(kvm_vcpu_cache); 105 106 static __read_mostly struct preempt_ops kvm_preempt_ops; 107 108 struct dentry *kvm_debugfs_dir; 109 EXPORT_SYMBOL_GPL(kvm_debugfs_dir); 110 111 static int kvm_debugfs_num_entries; 112 static const struct file_operations *stat_fops_per_vm[]; 113 114 static long kvm_vcpu_ioctl(struct file *file, unsigned int ioctl, 115 unsigned long arg); 116 #ifdef CONFIG_KVM_COMPAT 117 static long kvm_vcpu_compat_ioctl(struct file *file, unsigned int ioctl, 118 unsigned long arg); 119 #define KVM_COMPAT(c) .compat_ioctl = (c) 120 #else 121 static long kvm_no_compat_ioctl(struct file *file, unsigned int ioctl, 122 unsigned long arg) { return -EINVAL; } 123 #define KVM_COMPAT(c) .compat_ioctl = kvm_no_compat_ioctl 124 #endif 125 static int hardware_enable_all(void); 126 static void hardware_disable_all(void); 127 128 static void kvm_io_bus_destroy(struct kvm_io_bus *bus); 129 130 static void mark_page_dirty_in_slot(struct kvm_memory_slot *memslot, gfn_t gfn); 131 132 __visible bool kvm_rebooting; 133 EXPORT_SYMBOL_GPL(kvm_rebooting); 134 135 static bool largepages_enabled = true; 136 137 #define KVM_EVENT_CREATE_VM 0 138 #define KVM_EVENT_DESTROY_VM 1 139 static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm); 140 static unsigned long long kvm_createvm_count; 141 static unsigned long long kvm_active_vms; 142 143 __weak int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm, 144 unsigned long start, unsigned long end, bool blockable) 145 { 146 return 0; 147 } 148 149 bool kvm_is_reserved_pfn(kvm_pfn_t pfn) 150 { 151 if (pfn_valid(pfn)) 152 return PageReserved(pfn_to_page(pfn)); 153 154 return true; 155 } 156 157 /* 158 * Switches to specified vcpu, until a matching vcpu_put() 159 */ 160 void vcpu_load(struct kvm_vcpu *vcpu) 161 { 162 int cpu = get_cpu(); 163 preempt_notifier_register(&vcpu->preempt_notifier); 164 kvm_arch_vcpu_load(vcpu, cpu); 165 put_cpu(); 166 } 167 EXPORT_SYMBOL_GPL(vcpu_load); 168 169 void vcpu_put(struct kvm_vcpu *vcpu) 170 { 171 preempt_disable(); 172 kvm_arch_vcpu_put(vcpu); 173 preempt_notifier_unregister(&vcpu->preempt_notifier); 174 preempt_enable(); 175 } 176 EXPORT_SYMBOL_GPL(vcpu_put); 177 178 /* TODO: merge with kvm_arch_vcpu_should_kick */ 179 static bool kvm_request_needs_ipi(struct kvm_vcpu *vcpu, unsigned req) 180 { 181 int mode = kvm_vcpu_exiting_guest_mode(vcpu); 182 183 /* 184 * We need to wait for the VCPU to reenable interrupts and get out of 185 * READING_SHADOW_PAGE_TABLES mode. 186 */ 187 if (req & KVM_REQUEST_WAIT) 188 return mode != OUTSIDE_GUEST_MODE; 189 190 /* 191 * Need to kick a running VCPU, but otherwise there is nothing to do. 192 */ 193 return mode == IN_GUEST_MODE; 194 } 195 196 static void ack_flush(void *_completed) 197 { 198 } 199 200 static inline bool kvm_kick_many_cpus(const struct cpumask *cpus, bool wait) 201 { 202 if (unlikely(!cpus)) 203 cpus = cpu_online_mask; 204 205 if (cpumask_empty(cpus)) 206 return false; 207 208 smp_call_function_many(cpus, ack_flush, NULL, wait); 209 return true; 210 } 211 212 bool kvm_make_vcpus_request_mask(struct kvm *kvm, unsigned int req, 213 unsigned long *vcpu_bitmap, cpumask_var_t tmp) 214 { 215 int i, cpu, me; 216 struct kvm_vcpu *vcpu; 217 bool called; 218 219 me = get_cpu(); 220 221 kvm_for_each_vcpu(i, vcpu, kvm) { 222 if (vcpu_bitmap && !test_bit(i, vcpu_bitmap)) 223 continue; 224 225 kvm_make_request(req, vcpu); 226 cpu = vcpu->cpu; 227 228 if (!(req & KVM_REQUEST_NO_WAKEUP) && kvm_vcpu_wake_up(vcpu)) 229 continue; 230 231 if (tmp != NULL && cpu != -1 && cpu != me && 232 kvm_request_needs_ipi(vcpu, req)) 233 __cpumask_set_cpu(cpu, tmp); 234 } 235 236 called = kvm_kick_many_cpus(tmp, !!(req & KVM_REQUEST_WAIT)); 237 put_cpu(); 238 239 return called; 240 } 241 242 bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req) 243 { 244 cpumask_var_t cpus; 245 bool called; 246 247 zalloc_cpumask_var(&cpus, GFP_ATOMIC); 248 249 called = kvm_make_vcpus_request_mask(kvm, req, NULL, cpus); 250 251 free_cpumask_var(cpus); 252 return called; 253 } 254 255 #ifndef CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL 256 void kvm_flush_remote_tlbs(struct kvm *kvm) 257 { 258 /* 259 * Read tlbs_dirty before setting KVM_REQ_TLB_FLUSH in 260 * kvm_make_all_cpus_request. 261 */ 262 long dirty_count = smp_load_acquire(&kvm->tlbs_dirty); 263 264 /* 265 * We want to publish modifications to the page tables before reading 266 * mode. Pairs with a memory barrier in arch-specific code. 267 * - x86: smp_mb__after_srcu_read_unlock in vcpu_enter_guest 268 * and smp_mb in walk_shadow_page_lockless_begin/end. 269 * - powerpc: smp_mb in kvmppc_prepare_to_enter. 270 * 271 * There is already an smp_mb__after_atomic() before 272 * kvm_make_all_cpus_request() reads vcpu->mode. We reuse that 273 * barrier here. 274 */ 275 if (!kvm_arch_flush_remote_tlb(kvm) 276 || kvm_make_all_cpus_request(kvm, KVM_REQ_TLB_FLUSH)) 277 ++kvm->stat.remote_tlb_flush; 278 cmpxchg(&kvm->tlbs_dirty, dirty_count, 0); 279 } 280 EXPORT_SYMBOL_GPL(kvm_flush_remote_tlbs); 281 #endif 282 283 void kvm_reload_remote_mmus(struct kvm *kvm) 284 { 285 kvm_make_all_cpus_request(kvm, KVM_REQ_MMU_RELOAD); 286 } 287 288 int kvm_vcpu_init(struct kvm_vcpu *vcpu, struct kvm *kvm, unsigned id) 289 { 290 struct page *page; 291 int r; 292 293 mutex_init(&vcpu->mutex); 294 vcpu->cpu = -1; 295 vcpu->kvm = kvm; 296 vcpu->vcpu_id = id; 297 vcpu->pid = NULL; 298 init_swait_queue_head(&vcpu->wq); 299 kvm_async_pf_vcpu_init(vcpu); 300 301 vcpu->pre_pcpu = -1; 302 INIT_LIST_HEAD(&vcpu->blocked_vcpu_list); 303 304 page = alloc_page(GFP_KERNEL | __GFP_ZERO); 305 if (!page) { 306 r = -ENOMEM; 307 goto fail; 308 } 309 vcpu->run = page_address(page); 310 311 kvm_vcpu_set_in_spin_loop(vcpu, false); 312 kvm_vcpu_set_dy_eligible(vcpu, false); 313 vcpu->preempted = false; 314 315 r = kvm_arch_vcpu_init(vcpu); 316 if (r < 0) 317 goto fail_free_run; 318 return 0; 319 320 fail_free_run: 321 free_page((unsigned long)vcpu->run); 322 fail: 323 return r; 324 } 325 EXPORT_SYMBOL_GPL(kvm_vcpu_init); 326 327 void kvm_vcpu_uninit(struct kvm_vcpu *vcpu) 328 { 329 /* 330 * no need for rcu_read_lock as VCPU_RUN is the only place that 331 * will change the vcpu->pid pointer and on uninit all file 332 * descriptors are already gone. 333 */ 334 put_pid(rcu_dereference_protected(vcpu->pid, 1)); 335 kvm_arch_vcpu_uninit(vcpu); 336 free_page((unsigned long)vcpu->run); 337 } 338 EXPORT_SYMBOL_GPL(kvm_vcpu_uninit); 339 340 #if defined(CONFIG_MMU_NOTIFIER) && defined(KVM_ARCH_WANT_MMU_NOTIFIER) 341 static inline struct kvm *mmu_notifier_to_kvm(struct mmu_notifier *mn) 342 { 343 return container_of(mn, struct kvm, mmu_notifier); 344 } 345 346 static void kvm_mmu_notifier_change_pte(struct mmu_notifier *mn, 347 struct mm_struct *mm, 348 unsigned long address, 349 pte_t pte) 350 { 351 struct kvm *kvm = mmu_notifier_to_kvm(mn); 352 int idx; 353 354 idx = srcu_read_lock(&kvm->srcu); 355 spin_lock(&kvm->mmu_lock); 356 kvm->mmu_notifier_seq++; 357 358 if (kvm_set_spte_hva(kvm, address, pte)) 359 kvm_flush_remote_tlbs(kvm); 360 361 spin_unlock(&kvm->mmu_lock); 362 srcu_read_unlock(&kvm->srcu, idx); 363 } 364 365 static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn, 366 const struct mmu_notifier_range *range) 367 { 368 struct kvm *kvm = mmu_notifier_to_kvm(mn); 369 int need_tlb_flush = 0, idx; 370 int ret; 371 372 idx = srcu_read_lock(&kvm->srcu); 373 spin_lock(&kvm->mmu_lock); 374 /* 375 * The count increase must become visible at unlock time as no 376 * spte can be established without taking the mmu_lock and 377 * count is also read inside the mmu_lock critical section. 378 */ 379 kvm->mmu_notifier_count++; 380 need_tlb_flush = kvm_unmap_hva_range(kvm, range->start, range->end); 381 need_tlb_flush |= kvm->tlbs_dirty; 382 /* we've to flush the tlb before the pages can be freed */ 383 if (need_tlb_flush) 384 kvm_flush_remote_tlbs(kvm); 385 386 spin_unlock(&kvm->mmu_lock); 387 388 ret = kvm_arch_mmu_notifier_invalidate_range(kvm, range->start, 389 range->end, range->blockable); 390 391 srcu_read_unlock(&kvm->srcu, idx); 392 393 return ret; 394 } 395 396 static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn, 397 const struct mmu_notifier_range *range) 398 { 399 struct kvm *kvm = mmu_notifier_to_kvm(mn); 400 401 spin_lock(&kvm->mmu_lock); 402 /* 403 * This sequence increase will notify the kvm page fault that 404 * the page that is going to be mapped in the spte could have 405 * been freed. 406 */ 407 kvm->mmu_notifier_seq++; 408 smp_wmb(); 409 /* 410 * The above sequence increase must be visible before the 411 * below count decrease, which is ensured by the smp_wmb above 412 * in conjunction with the smp_rmb in mmu_notifier_retry(). 413 */ 414 kvm->mmu_notifier_count--; 415 spin_unlock(&kvm->mmu_lock); 416 417 BUG_ON(kvm->mmu_notifier_count < 0); 418 } 419 420 static int kvm_mmu_notifier_clear_flush_young(struct mmu_notifier *mn, 421 struct mm_struct *mm, 422 unsigned long start, 423 unsigned long end) 424 { 425 struct kvm *kvm = mmu_notifier_to_kvm(mn); 426 int young, idx; 427 428 idx = srcu_read_lock(&kvm->srcu); 429 spin_lock(&kvm->mmu_lock); 430 431 young = kvm_age_hva(kvm, start, end); 432 if (young) 433 kvm_flush_remote_tlbs(kvm); 434 435 spin_unlock(&kvm->mmu_lock); 436 srcu_read_unlock(&kvm->srcu, idx); 437 438 return young; 439 } 440 441 static int kvm_mmu_notifier_clear_young(struct mmu_notifier *mn, 442 struct mm_struct *mm, 443 unsigned long start, 444 unsigned long end) 445 { 446 struct kvm *kvm = mmu_notifier_to_kvm(mn); 447 int young, idx; 448 449 idx = srcu_read_lock(&kvm->srcu); 450 spin_lock(&kvm->mmu_lock); 451 /* 452 * Even though we do not flush TLB, this will still adversely 453 * affect performance on pre-Haswell Intel EPT, where there is 454 * no EPT Access Bit to clear so that we have to tear down EPT 455 * tables instead. If we find this unacceptable, we can always 456 * add a parameter to kvm_age_hva so that it effectively doesn't 457 * do anything on clear_young. 458 * 459 * Also note that currently we never issue secondary TLB flushes 460 * from clear_young, leaving this job up to the regular system 461 * cadence. If we find this inaccurate, we might come up with a 462 * more sophisticated heuristic later. 463 */ 464 young = kvm_age_hva(kvm, start, end); 465 spin_unlock(&kvm->mmu_lock); 466 srcu_read_unlock(&kvm->srcu, idx); 467 468 return young; 469 } 470 471 static int kvm_mmu_notifier_test_young(struct mmu_notifier *mn, 472 struct mm_struct *mm, 473 unsigned long address) 474 { 475 struct kvm *kvm = mmu_notifier_to_kvm(mn); 476 int young, idx; 477 478 idx = srcu_read_lock(&kvm->srcu); 479 spin_lock(&kvm->mmu_lock); 480 young = kvm_test_age_hva(kvm, address); 481 spin_unlock(&kvm->mmu_lock); 482 srcu_read_unlock(&kvm->srcu, idx); 483 484 return young; 485 } 486 487 static void kvm_mmu_notifier_release(struct mmu_notifier *mn, 488 struct mm_struct *mm) 489 { 490 struct kvm *kvm = mmu_notifier_to_kvm(mn); 491 int idx; 492 493 idx = srcu_read_lock(&kvm->srcu); 494 kvm_arch_flush_shadow_all(kvm); 495 srcu_read_unlock(&kvm->srcu, idx); 496 } 497 498 static const struct mmu_notifier_ops kvm_mmu_notifier_ops = { 499 .invalidate_range_start = kvm_mmu_notifier_invalidate_range_start, 500 .invalidate_range_end = kvm_mmu_notifier_invalidate_range_end, 501 .clear_flush_young = kvm_mmu_notifier_clear_flush_young, 502 .clear_young = kvm_mmu_notifier_clear_young, 503 .test_young = kvm_mmu_notifier_test_young, 504 .change_pte = kvm_mmu_notifier_change_pte, 505 .release = kvm_mmu_notifier_release, 506 }; 507 508 static int kvm_init_mmu_notifier(struct kvm *kvm) 509 { 510 kvm->mmu_notifier.ops = &kvm_mmu_notifier_ops; 511 return mmu_notifier_register(&kvm->mmu_notifier, current->mm); 512 } 513 514 #else /* !(CONFIG_MMU_NOTIFIER && KVM_ARCH_WANT_MMU_NOTIFIER) */ 515 516 static int kvm_init_mmu_notifier(struct kvm *kvm) 517 { 518 return 0; 519 } 520 521 #endif /* CONFIG_MMU_NOTIFIER && KVM_ARCH_WANT_MMU_NOTIFIER */ 522 523 static struct kvm_memslots *kvm_alloc_memslots(void) 524 { 525 int i; 526 struct kvm_memslots *slots; 527 528 slots = kvzalloc(sizeof(struct kvm_memslots), GFP_KERNEL); 529 if (!slots) 530 return NULL; 531 532 for (i = 0; i < KVM_MEM_SLOTS_NUM; i++) 533 slots->id_to_index[i] = slots->memslots[i].id = i; 534 535 return slots; 536 } 537 538 static void kvm_destroy_dirty_bitmap(struct kvm_memory_slot *memslot) 539 { 540 if (!memslot->dirty_bitmap) 541 return; 542 543 kvfree(memslot->dirty_bitmap); 544 memslot->dirty_bitmap = NULL; 545 } 546 547 /* 548 * Free any memory in @free but not in @dont. 549 */ 550 static void kvm_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free, 551 struct kvm_memory_slot *dont) 552 { 553 if (!dont || free->dirty_bitmap != dont->dirty_bitmap) 554 kvm_destroy_dirty_bitmap(free); 555 556 kvm_arch_free_memslot(kvm, free, dont); 557 558 free->npages = 0; 559 } 560 561 static void kvm_free_memslots(struct kvm *kvm, struct kvm_memslots *slots) 562 { 563 struct kvm_memory_slot *memslot; 564 565 if (!slots) 566 return; 567 568 kvm_for_each_memslot(memslot, slots) 569 kvm_free_memslot(kvm, memslot, NULL); 570 571 kvfree(slots); 572 } 573 574 static void kvm_destroy_vm_debugfs(struct kvm *kvm) 575 { 576 int i; 577 578 if (!kvm->debugfs_dentry) 579 return; 580 581 debugfs_remove_recursive(kvm->debugfs_dentry); 582 583 if (kvm->debugfs_stat_data) { 584 for (i = 0; i < kvm_debugfs_num_entries; i++) 585 kfree(kvm->debugfs_stat_data[i]); 586 kfree(kvm->debugfs_stat_data); 587 } 588 } 589 590 static int kvm_create_vm_debugfs(struct kvm *kvm, int fd) 591 { 592 char dir_name[ITOA_MAX_LEN * 2]; 593 struct kvm_stat_data *stat_data; 594 struct kvm_stats_debugfs_item *p; 595 596 if (!debugfs_initialized()) 597 return 0; 598 599 snprintf(dir_name, sizeof(dir_name), "%d-%d", task_pid_nr(current), fd); 600 kvm->debugfs_dentry = debugfs_create_dir(dir_name, kvm_debugfs_dir); 601 602 kvm->debugfs_stat_data = kcalloc(kvm_debugfs_num_entries, 603 sizeof(*kvm->debugfs_stat_data), 604 GFP_KERNEL); 605 if (!kvm->debugfs_stat_data) 606 return -ENOMEM; 607 608 for (p = debugfs_entries; p->name; p++) { 609 stat_data = kzalloc(sizeof(*stat_data), GFP_KERNEL); 610 if (!stat_data) 611 return -ENOMEM; 612 613 stat_data->kvm = kvm; 614 stat_data->offset = p->offset; 615 kvm->debugfs_stat_data[p - debugfs_entries] = stat_data; 616 debugfs_create_file(p->name, 0644, kvm->debugfs_dentry, 617 stat_data, stat_fops_per_vm[p->kind]); 618 } 619 return 0; 620 } 621 622 static struct kvm *kvm_create_vm(unsigned long type) 623 { 624 int r, i; 625 struct kvm *kvm = kvm_arch_alloc_vm(); 626 627 if (!kvm) 628 return ERR_PTR(-ENOMEM); 629 630 spin_lock_init(&kvm->mmu_lock); 631 mmgrab(current->mm); 632 kvm->mm = current->mm; 633 kvm_eventfd_init(kvm); 634 mutex_init(&kvm->lock); 635 mutex_init(&kvm->irq_lock); 636 mutex_init(&kvm->slots_lock); 637 refcount_set(&kvm->users_count, 1); 638 INIT_LIST_HEAD(&kvm->devices); 639 640 r = kvm_arch_init_vm(kvm, type); 641 if (r) 642 goto out_err_no_disable; 643 644 r = hardware_enable_all(); 645 if (r) 646 goto out_err_no_disable; 647 648 #ifdef CONFIG_HAVE_KVM_IRQFD 649 INIT_HLIST_HEAD(&kvm->irq_ack_notifier_list); 650 #endif 651 652 BUILD_BUG_ON(KVM_MEM_SLOTS_NUM > SHRT_MAX); 653 654 r = -ENOMEM; 655 for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++) { 656 struct kvm_memslots *slots = kvm_alloc_memslots(); 657 if (!slots) 658 goto out_err_no_srcu; 659 /* 660 * Generations must be different for each address space. 661 * Init kvm generation close to the maximum to easily test the 662 * code of handling generation number wrap-around. 663 */ 664 slots->generation = i * 2 - 150; 665 rcu_assign_pointer(kvm->memslots[i], slots); 666 } 667 668 if (init_srcu_struct(&kvm->srcu)) 669 goto out_err_no_srcu; 670 if (init_srcu_struct(&kvm->irq_srcu)) 671 goto out_err_no_irq_srcu; 672 for (i = 0; i < KVM_NR_BUSES; i++) { 673 rcu_assign_pointer(kvm->buses[i], 674 kzalloc(sizeof(struct kvm_io_bus), GFP_KERNEL)); 675 if (!kvm->buses[i]) 676 goto out_err; 677 } 678 679 r = kvm_init_mmu_notifier(kvm); 680 if (r) 681 goto out_err; 682 683 spin_lock(&kvm_lock); 684 list_add(&kvm->vm_list, &vm_list); 685 spin_unlock(&kvm_lock); 686 687 preempt_notifier_inc(); 688 689 return kvm; 690 691 out_err: 692 cleanup_srcu_struct(&kvm->irq_srcu); 693 out_err_no_irq_srcu: 694 cleanup_srcu_struct(&kvm->srcu); 695 out_err_no_srcu: 696 hardware_disable_all(); 697 out_err_no_disable: 698 refcount_set(&kvm->users_count, 0); 699 for (i = 0; i < KVM_NR_BUSES; i++) 700 kfree(kvm_get_bus(kvm, i)); 701 for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++) 702 kvm_free_memslots(kvm, __kvm_memslots(kvm, i)); 703 kvm_arch_free_vm(kvm); 704 mmdrop(current->mm); 705 return ERR_PTR(r); 706 } 707 708 static void kvm_destroy_devices(struct kvm *kvm) 709 { 710 struct kvm_device *dev, *tmp; 711 712 /* 713 * We do not need to take the kvm->lock here, because nobody else 714 * has a reference to the struct kvm at this point and therefore 715 * cannot access the devices list anyhow. 716 */ 717 list_for_each_entry_safe(dev, tmp, &kvm->devices, vm_node) { 718 list_del(&dev->vm_node); 719 dev->ops->destroy(dev); 720 } 721 } 722 723 static void kvm_destroy_vm(struct kvm *kvm) 724 { 725 int i; 726 struct mm_struct *mm = kvm->mm; 727 728 kvm_uevent_notify_change(KVM_EVENT_DESTROY_VM, kvm); 729 kvm_destroy_vm_debugfs(kvm); 730 kvm_arch_sync_events(kvm); 731 spin_lock(&kvm_lock); 732 list_del(&kvm->vm_list); 733 spin_unlock(&kvm_lock); 734 kvm_free_irq_routing(kvm); 735 for (i = 0; i < KVM_NR_BUSES; i++) { 736 struct kvm_io_bus *bus = kvm_get_bus(kvm, i); 737 738 if (bus) 739 kvm_io_bus_destroy(bus); 740 kvm->buses[i] = NULL; 741 } 742 kvm_coalesced_mmio_free(kvm); 743 #if defined(CONFIG_MMU_NOTIFIER) && defined(KVM_ARCH_WANT_MMU_NOTIFIER) 744 mmu_notifier_unregister(&kvm->mmu_notifier, kvm->mm); 745 #else 746 kvm_arch_flush_shadow_all(kvm); 747 #endif 748 kvm_arch_destroy_vm(kvm); 749 kvm_destroy_devices(kvm); 750 for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++) 751 kvm_free_memslots(kvm, __kvm_memslots(kvm, i)); 752 cleanup_srcu_struct(&kvm->irq_srcu); 753 cleanup_srcu_struct(&kvm->srcu); 754 kvm_arch_free_vm(kvm); 755 preempt_notifier_dec(); 756 hardware_disable_all(); 757 mmdrop(mm); 758 } 759 760 void kvm_get_kvm(struct kvm *kvm) 761 { 762 refcount_inc(&kvm->users_count); 763 } 764 EXPORT_SYMBOL_GPL(kvm_get_kvm); 765 766 void kvm_put_kvm(struct kvm *kvm) 767 { 768 if (refcount_dec_and_test(&kvm->users_count)) 769 kvm_destroy_vm(kvm); 770 } 771 EXPORT_SYMBOL_GPL(kvm_put_kvm); 772 773 774 static int kvm_vm_release(struct inode *inode, struct file *filp) 775 { 776 struct kvm *kvm = filp->private_data; 777 778 kvm_irqfd_release(kvm); 779 780 kvm_put_kvm(kvm); 781 return 0; 782 } 783 784 /* 785 * Allocation size is twice as large as the actual dirty bitmap size. 786 * See x86's kvm_vm_ioctl_get_dirty_log() why this is needed. 787 */ 788 static int kvm_create_dirty_bitmap(struct kvm_memory_slot *memslot) 789 { 790 unsigned long dirty_bytes = 2 * kvm_dirty_bitmap_bytes(memslot); 791 792 memslot->dirty_bitmap = kvzalloc(dirty_bytes, GFP_KERNEL); 793 if (!memslot->dirty_bitmap) 794 return -ENOMEM; 795 796 return 0; 797 } 798 799 /* 800 * Insert memslot and re-sort memslots based on their GFN, 801 * so binary search could be used to lookup GFN. 802 * Sorting algorithm takes advantage of having initially 803 * sorted array and known changed memslot position. 804 */ 805 static void update_memslots(struct kvm_memslots *slots, 806 struct kvm_memory_slot *new, 807 enum kvm_mr_change change) 808 { 809 int id = new->id; 810 int i = slots->id_to_index[id]; 811 struct kvm_memory_slot *mslots = slots->memslots; 812 813 WARN_ON(mslots[i].id != id); 814 switch (change) { 815 case KVM_MR_CREATE: 816 slots->used_slots++; 817 WARN_ON(mslots[i].npages || !new->npages); 818 break; 819 case KVM_MR_DELETE: 820 slots->used_slots--; 821 WARN_ON(new->npages || !mslots[i].npages); 822 break; 823 default: 824 break; 825 } 826 827 while (i < KVM_MEM_SLOTS_NUM - 1 && 828 new->base_gfn <= mslots[i + 1].base_gfn) { 829 if (!mslots[i + 1].npages) 830 break; 831 mslots[i] = mslots[i + 1]; 832 slots->id_to_index[mslots[i].id] = i; 833 i++; 834 } 835 836 /* 837 * The ">=" is needed when creating a slot with base_gfn == 0, 838 * so that it moves before all those with base_gfn == npages == 0. 839 * 840 * On the other hand, if new->npages is zero, the above loop has 841 * already left i pointing to the beginning of the empty part of 842 * mslots, and the ">=" would move the hole backwards in this 843 * case---which is wrong. So skip the loop when deleting a slot. 844 */ 845 if (new->npages) { 846 while (i > 0 && 847 new->base_gfn >= mslots[i - 1].base_gfn) { 848 mslots[i] = mslots[i - 1]; 849 slots->id_to_index[mslots[i].id] = i; 850 i--; 851 } 852 } else 853 WARN_ON_ONCE(i != slots->used_slots); 854 855 mslots[i] = *new; 856 slots->id_to_index[mslots[i].id] = i; 857 } 858 859 static int check_memory_region_flags(const struct kvm_userspace_memory_region *mem) 860 { 861 u32 valid_flags = KVM_MEM_LOG_DIRTY_PAGES; 862 863 #ifdef __KVM_HAVE_READONLY_MEM 864 valid_flags |= KVM_MEM_READONLY; 865 #endif 866 867 if (mem->flags & ~valid_flags) 868 return -EINVAL; 869 870 return 0; 871 } 872 873 static struct kvm_memslots *install_new_memslots(struct kvm *kvm, 874 int as_id, struct kvm_memslots *slots) 875 { 876 struct kvm_memslots *old_memslots = __kvm_memslots(kvm, as_id); 877 878 /* 879 * Set the low bit in the generation, which disables SPTE caching 880 * until the end of synchronize_srcu_expedited. 881 */ 882 WARN_ON(old_memslots->generation & 1); 883 slots->generation = old_memslots->generation + 1; 884 885 rcu_assign_pointer(kvm->memslots[as_id], slots); 886 synchronize_srcu_expedited(&kvm->srcu); 887 888 /* 889 * Increment the new memslot generation a second time. This prevents 890 * vm exits that race with memslot updates from caching a memslot 891 * generation that will (potentially) be valid forever. 892 * 893 * Generations must be unique even across address spaces. We do not need 894 * a global counter for that, instead the generation space is evenly split 895 * across address spaces. For example, with two address spaces, address 896 * space 0 will use generations 0, 4, 8, ... while * address space 1 will 897 * use generations 2, 6, 10, 14, ... 898 */ 899 slots->generation += KVM_ADDRESS_SPACE_NUM * 2 - 1; 900 901 kvm_arch_memslots_updated(kvm, slots); 902 903 return old_memslots; 904 } 905 906 /* 907 * Allocate some memory and give it an address in the guest physical address 908 * space. 909 * 910 * Discontiguous memory is allowed, mostly for framebuffers. 911 * 912 * Must be called holding kvm->slots_lock for write. 913 */ 914 int __kvm_set_memory_region(struct kvm *kvm, 915 const struct kvm_userspace_memory_region *mem) 916 { 917 int r; 918 gfn_t base_gfn; 919 unsigned long npages; 920 struct kvm_memory_slot *slot; 921 struct kvm_memory_slot old, new; 922 struct kvm_memslots *slots = NULL, *old_memslots; 923 int as_id, id; 924 enum kvm_mr_change change; 925 926 r = check_memory_region_flags(mem); 927 if (r) 928 goto out; 929 930 r = -EINVAL; 931 as_id = mem->slot >> 16; 932 id = (u16)mem->slot; 933 934 /* General sanity checks */ 935 if (mem->memory_size & (PAGE_SIZE - 1)) 936 goto out; 937 if (mem->guest_phys_addr & (PAGE_SIZE - 1)) 938 goto out; 939 /* We can read the guest memory with __xxx_user() later on. */ 940 if ((id < KVM_USER_MEM_SLOTS) && 941 ((mem->userspace_addr & (PAGE_SIZE - 1)) || 942 !access_ok((void __user *)(unsigned long)mem->userspace_addr, 943 mem->memory_size))) 944 goto out; 945 if (as_id >= KVM_ADDRESS_SPACE_NUM || id >= KVM_MEM_SLOTS_NUM) 946 goto out; 947 if (mem->guest_phys_addr + mem->memory_size < mem->guest_phys_addr) 948 goto out; 949 950 slot = id_to_memslot(__kvm_memslots(kvm, as_id), id); 951 base_gfn = mem->guest_phys_addr >> PAGE_SHIFT; 952 npages = mem->memory_size >> PAGE_SHIFT; 953 954 if (npages > KVM_MEM_MAX_NR_PAGES) 955 goto out; 956 957 new = old = *slot; 958 959 new.id = id; 960 new.base_gfn = base_gfn; 961 new.npages = npages; 962 new.flags = mem->flags; 963 964 if (npages) { 965 if (!old.npages) 966 change = KVM_MR_CREATE; 967 else { /* Modify an existing slot. */ 968 if ((mem->userspace_addr != old.userspace_addr) || 969 (npages != old.npages) || 970 ((new.flags ^ old.flags) & KVM_MEM_READONLY)) 971 goto out; 972 973 if (base_gfn != old.base_gfn) 974 change = KVM_MR_MOVE; 975 else if (new.flags != old.flags) 976 change = KVM_MR_FLAGS_ONLY; 977 else { /* Nothing to change. */ 978 r = 0; 979 goto out; 980 } 981 } 982 } else { 983 if (!old.npages) 984 goto out; 985 986 change = KVM_MR_DELETE; 987 new.base_gfn = 0; 988 new.flags = 0; 989 } 990 991 if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) { 992 /* Check for overlaps */ 993 r = -EEXIST; 994 kvm_for_each_memslot(slot, __kvm_memslots(kvm, as_id)) { 995 if (slot->id == id) 996 continue; 997 if (!((base_gfn + npages <= slot->base_gfn) || 998 (base_gfn >= slot->base_gfn + slot->npages))) 999 goto out; 1000 } 1001 } 1002 1003 /* Free page dirty bitmap if unneeded */ 1004 if (!(new.flags & KVM_MEM_LOG_DIRTY_PAGES)) 1005 new.dirty_bitmap = NULL; 1006 1007 r = -ENOMEM; 1008 if (change == KVM_MR_CREATE) { 1009 new.userspace_addr = mem->userspace_addr; 1010 1011 if (kvm_arch_create_memslot(kvm, &new, npages)) 1012 goto out_free; 1013 } 1014 1015 /* Allocate page dirty bitmap if needed */ 1016 if ((new.flags & KVM_MEM_LOG_DIRTY_PAGES) && !new.dirty_bitmap) { 1017 if (kvm_create_dirty_bitmap(&new) < 0) 1018 goto out_free; 1019 } 1020 1021 slots = kvzalloc(sizeof(struct kvm_memslots), GFP_KERNEL); 1022 if (!slots) 1023 goto out_free; 1024 memcpy(slots, __kvm_memslots(kvm, as_id), sizeof(struct kvm_memslots)); 1025 1026 if ((change == KVM_MR_DELETE) || (change == KVM_MR_MOVE)) { 1027 slot = id_to_memslot(slots, id); 1028 slot->flags |= KVM_MEMSLOT_INVALID; 1029 1030 old_memslots = install_new_memslots(kvm, as_id, slots); 1031 1032 /* From this point no new shadow pages pointing to a deleted, 1033 * or moved, memslot will be created. 1034 * 1035 * validation of sp->gfn happens in: 1036 * - gfn_to_hva (kvm_read_guest, gfn_to_pfn) 1037 * - kvm_is_visible_gfn (mmu_check_roots) 1038 */ 1039 kvm_arch_flush_shadow_memslot(kvm, slot); 1040 1041 /* 1042 * We can re-use the old_memslots from above, the only difference 1043 * from the currently installed memslots is the invalid flag. This 1044 * will get overwritten by update_memslots anyway. 1045 */ 1046 slots = old_memslots; 1047 } 1048 1049 r = kvm_arch_prepare_memory_region(kvm, &new, mem, change); 1050 if (r) 1051 goto out_slots; 1052 1053 /* actual memory is freed via old in kvm_free_memslot below */ 1054 if (change == KVM_MR_DELETE) { 1055 new.dirty_bitmap = NULL; 1056 memset(&new.arch, 0, sizeof(new.arch)); 1057 } 1058 1059 update_memslots(slots, &new, change); 1060 old_memslots = install_new_memslots(kvm, as_id, slots); 1061 1062 kvm_arch_commit_memory_region(kvm, mem, &old, &new, change); 1063 1064 kvm_free_memslot(kvm, &old, &new); 1065 kvfree(old_memslots); 1066 return 0; 1067 1068 out_slots: 1069 kvfree(slots); 1070 out_free: 1071 kvm_free_memslot(kvm, &new, &old); 1072 out: 1073 return r; 1074 } 1075 EXPORT_SYMBOL_GPL(__kvm_set_memory_region); 1076 1077 int kvm_set_memory_region(struct kvm *kvm, 1078 const struct kvm_userspace_memory_region *mem) 1079 { 1080 int r; 1081 1082 mutex_lock(&kvm->slots_lock); 1083 r = __kvm_set_memory_region(kvm, mem); 1084 mutex_unlock(&kvm->slots_lock); 1085 return r; 1086 } 1087 EXPORT_SYMBOL_GPL(kvm_set_memory_region); 1088 1089 static int kvm_vm_ioctl_set_memory_region(struct kvm *kvm, 1090 struct kvm_userspace_memory_region *mem) 1091 { 1092 if ((u16)mem->slot >= KVM_USER_MEM_SLOTS) 1093 return -EINVAL; 1094 1095 return kvm_set_memory_region(kvm, mem); 1096 } 1097 1098 int kvm_get_dirty_log(struct kvm *kvm, 1099 struct kvm_dirty_log *log, int *is_dirty) 1100 { 1101 struct kvm_memslots *slots; 1102 struct kvm_memory_slot *memslot; 1103 int i, as_id, id; 1104 unsigned long n; 1105 unsigned long any = 0; 1106 1107 as_id = log->slot >> 16; 1108 id = (u16)log->slot; 1109 if (as_id >= KVM_ADDRESS_SPACE_NUM || id >= KVM_USER_MEM_SLOTS) 1110 return -EINVAL; 1111 1112 slots = __kvm_memslots(kvm, as_id); 1113 memslot = id_to_memslot(slots, id); 1114 if (!memslot->dirty_bitmap) 1115 return -ENOENT; 1116 1117 n = kvm_dirty_bitmap_bytes(memslot); 1118 1119 for (i = 0; !any && i < n/sizeof(long); ++i) 1120 any = memslot->dirty_bitmap[i]; 1121 1122 if (copy_to_user(log->dirty_bitmap, memslot->dirty_bitmap, n)) 1123 return -EFAULT; 1124 1125 if (any) 1126 *is_dirty = 1; 1127 return 0; 1128 } 1129 EXPORT_SYMBOL_GPL(kvm_get_dirty_log); 1130 1131 #ifdef CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT 1132 /** 1133 * kvm_get_dirty_log_protect - get a snapshot of dirty pages, and if any pages 1134 * and reenable dirty page tracking for the corresponding pages. 1135 * @kvm: pointer to kvm instance 1136 * @log: slot id and address to which we copy the log 1137 * @is_dirty: flag set if any page is dirty 1138 * 1139 * We need to keep it in mind that VCPU threads can write to the bitmap 1140 * concurrently. So, to avoid losing track of dirty pages we keep the 1141 * following order: 1142 * 1143 * 1. Take a snapshot of the bit and clear it if needed. 1144 * 2. Write protect the corresponding page. 1145 * 3. Copy the snapshot to the userspace. 1146 * 4. Upon return caller flushes TLB's if needed. 1147 * 1148 * Between 2 and 4, the guest may write to the page using the remaining TLB 1149 * entry. This is not a problem because the page is reported dirty using 1150 * the snapshot taken before and step 4 ensures that writes done after 1151 * exiting to userspace will be logged for the next call. 1152 * 1153 */ 1154 int kvm_get_dirty_log_protect(struct kvm *kvm, 1155 struct kvm_dirty_log *log, bool *flush) 1156 { 1157 struct kvm_memslots *slots; 1158 struct kvm_memory_slot *memslot; 1159 int i, as_id, id; 1160 unsigned long n; 1161 unsigned long *dirty_bitmap; 1162 unsigned long *dirty_bitmap_buffer; 1163 1164 as_id = log->slot >> 16; 1165 id = (u16)log->slot; 1166 if (as_id >= KVM_ADDRESS_SPACE_NUM || id >= KVM_USER_MEM_SLOTS) 1167 return -EINVAL; 1168 1169 slots = __kvm_memslots(kvm, as_id); 1170 memslot = id_to_memslot(slots, id); 1171 1172 dirty_bitmap = memslot->dirty_bitmap; 1173 if (!dirty_bitmap) 1174 return -ENOENT; 1175 1176 n = kvm_dirty_bitmap_bytes(memslot); 1177 *flush = false; 1178 if (kvm->manual_dirty_log_protect) { 1179 /* 1180 * Unlike kvm_get_dirty_log, we always return false in *flush, 1181 * because no flush is needed until KVM_CLEAR_DIRTY_LOG. There 1182 * is some code duplication between this function and 1183 * kvm_get_dirty_log, but hopefully all architecture 1184 * transition to kvm_get_dirty_log_protect and kvm_get_dirty_log 1185 * can be eliminated. 1186 */ 1187 dirty_bitmap_buffer = dirty_bitmap; 1188 } else { 1189 dirty_bitmap_buffer = kvm_second_dirty_bitmap(memslot); 1190 memset(dirty_bitmap_buffer, 0, n); 1191 1192 spin_lock(&kvm->mmu_lock); 1193 for (i = 0; i < n / sizeof(long); i++) { 1194 unsigned long mask; 1195 gfn_t offset; 1196 1197 if (!dirty_bitmap[i]) 1198 continue; 1199 1200 *flush = true; 1201 mask = xchg(&dirty_bitmap[i], 0); 1202 dirty_bitmap_buffer[i] = mask; 1203 1204 if (mask) { 1205 offset = i * BITS_PER_LONG; 1206 kvm_arch_mmu_enable_log_dirty_pt_masked(kvm, memslot, 1207 offset, mask); 1208 } 1209 } 1210 spin_unlock(&kvm->mmu_lock); 1211 } 1212 1213 if (copy_to_user(log->dirty_bitmap, dirty_bitmap_buffer, n)) 1214 return -EFAULT; 1215 return 0; 1216 } 1217 EXPORT_SYMBOL_GPL(kvm_get_dirty_log_protect); 1218 1219 /** 1220 * kvm_clear_dirty_log_protect - clear dirty bits in the bitmap 1221 * and reenable dirty page tracking for the corresponding pages. 1222 * @kvm: pointer to kvm instance 1223 * @log: slot id and address from which to fetch the bitmap of dirty pages 1224 */ 1225 int kvm_clear_dirty_log_protect(struct kvm *kvm, 1226 struct kvm_clear_dirty_log *log, bool *flush) 1227 { 1228 struct kvm_memslots *slots; 1229 struct kvm_memory_slot *memslot; 1230 int as_id, id; 1231 gfn_t offset; 1232 unsigned long i, n; 1233 unsigned long *dirty_bitmap; 1234 unsigned long *dirty_bitmap_buffer; 1235 1236 as_id = log->slot >> 16; 1237 id = (u16)log->slot; 1238 if (as_id >= KVM_ADDRESS_SPACE_NUM || id >= KVM_USER_MEM_SLOTS) 1239 return -EINVAL; 1240 1241 if ((log->first_page & 63) || (log->num_pages & 63)) 1242 return -EINVAL; 1243 1244 slots = __kvm_memslots(kvm, as_id); 1245 memslot = id_to_memslot(slots, id); 1246 1247 dirty_bitmap = memslot->dirty_bitmap; 1248 if (!dirty_bitmap) 1249 return -ENOENT; 1250 1251 n = kvm_dirty_bitmap_bytes(memslot); 1252 1253 if (log->first_page > memslot->npages || 1254 log->num_pages > memslot->npages - log->first_page) 1255 return -EINVAL; 1256 1257 *flush = false; 1258 dirty_bitmap_buffer = kvm_second_dirty_bitmap(memslot); 1259 if (copy_from_user(dirty_bitmap_buffer, log->dirty_bitmap, n)) 1260 return -EFAULT; 1261 1262 spin_lock(&kvm->mmu_lock); 1263 for (offset = log->first_page, 1264 i = offset / BITS_PER_LONG, n = log->num_pages / BITS_PER_LONG; n--; 1265 i++, offset += BITS_PER_LONG) { 1266 unsigned long mask = *dirty_bitmap_buffer++; 1267 atomic_long_t *p = (atomic_long_t *) &dirty_bitmap[i]; 1268 if (!mask) 1269 continue; 1270 1271 mask &= atomic_long_fetch_andnot(mask, p); 1272 1273 /* 1274 * mask contains the bits that really have been cleared. This 1275 * never includes any bits beyond the length of the memslot (if 1276 * the length is not aligned to 64 pages), therefore it is not 1277 * a problem if userspace sets them in log->dirty_bitmap. 1278 */ 1279 if (mask) { 1280 *flush = true; 1281 kvm_arch_mmu_enable_log_dirty_pt_masked(kvm, memslot, 1282 offset, mask); 1283 } 1284 } 1285 spin_unlock(&kvm->mmu_lock); 1286 1287 return 0; 1288 } 1289 EXPORT_SYMBOL_GPL(kvm_clear_dirty_log_protect); 1290 #endif 1291 1292 bool kvm_largepages_enabled(void) 1293 { 1294 return largepages_enabled; 1295 } 1296 1297 void kvm_disable_largepages(void) 1298 { 1299 largepages_enabled = false; 1300 } 1301 EXPORT_SYMBOL_GPL(kvm_disable_largepages); 1302 1303 struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn) 1304 { 1305 return __gfn_to_memslot(kvm_memslots(kvm), gfn); 1306 } 1307 EXPORT_SYMBOL_GPL(gfn_to_memslot); 1308 1309 struct kvm_memory_slot *kvm_vcpu_gfn_to_memslot(struct kvm_vcpu *vcpu, gfn_t gfn) 1310 { 1311 return __gfn_to_memslot(kvm_vcpu_memslots(vcpu), gfn); 1312 } 1313 1314 bool kvm_is_visible_gfn(struct kvm *kvm, gfn_t gfn) 1315 { 1316 struct kvm_memory_slot *memslot = gfn_to_memslot(kvm, gfn); 1317 1318 if (!memslot || memslot->id >= KVM_USER_MEM_SLOTS || 1319 memslot->flags & KVM_MEMSLOT_INVALID) 1320 return false; 1321 1322 return true; 1323 } 1324 EXPORT_SYMBOL_GPL(kvm_is_visible_gfn); 1325 1326 unsigned long kvm_host_page_size(struct kvm *kvm, gfn_t gfn) 1327 { 1328 struct vm_area_struct *vma; 1329 unsigned long addr, size; 1330 1331 size = PAGE_SIZE; 1332 1333 addr = gfn_to_hva(kvm, gfn); 1334 if (kvm_is_error_hva(addr)) 1335 return PAGE_SIZE; 1336 1337 down_read(¤t->mm->mmap_sem); 1338 vma = find_vma(current->mm, addr); 1339 if (!vma) 1340 goto out; 1341 1342 size = vma_kernel_pagesize(vma); 1343 1344 out: 1345 up_read(¤t->mm->mmap_sem); 1346 1347 return size; 1348 } 1349 1350 static bool memslot_is_readonly(struct kvm_memory_slot *slot) 1351 { 1352 return slot->flags & KVM_MEM_READONLY; 1353 } 1354 1355 static unsigned long __gfn_to_hva_many(struct kvm_memory_slot *slot, gfn_t gfn, 1356 gfn_t *nr_pages, bool write) 1357 { 1358 if (!slot || slot->flags & KVM_MEMSLOT_INVALID) 1359 return KVM_HVA_ERR_BAD; 1360 1361 if (memslot_is_readonly(slot) && write) 1362 return KVM_HVA_ERR_RO_BAD; 1363 1364 if (nr_pages) 1365 *nr_pages = slot->npages - (gfn - slot->base_gfn); 1366 1367 return __gfn_to_hva_memslot(slot, gfn); 1368 } 1369 1370 static unsigned long gfn_to_hva_many(struct kvm_memory_slot *slot, gfn_t gfn, 1371 gfn_t *nr_pages) 1372 { 1373 return __gfn_to_hva_many(slot, gfn, nr_pages, true); 1374 } 1375 1376 unsigned long gfn_to_hva_memslot(struct kvm_memory_slot *slot, 1377 gfn_t gfn) 1378 { 1379 return gfn_to_hva_many(slot, gfn, NULL); 1380 } 1381 EXPORT_SYMBOL_GPL(gfn_to_hva_memslot); 1382 1383 unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn) 1384 { 1385 return gfn_to_hva_many(gfn_to_memslot(kvm, gfn), gfn, NULL); 1386 } 1387 EXPORT_SYMBOL_GPL(gfn_to_hva); 1388 1389 unsigned long kvm_vcpu_gfn_to_hva(struct kvm_vcpu *vcpu, gfn_t gfn) 1390 { 1391 return gfn_to_hva_many(kvm_vcpu_gfn_to_memslot(vcpu, gfn), gfn, NULL); 1392 } 1393 EXPORT_SYMBOL_GPL(kvm_vcpu_gfn_to_hva); 1394 1395 /* 1396 * Return the hva of a @gfn and the R/W attribute if possible. 1397 * 1398 * @slot: the kvm_memory_slot which contains @gfn 1399 * @gfn: the gfn to be translated 1400 * @writable: used to return the read/write attribute of the @slot if the hva 1401 * is valid and @writable is not NULL 1402 */ 1403 unsigned long gfn_to_hva_memslot_prot(struct kvm_memory_slot *slot, 1404 gfn_t gfn, bool *writable) 1405 { 1406 unsigned long hva = __gfn_to_hva_many(slot, gfn, NULL, false); 1407 1408 if (!kvm_is_error_hva(hva) && writable) 1409 *writable = !memslot_is_readonly(slot); 1410 1411 return hva; 1412 } 1413 1414 unsigned long gfn_to_hva_prot(struct kvm *kvm, gfn_t gfn, bool *writable) 1415 { 1416 struct kvm_memory_slot *slot = gfn_to_memslot(kvm, gfn); 1417 1418 return gfn_to_hva_memslot_prot(slot, gfn, writable); 1419 } 1420 1421 unsigned long kvm_vcpu_gfn_to_hva_prot(struct kvm_vcpu *vcpu, gfn_t gfn, bool *writable) 1422 { 1423 struct kvm_memory_slot *slot = kvm_vcpu_gfn_to_memslot(vcpu, gfn); 1424 1425 return gfn_to_hva_memslot_prot(slot, gfn, writable); 1426 } 1427 1428 static inline int check_user_page_hwpoison(unsigned long addr) 1429 { 1430 int rc, flags = FOLL_HWPOISON | FOLL_WRITE; 1431 1432 rc = get_user_pages(addr, 1, flags, NULL, NULL); 1433 return rc == -EHWPOISON; 1434 } 1435 1436 /* 1437 * The fast path to get the writable pfn which will be stored in @pfn, 1438 * true indicates success, otherwise false is returned. It's also the 1439 * only part that runs if we can are in atomic context. 1440 */ 1441 static bool hva_to_pfn_fast(unsigned long addr, bool write_fault, 1442 bool *writable, kvm_pfn_t *pfn) 1443 { 1444 struct page *page[1]; 1445 int npages; 1446 1447 /* 1448 * Fast pin a writable pfn only if it is a write fault request 1449 * or the caller allows to map a writable pfn for a read fault 1450 * request. 1451 */ 1452 if (!(write_fault || writable)) 1453 return false; 1454 1455 npages = __get_user_pages_fast(addr, 1, 1, page); 1456 if (npages == 1) { 1457 *pfn = page_to_pfn(page[0]); 1458 1459 if (writable) 1460 *writable = true; 1461 return true; 1462 } 1463 1464 return false; 1465 } 1466 1467 /* 1468 * The slow path to get the pfn of the specified host virtual address, 1469 * 1 indicates success, -errno is returned if error is detected. 1470 */ 1471 static int hva_to_pfn_slow(unsigned long addr, bool *async, bool write_fault, 1472 bool *writable, kvm_pfn_t *pfn) 1473 { 1474 unsigned int flags = FOLL_HWPOISON; 1475 struct page *page; 1476 int npages = 0; 1477 1478 might_sleep(); 1479 1480 if (writable) 1481 *writable = write_fault; 1482 1483 if (write_fault) 1484 flags |= FOLL_WRITE; 1485 if (async) 1486 flags |= FOLL_NOWAIT; 1487 1488 npages = get_user_pages_unlocked(addr, 1, &page, flags); 1489 if (npages != 1) 1490 return npages; 1491 1492 /* map read fault as writable if possible */ 1493 if (unlikely(!write_fault) && writable) { 1494 struct page *wpage; 1495 1496 if (__get_user_pages_fast(addr, 1, 1, &wpage) == 1) { 1497 *writable = true; 1498 put_page(page); 1499 page = wpage; 1500 } 1501 } 1502 *pfn = page_to_pfn(page); 1503 return npages; 1504 } 1505 1506 static bool vma_is_valid(struct vm_area_struct *vma, bool write_fault) 1507 { 1508 if (unlikely(!(vma->vm_flags & VM_READ))) 1509 return false; 1510 1511 if (write_fault && (unlikely(!(vma->vm_flags & VM_WRITE)))) 1512 return false; 1513 1514 return true; 1515 } 1516 1517 static int hva_to_pfn_remapped(struct vm_area_struct *vma, 1518 unsigned long addr, bool *async, 1519 bool write_fault, bool *writable, 1520 kvm_pfn_t *p_pfn) 1521 { 1522 unsigned long pfn; 1523 int r; 1524 1525 r = follow_pfn(vma, addr, &pfn); 1526 if (r) { 1527 /* 1528 * get_user_pages fails for VM_IO and VM_PFNMAP vmas and does 1529 * not call the fault handler, so do it here. 1530 */ 1531 bool unlocked = false; 1532 r = fixup_user_fault(current, current->mm, addr, 1533 (write_fault ? FAULT_FLAG_WRITE : 0), 1534 &unlocked); 1535 if (unlocked) 1536 return -EAGAIN; 1537 if (r) 1538 return r; 1539 1540 r = follow_pfn(vma, addr, &pfn); 1541 if (r) 1542 return r; 1543 1544 } 1545 1546 if (writable) 1547 *writable = true; 1548 1549 /* 1550 * Get a reference here because callers of *hva_to_pfn* and 1551 * *gfn_to_pfn* ultimately call kvm_release_pfn_clean on the 1552 * returned pfn. This is only needed if the VMA has VM_MIXEDMAP 1553 * set, but the kvm_get_pfn/kvm_release_pfn_clean pair will 1554 * simply do nothing for reserved pfns. 1555 * 1556 * Whoever called remap_pfn_range is also going to call e.g. 1557 * unmap_mapping_range before the underlying pages are freed, 1558 * causing a call to our MMU notifier. 1559 */ 1560 kvm_get_pfn(pfn); 1561 1562 *p_pfn = pfn; 1563 return 0; 1564 } 1565 1566 /* 1567 * Pin guest page in memory and return its pfn. 1568 * @addr: host virtual address which maps memory to the guest 1569 * @atomic: whether this function can sleep 1570 * @async: whether this function need to wait IO complete if the 1571 * host page is not in the memory 1572 * @write_fault: whether we should get a writable host page 1573 * @writable: whether it allows to map a writable host page for !@write_fault 1574 * 1575 * The function will map a writable host page for these two cases: 1576 * 1): @write_fault = true 1577 * 2): @write_fault = false && @writable, @writable will tell the caller 1578 * whether the mapping is writable. 1579 */ 1580 static kvm_pfn_t hva_to_pfn(unsigned long addr, bool atomic, bool *async, 1581 bool write_fault, bool *writable) 1582 { 1583 struct vm_area_struct *vma; 1584 kvm_pfn_t pfn = 0; 1585 int npages, r; 1586 1587 /* we can do it either atomically or asynchronously, not both */ 1588 BUG_ON(atomic && async); 1589 1590 if (hva_to_pfn_fast(addr, write_fault, writable, &pfn)) 1591 return pfn; 1592 1593 if (atomic) 1594 return KVM_PFN_ERR_FAULT; 1595 1596 npages = hva_to_pfn_slow(addr, async, write_fault, writable, &pfn); 1597 if (npages == 1) 1598 return pfn; 1599 1600 down_read(¤t->mm->mmap_sem); 1601 if (npages == -EHWPOISON || 1602 (!async && check_user_page_hwpoison(addr))) { 1603 pfn = KVM_PFN_ERR_HWPOISON; 1604 goto exit; 1605 } 1606 1607 retry: 1608 vma = find_vma_intersection(current->mm, addr, addr + 1); 1609 1610 if (vma == NULL) 1611 pfn = KVM_PFN_ERR_FAULT; 1612 else if (vma->vm_flags & (VM_IO | VM_PFNMAP)) { 1613 r = hva_to_pfn_remapped(vma, addr, async, write_fault, writable, &pfn); 1614 if (r == -EAGAIN) 1615 goto retry; 1616 if (r < 0) 1617 pfn = KVM_PFN_ERR_FAULT; 1618 } else { 1619 if (async && vma_is_valid(vma, write_fault)) 1620 *async = true; 1621 pfn = KVM_PFN_ERR_FAULT; 1622 } 1623 exit: 1624 up_read(¤t->mm->mmap_sem); 1625 return pfn; 1626 } 1627 1628 kvm_pfn_t __gfn_to_pfn_memslot(struct kvm_memory_slot *slot, gfn_t gfn, 1629 bool atomic, bool *async, bool write_fault, 1630 bool *writable) 1631 { 1632 unsigned long addr = __gfn_to_hva_many(slot, gfn, NULL, write_fault); 1633 1634 if (addr == KVM_HVA_ERR_RO_BAD) { 1635 if (writable) 1636 *writable = false; 1637 return KVM_PFN_ERR_RO_FAULT; 1638 } 1639 1640 if (kvm_is_error_hva(addr)) { 1641 if (writable) 1642 *writable = false; 1643 return KVM_PFN_NOSLOT; 1644 } 1645 1646 /* Do not map writable pfn in the readonly memslot. */ 1647 if (writable && memslot_is_readonly(slot)) { 1648 *writable = false; 1649 writable = NULL; 1650 } 1651 1652 return hva_to_pfn(addr, atomic, async, write_fault, 1653 writable); 1654 } 1655 EXPORT_SYMBOL_GPL(__gfn_to_pfn_memslot); 1656 1657 kvm_pfn_t gfn_to_pfn_prot(struct kvm *kvm, gfn_t gfn, bool write_fault, 1658 bool *writable) 1659 { 1660 return __gfn_to_pfn_memslot(gfn_to_memslot(kvm, gfn), gfn, false, NULL, 1661 write_fault, writable); 1662 } 1663 EXPORT_SYMBOL_GPL(gfn_to_pfn_prot); 1664 1665 kvm_pfn_t gfn_to_pfn_memslot(struct kvm_memory_slot *slot, gfn_t gfn) 1666 { 1667 return __gfn_to_pfn_memslot(slot, gfn, false, NULL, true, NULL); 1668 } 1669 EXPORT_SYMBOL_GPL(gfn_to_pfn_memslot); 1670 1671 kvm_pfn_t gfn_to_pfn_memslot_atomic(struct kvm_memory_slot *slot, gfn_t gfn) 1672 { 1673 return __gfn_to_pfn_memslot(slot, gfn, true, NULL, true, NULL); 1674 } 1675 EXPORT_SYMBOL_GPL(gfn_to_pfn_memslot_atomic); 1676 1677 kvm_pfn_t gfn_to_pfn_atomic(struct kvm *kvm, gfn_t gfn) 1678 { 1679 return gfn_to_pfn_memslot_atomic(gfn_to_memslot(kvm, gfn), gfn); 1680 } 1681 EXPORT_SYMBOL_GPL(gfn_to_pfn_atomic); 1682 1683 kvm_pfn_t kvm_vcpu_gfn_to_pfn_atomic(struct kvm_vcpu *vcpu, gfn_t gfn) 1684 { 1685 return gfn_to_pfn_memslot_atomic(kvm_vcpu_gfn_to_memslot(vcpu, gfn), gfn); 1686 } 1687 EXPORT_SYMBOL_GPL(kvm_vcpu_gfn_to_pfn_atomic); 1688 1689 kvm_pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn) 1690 { 1691 return gfn_to_pfn_memslot(gfn_to_memslot(kvm, gfn), gfn); 1692 } 1693 EXPORT_SYMBOL_GPL(gfn_to_pfn); 1694 1695 kvm_pfn_t kvm_vcpu_gfn_to_pfn(struct kvm_vcpu *vcpu, gfn_t gfn) 1696 { 1697 return gfn_to_pfn_memslot(kvm_vcpu_gfn_to_memslot(vcpu, gfn), gfn); 1698 } 1699 EXPORT_SYMBOL_GPL(kvm_vcpu_gfn_to_pfn); 1700 1701 int gfn_to_page_many_atomic(struct kvm_memory_slot *slot, gfn_t gfn, 1702 struct page **pages, int nr_pages) 1703 { 1704 unsigned long addr; 1705 gfn_t entry = 0; 1706 1707 addr = gfn_to_hva_many(slot, gfn, &entry); 1708 if (kvm_is_error_hva(addr)) 1709 return -1; 1710 1711 if (entry < nr_pages) 1712 return 0; 1713 1714 return __get_user_pages_fast(addr, nr_pages, 1, pages); 1715 } 1716 EXPORT_SYMBOL_GPL(gfn_to_page_many_atomic); 1717 1718 static struct page *kvm_pfn_to_page(kvm_pfn_t pfn) 1719 { 1720 if (is_error_noslot_pfn(pfn)) 1721 return KVM_ERR_PTR_BAD_PAGE; 1722 1723 if (kvm_is_reserved_pfn(pfn)) { 1724 WARN_ON(1); 1725 return KVM_ERR_PTR_BAD_PAGE; 1726 } 1727 1728 return pfn_to_page(pfn); 1729 } 1730 1731 struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn) 1732 { 1733 kvm_pfn_t pfn; 1734 1735 pfn = gfn_to_pfn(kvm, gfn); 1736 1737 return kvm_pfn_to_page(pfn); 1738 } 1739 EXPORT_SYMBOL_GPL(gfn_to_page); 1740 1741 struct page *kvm_vcpu_gfn_to_page(struct kvm_vcpu *vcpu, gfn_t gfn) 1742 { 1743 kvm_pfn_t pfn; 1744 1745 pfn = kvm_vcpu_gfn_to_pfn(vcpu, gfn); 1746 1747 return kvm_pfn_to_page(pfn); 1748 } 1749 EXPORT_SYMBOL_GPL(kvm_vcpu_gfn_to_page); 1750 1751 void kvm_release_page_clean(struct page *page) 1752 { 1753 WARN_ON(is_error_page(page)); 1754 1755 kvm_release_pfn_clean(page_to_pfn(page)); 1756 } 1757 EXPORT_SYMBOL_GPL(kvm_release_page_clean); 1758 1759 void kvm_release_pfn_clean(kvm_pfn_t pfn) 1760 { 1761 if (!is_error_noslot_pfn(pfn) && !kvm_is_reserved_pfn(pfn)) 1762 put_page(pfn_to_page(pfn)); 1763 } 1764 EXPORT_SYMBOL_GPL(kvm_release_pfn_clean); 1765 1766 void kvm_release_page_dirty(struct page *page) 1767 { 1768 WARN_ON(is_error_page(page)); 1769 1770 kvm_release_pfn_dirty(page_to_pfn(page)); 1771 } 1772 EXPORT_SYMBOL_GPL(kvm_release_page_dirty); 1773 1774 void kvm_release_pfn_dirty(kvm_pfn_t pfn) 1775 { 1776 kvm_set_pfn_dirty(pfn); 1777 kvm_release_pfn_clean(pfn); 1778 } 1779 EXPORT_SYMBOL_GPL(kvm_release_pfn_dirty); 1780 1781 void kvm_set_pfn_dirty(kvm_pfn_t pfn) 1782 { 1783 if (!kvm_is_reserved_pfn(pfn)) { 1784 struct page *page = pfn_to_page(pfn); 1785 1786 if (!PageReserved(page)) 1787 SetPageDirty(page); 1788 } 1789 } 1790 EXPORT_SYMBOL_GPL(kvm_set_pfn_dirty); 1791 1792 void kvm_set_pfn_accessed(kvm_pfn_t pfn) 1793 { 1794 if (!kvm_is_reserved_pfn(pfn)) 1795 mark_page_accessed(pfn_to_page(pfn)); 1796 } 1797 EXPORT_SYMBOL_GPL(kvm_set_pfn_accessed); 1798 1799 void kvm_get_pfn(kvm_pfn_t pfn) 1800 { 1801 if (!kvm_is_reserved_pfn(pfn)) 1802 get_page(pfn_to_page(pfn)); 1803 } 1804 EXPORT_SYMBOL_GPL(kvm_get_pfn); 1805 1806 static int next_segment(unsigned long len, int offset) 1807 { 1808 if (len > PAGE_SIZE - offset) 1809 return PAGE_SIZE - offset; 1810 else 1811 return len; 1812 } 1813 1814 static int __kvm_read_guest_page(struct kvm_memory_slot *slot, gfn_t gfn, 1815 void *data, int offset, int len) 1816 { 1817 int r; 1818 unsigned long addr; 1819 1820 addr = gfn_to_hva_memslot_prot(slot, gfn, NULL); 1821 if (kvm_is_error_hva(addr)) 1822 return -EFAULT; 1823 r = __copy_from_user(data, (void __user *)addr + offset, len); 1824 if (r) 1825 return -EFAULT; 1826 return 0; 1827 } 1828 1829 int kvm_read_guest_page(struct kvm *kvm, gfn_t gfn, void *data, int offset, 1830 int len) 1831 { 1832 struct kvm_memory_slot *slot = gfn_to_memslot(kvm, gfn); 1833 1834 return __kvm_read_guest_page(slot, gfn, data, offset, len); 1835 } 1836 EXPORT_SYMBOL_GPL(kvm_read_guest_page); 1837 1838 int kvm_vcpu_read_guest_page(struct kvm_vcpu *vcpu, gfn_t gfn, void *data, 1839 int offset, int len) 1840 { 1841 struct kvm_memory_slot *slot = kvm_vcpu_gfn_to_memslot(vcpu, gfn); 1842 1843 return __kvm_read_guest_page(slot, gfn, data, offset, len); 1844 } 1845 EXPORT_SYMBOL_GPL(kvm_vcpu_read_guest_page); 1846 1847 int kvm_read_guest(struct kvm *kvm, gpa_t gpa, void *data, unsigned long len) 1848 { 1849 gfn_t gfn = gpa >> PAGE_SHIFT; 1850 int seg; 1851 int offset = offset_in_page(gpa); 1852 int ret; 1853 1854 while ((seg = next_segment(len, offset)) != 0) { 1855 ret = kvm_read_guest_page(kvm, gfn, data, offset, seg); 1856 if (ret < 0) 1857 return ret; 1858 offset = 0; 1859 len -= seg; 1860 data += seg; 1861 ++gfn; 1862 } 1863 return 0; 1864 } 1865 EXPORT_SYMBOL_GPL(kvm_read_guest); 1866 1867 int kvm_vcpu_read_guest(struct kvm_vcpu *vcpu, gpa_t gpa, void *data, unsigned long len) 1868 { 1869 gfn_t gfn = gpa >> PAGE_SHIFT; 1870 int seg; 1871 int offset = offset_in_page(gpa); 1872 int ret; 1873 1874 while ((seg = next_segment(len, offset)) != 0) { 1875 ret = kvm_vcpu_read_guest_page(vcpu, gfn, data, offset, seg); 1876 if (ret < 0) 1877 return ret; 1878 offset = 0; 1879 len -= seg; 1880 data += seg; 1881 ++gfn; 1882 } 1883 return 0; 1884 } 1885 EXPORT_SYMBOL_GPL(kvm_vcpu_read_guest); 1886 1887 static int __kvm_read_guest_atomic(struct kvm_memory_slot *slot, gfn_t gfn, 1888 void *data, int offset, unsigned long len) 1889 { 1890 int r; 1891 unsigned long addr; 1892 1893 addr = gfn_to_hva_memslot_prot(slot, gfn, NULL); 1894 if (kvm_is_error_hva(addr)) 1895 return -EFAULT; 1896 pagefault_disable(); 1897 r = __copy_from_user_inatomic(data, (void __user *)addr + offset, len); 1898 pagefault_enable(); 1899 if (r) 1900 return -EFAULT; 1901 return 0; 1902 } 1903 1904 int kvm_read_guest_atomic(struct kvm *kvm, gpa_t gpa, void *data, 1905 unsigned long len) 1906 { 1907 gfn_t gfn = gpa >> PAGE_SHIFT; 1908 struct kvm_memory_slot *slot = gfn_to_memslot(kvm, gfn); 1909 int offset = offset_in_page(gpa); 1910 1911 return __kvm_read_guest_atomic(slot, gfn, data, offset, len); 1912 } 1913 EXPORT_SYMBOL_GPL(kvm_read_guest_atomic); 1914 1915 int kvm_vcpu_read_guest_atomic(struct kvm_vcpu *vcpu, gpa_t gpa, 1916 void *data, unsigned long len) 1917 { 1918 gfn_t gfn = gpa >> PAGE_SHIFT; 1919 struct kvm_memory_slot *slot = kvm_vcpu_gfn_to_memslot(vcpu, gfn); 1920 int offset = offset_in_page(gpa); 1921 1922 return __kvm_read_guest_atomic(slot, gfn, data, offset, len); 1923 } 1924 EXPORT_SYMBOL_GPL(kvm_vcpu_read_guest_atomic); 1925 1926 static int __kvm_write_guest_page(struct kvm_memory_slot *memslot, gfn_t gfn, 1927 const void *data, int offset, int len) 1928 { 1929 int r; 1930 unsigned long addr; 1931 1932 addr = gfn_to_hva_memslot(memslot, gfn); 1933 if (kvm_is_error_hva(addr)) 1934 return -EFAULT; 1935 r = __copy_to_user((void __user *)addr + offset, data, len); 1936 if (r) 1937 return -EFAULT; 1938 mark_page_dirty_in_slot(memslot, gfn); 1939 return 0; 1940 } 1941 1942 int kvm_write_guest_page(struct kvm *kvm, gfn_t gfn, 1943 const void *data, int offset, int len) 1944 { 1945 struct kvm_memory_slot *slot = gfn_to_memslot(kvm, gfn); 1946 1947 return __kvm_write_guest_page(slot, gfn, data, offset, len); 1948 } 1949 EXPORT_SYMBOL_GPL(kvm_write_guest_page); 1950 1951 int kvm_vcpu_write_guest_page(struct kvm_vcpu *vcpu, gfn_t gfn, 1952 const void *data, int offset, int len) 1953 { 1954 struct kvm_memory_slot *slot = kvm_vcpu_gfn_to_memslot(vcpu, gfn); 1955 1956 return __kvm_write_guest_page(slot, gfn, data, offset, len); 1957 } 1958 EXPORT_SYMBOL_GPL(kvm_vcpu_write_guest_page); 1959 1960 int kvm_write_guest(struct kvm *kvm, gpa_t gpa, const void *data, 1961 unsigned long len) 1962 { 1963 gfn_t gfn = gpa >> PAGE_SHIFT; 1964 int seg; 1965 int offset = offset_in_page(gpa); 1966 int ret; 1967 1968 while ((seg = next_segment(len, offset)) != 0) { 1969 ret = kvm_write_guest_page(kvm, gfn, data, offset, seg); 1970 if (ret < 0) 1971 return ret; 1972 offset = 0; 1973 len -= seg; 1974 data += seg; 1975 ++gfn; 1976 } 1977 return 0; 1978 } 1979 EXPORT_SYMBOL_GPL(kvm_write_guest); 1980 1981 int kvm_vcpu_write_guest(struct kvm_vcpu *vcpu, gpa_t gpa, const void *data, 1982 unsigned long len) 1983 { 1984 gfn_t gfn = gpa >> PAGE_SHIFT; 1985 int seg; 1986 int offset = offset_in_page(gpa); 1987 int ret; 1988 1989 while ((seg = next_segment(len, offset)) != 0) { 1990 ret = kvm_vcpu_write_guest_page(vcpu, gfn, data, offset, seg); 1991 if (ret < 0) 1992 return ret; 1993 offset = 0; 1994 len -= seg; 1995 data += seg; 1996 ++gfn; 1997 } 1998 return 0; 1999 } 2000 EXPORT_SYMBOL_GPL(kvm_vcpu_write_guest); 2001 2002 static int __kvm_gfn_to_hva_cache_init(struct kvm_memslots *slots, 2003 struct gfn_to_hva_cache *ghc, 2004 gpa_t gpa, unsigned long len) 2005 { 2006 int offset = offset_in_page(gpa); 2007 gfn_t start_gfn = gpa >> PAGE_SHIFT; 2008 gfn_t end_gfn = (gpa + len - 1) >> PAGE_SHIFT; 2009 gfn_t nr_pages_needed = end_gfn - start_gfn + 1; 2010 gfn_t nr_pages_avail; 2011 int r = start_gfn <= end_gfn ? 0 : -EINVAL; 2012 2013 ghc->gpa = gpa; 2014 ghc->generation = slots->generation; 2015 ghc->len = len; 2016 ghc->hva = KVM_HVA_ERR_BAD; 2017 2018 /* 2019 * If the requested region crosses two memslots, we still 2020 * verify that the entire region is valid here. 2021 */ 2022 while (!r && start_gfn <= end_gfn) { 2023 ghc->memslot = __gfn_to_memslot(slots, start_gfn); 2024 ghc->hva = gfn_to_hva_many(ghc->memslot, start_gfn, 2025 &nr_pages_avail); 2026 if (kvm_is_error_hva(ghc->hva)) 2027 r = -EFAULT; 2028 start_gfn += nr_pages_avail; 2029 } 2030 2031 /* Use the slow path for cross page reads and writes. */ 2032 if (!r && nr_pages_needed == 1) 2033 ghc->hva += offset; 2034 else 2035 ghc->memslot = NULL; 2036 2037 return r; 2038 } 2039 2040 int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc, 2041 gpa_t gpa, unsigned long len) 2042 { 2043 struct kvm_memslots *slots = kvm_memslots(kvm); 2044 return __kvm_gfn_to_hva_cache_init(slots, ghc, gpa, len); 2045 } 2046 EXPORT_SYMBOL_GPL(kvm_gfn_to_hva_cache_init); 2047 2048 int kvm_write_guest_offset_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, 2049 void *data, unsigned int offset, 2050 unsigned long len) 2051 { 2052 struct kvm_memslots *slots = kvm_memslots(kvm); 2053 int r; 2054 gpa_t gpa = ghc->gpa + offset; 2055 2056 BUG_ON(len + offset > ghc->len); 2057 2058 if (slots->generation != ghc->generation) 2059 __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len); 2060 2061 if (unlikely(!ghc->memslot)) 2062 return kvm_write_guest(kvm, gpa, data, len); 2063 2064 if (kvm_is_error_hva(ghc->hva)) 2065 return -EFAULT; 2066 2067 r = __copy_to_user((void __user *)ghc->hva + offset, data, len); 2068 if (r) 2069 return -EFAULT; 2070 mark_page_dirty_in_slot(ghc->memslot, gpa >> PAGE_SHIFT); 2071 2072 return 0; 2073 } 2074 EXPORT_SYMBOL_GPL(kvm_write_guest_offset_cached); 2075 2076 int kvm_write_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, 2077 void *data, unsigned long len) 2078 { 2079 return kvm_write_guest_offset_cached(kvm, ghc, data, 0, len); 2080 } 2081 EXPORT_SYMBOL_GPL(kvm_write_guest_cached); 2082 2083 int kvm_read_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, 2084 void *data, unsigned long len) 2085 { 2086 struct kvm_memslots *slots = kvm_memslots(kvm); 2087 int r; 2088 2089 BUG_ON(len > ghc->len); 2090 2091 if (slots->generation != ghc->generation) 2092 __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len); 2093 2094 if (unlikely(!ghc->memslot)) 2095 return kvm_read_guest(kvm, ghc->gpa, data, len); 2096 2097 if (kvm_is_error_hva(ghc->hva)) 2098 return -EFAULT; 2099 2100 r = __copy_from_user(data, (void __user *)ghc->hva, len); 2101 if (r) 2102 return -EFAULT; 2103 2104 return 0; 2105 } 2106 EXPORT_SYMBOL_GPL(kvm_read_guest_cached); 2107 2108 int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len) 2109 { 2110 const void *zero_page = (const void *) __va(page_to_phys(ZERO_PAGE(0))); 2111 2112 return kvm_write_guest_page(kvm, gfn, zero_page, offset, len); 2113 } 2114 EXPORT_SYMBOL_GPL(kvm_clear_guest_page); 2115 2116 int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len) 2117 { 2118 gfn_t gfn = gpa >> PAGE_SHIFT; 2119 int seg; 2120 int offset = offset_in_page(gpa); 2121 int ret; 2122 2123 while ((seg = next_segment(len, offset)) != 0) { 2124 ret = kvm_clear_guest_page(kvm, gfn, offset, seg); 2125 if (ret < 0) 2126 return ret; 2127 offset = 0; 2128 len -= seg; 2129 ++gfn; 2130 } 2131 return 0; 2132 } 2133 EXPORT_SYMBOL_GPL(kvm_clear_guest); 2134 2135 static void mark_page_dirty_in_slot(struct kvm_memory_slot *memslot, 2136 gfn_t gfn) 2137 { 2138 if (memslot && memslot->dirty_bitmap) { 2139 unsigned long rel_gfn = gfn - memslot->base_gfn; 2140 2141 set_bit_le(rel_gfn, memslot->dirty_bitmap); 2142 } 2143 } 2144 2145 void mark_page_dirty(struct kvm *kvm, gfn_t gfn) 2146 { 2147 struct kvm_memory_slot *memslot; 2148 2149 memslot = gfn_to_memslot(kvm, gfn); 2150 mark_page_dirty_in_slot(memslot, gfn); 2151 } 2152 EXPORT_SYMBOL_GPL(mark_page_dirty); 2153 2154 void kvm_vcpu_mark_page_dirty(struct kvm_vcpu *vcpu, gfn_t gfn) 2155 { 2156 struct kvm_memory_slot *memslot; 2157 2158 memslot = kvm_vcpu_gfn_to_memslot(vcpu, gfn); 2159 mark_page_dirty_in_slot(memslot, gfn); 2160 } 2161 EXPORT_SYMBOL_GPL(kvm_vcpu_mark_page_dirty); 2162 2163 void kvm_sigset_activate(struct kvm_vcpu *vcpu) 2164 { 2165 if (!vcpu->sigset_active) 2166 return; 2167 2168 /* 2169 * This does a lockless modification of ->real_blocked, which is fine 2170 * because, only current can change ->real_blocked and all readers of 2171 * ->real_blocked don't care as long ->real_blocked is always a subset 2172 * of ->blocked. 2173 */ 2174 sigprocmask(SIG_SETMASK, &vcpu->sigset, ¤t->real_blocked); 2175 } 2176 2177 void kvm_sigset_deactivate(struct kvm_vcpu *vcpu) 2178 { 2179 if (!vcpu->sigset_active) 2180 return; 2181 2182 sigprocmask(SIG_SETMASK, ¤t->real_blocked, NULL); 2183 sigemptyset(¤t->real_blocked); 2184 } 2185 2186 static void grow_halt_poll_ns(struct kvm_vcpu *vcpu) 2187 { 2188 unsigned int old, val, grow; 2189 2190 old = val = vcpu->halt_poll_ns; 2191 grow = READ_ONCE(halt_poll_ns_grow); 2192 /* 10us base */ 2193 if (val == 0 && grow) 2194 val = 10000; 2195 else 2196 val *= grow; 2197 2198 if (val > halt_poll_ns) 2199 val = halt_poll_ns; 2200 2201 vcpu->halt_poll_ns = val; 2202 trace_kvm_halt_poll_ns_grow(vcpu->vcpu_id, val, old); 2203 } 2204 2205 static void shrink_halt_poll_ns(struct kvm_vcpu *vcpu) 2206 { 2207 unsigned int old, val, shrink; 2208 2209 old = val = vcpu->halt_poll_ns; 2210 shrink = READ_ONCE(halt_poll_ns_shrink); 2211 if (shrink == 0) 2212 val = 0; 2213 else 2214 val /= shrink; 2215 2216 vcpu->halt_poll_ns = val; 2217 trace_kvm_halt_poll_ns_shrink(vcpu->vcpu_id, val, old); 2218 } 2219 2220 static int kvm_vcpu_check_block(struct kvm_vcpu *vcpu) 2221 { 2222 int ret = -EINTR; 2223 int idx = srcu_read_lock(&vcpu->kvm->srcu); 2224 2225 if (kvm_arch_vcpu_runnable(vcpu)) { 2226 kvm_make_request(KVM_REQ_UNHALT, vcpu); 2227 goto out; 2228 } 2229 if (kvm_cpu_has_pending_timer(vcpu)) 2230 goto out; 2231 if (signal_pending(current)) 2232 goto out; 2233 2234 ret = 0; 2235 out: 2236 srcu_read_unlock(&vcpu->kvm->srcu, idx); 2237 return ret; 2238 } 2239 2240 /* 2241 * The vCPU has executed a HLT instruction with in-kernel mode enabled. 2242 */ 2243 void kvm_vcpu_block(struct kvm_vcpu *vcpu) 2244 { 2245 ktime_t start, cur; 2246 DECLARE_SWAITQUEUE(wait); 2247 bool waited = false; 2248 u64 block_ns; 2249 2250 start = cur = ktime_get(); 2251 if (vcpu->halt_poll_ns) { 2252 ktime_t stop = ktime_add_ns(ktime_get(), vcpu->halt_poll_ns); 2253 2254 ++vcpu->stat.halt_attempted_poll; 2255 do { 2256 /* 2257 * This sets KVM_REQ_UNHALT if an interrupt 2258 * arrives. 2259 */ 2260 if (kvm_vcpu_check_block(vcpu) < 0) { 2261 ++vcpu->stat.halt_successful_poll; 2262 if (!vcpu_valid_wakeup(vcpu)) 2263 ++vcpu->stat.halt_poll_invalid; 2264 goto out; 2265 } 2266 cur = ktime_get(); 2267 } while (single_task_running() && ktime_before(cur, stop)); 2268 } 2269 2270 kvm_arch_vcpu_blocking(vcpu); 2271 2272 for (;;) { 2273 prepare_to_swait_exclusive(&vcpu->wq, &wait, TASK_INTERRUPTIBLE); 2274 2275 if (kvm_vcpu_check_block(vcpu) < 0) 2276 break; 2277 2278 waited = true; 2279 schedule(); 2280 } 2281 2282 finish_swait(&vcpu->wq, &wait); 2283 cur = ktime_get(); 2284 2285 kvm_arch_vcpu_unblocking(vcpu); 2286 out: 2287 block_ns = ktime_to_ns(cur) - ktime_to_ns(start); 2288 2289 if (!vcpu_valid_wakeup(vcpu)) 2290 shrink_halt_poll_ns(vcpu); 2291 else if (halt_poll_ns) { 2292 if (block_ns <= vcpu->halt_poll_ns) 2293 ; 2294 /* we had a long block, shrink polling */ 2295 else if (vcpu->halt_poll_ns && block_ns > halt_poll_ns) 2296 shrink_halt_poll_ns(vcpu); 2297 /* we had a short halt and our poll time is too small */ 2298 else if (vcpu->halt_poll_ns < halt_poll_ns && 2299 block_ns < halt_poll_ns) 2300 grow_halt_poll_ns(vcpu); 2301 } else 2302 vcpu->halt_poll_ns = 0; 2303 2304 trace_kvm_vcpu_wakeup(block_ns, waited, vcpu_valid_wakeup(vcpu)); 2305 kvm_arch_vcpu_block_finish(vcpu); 2306 } 2307 EXPORT_SYMBOL_GPL(kvm_vcpu_block); 2308 2309 bool kvm_vcpu_wake_up(struct kvm_vcpu *vcpu) 2310 { 2311 struct swait_queue_head *wqp; 2312 2313 wqp = kvm_arch_vcpu_wq(vcpu); 2314 if (swq_has_sleeper(wqp)) { 2315 swake_up_one(wqp); 2316 ++vcpu->stat.halt_wakeup; 2317 return true; 2318 } 2319 2320 return false; 2321 } 2322 EXPORT_SYMBOL_GPL(kvm_vcpu_wake_up); 2323 2324 #ifndef CONFIG_S390 2325 /* 2326 * Kick a sleeping VCPU, or a guest VCPU in guest mode, into host kernel mode. 2327 */ 2328 void kvm_vcpu_kick(struct kvm_vcpu *vcpu) 2329 { 2330 int me; 2331 int cpu = vcpu->cpu; 2332 2333 if (kvm_vcpu_wake_up(vcpu)) 2334 return; 2335 2336 me = get_cpu(); 2337 if (cpu != me && (unsigned)cpu < nr_cpu_ids && cpu_online(cpu)) 2338 if (kvm_arch_vcpu_should_kick(vcpu)) 2339 smp_send_reschedule(cpu); 2340 put_cpu(); 2341 } 2342 EXPORT_SYMBOL_GPL(kvm_vcpu_kick); 2343 #endif /* !CONFIG_S390 */ 2344 2345 int kvm_vcpu_yield_to(struct kvm_vcpu *target) 2346 { 2347 struct pid *pid; 2348 struct task_struct *task = NULL; 2349 int ret = 0; 2350 2351 rcu_read_lock(); 2352 pid = rcu_dereference(target->pid); 2353 if (pid) 2354 task = get_pid_task(pid, PIDTYPE_PID); 2355 rcu_read_unlock(); 2356 if (!task) 2357 return ret; 2358 ret = yield_to(task, 1); 2359 put_task_struct(task); 2360 2361 return ret; 2362 } 2363 EXPORT_SYMBOL_GPL(kvm_vcpu_yield_to); 2364 2365 /* 2366 * Helper that checks whether a VCPU is eligible for directed yield. 2367 * Most eligible candidate to yield is decided by following heuristics: 2368 * 2369 * (a) VCPU which has not done pl-exit or cpu relax intercepted recently 2370 * (preempted lock holder), indicated by @in_spin_loop. 2371 * Set at the beiginning and cleared at the end of interception/PLE handler. 2372 * 2373 * (b) VCPU which has done pl-exit/ cpu relax intercepted but did not get 2374 * chance last time (mostly it has become eligible now since we have probably 2375 * yielded to lockholder in last iteration. This is done by toggling 2376 * @dy_eligible each time a VCPU checked for eligibility.) 2377 * 2378 * Yielding to a recently pl-exited/cpu relax intercepted VCPU before yielding 2379 * to preempted lock-holder could result in wrong VCPU selection and CPU 2380 * burning. Giving priority for a potential lock-holder increases lock 2381 * progress. 2382 * 2383 * Since algorithm is based on heuristics, accessing another VCPU data without 2384 * locking does not harm. It may result in trying to yield to same VCPU, fail 2385 * and continue with next VCPU and so on. 2386 */ 2387 static bool kvm_vcpu_eligible_for_directed_yield(struct kvm_vcpu *vcpu) 2388 { 2389 #ifdef CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT 2390 bool eligible; 2391 2392 eligible = !vcpu->spin_loop.in_spin_loop || 2393 vcpu->spin_loop.dy_eligible; 2394 2395 if (vcpu->spin_loop.in_spin_loop) 2396 kvm_vcpu_set_dy_eligible(vcpu, !vcpu->spin_loop.dy_eligible); 2397 2398 return eligible; 2399 #else 2400 return true; 2401 #endif 2402 } 2403 2404 void kvm_vcpu_on_spin(struct kvm_vcpu *me, bool yield_to_kernel_mode) 2405 { 2406 struct kvm *kvm = me->kvm; 2407 struct kvm_vcpu *vcpu; 2408 int last_boosted_vcpu = me->kvm->last_boosted_vcpu; 2409 int yielded = 0; 2410 int try = 3; 2411 int pass; 2412 int i; 2413 2414 kvm_vcpu_set_in_spin_loop(me, true); 2415 /* 2416 * We boost the priority of a VCPU that is runnable but not 2417 * currently running, because it got preempted by something 2418 * else and called schedule in __vcpu_run. Hopefully that 2419 * VCPU is holding the lock that we need and will release it. 2420 * We approximate round-robin by starting at the last boosted VCPU. 2421 */ 2422 for (pass = 0; pass < 2 && !yielded && try; pass++) { 2423 kvm_for_each_vcpu(i, vcpu, kvm) { 2424 if (!pass && i <= last_boosted_vcpu) { 2425 i = last_boosted_vcpu; 2426 continue; 2427 } else if (pass && i > last_boosted_vcpu) 2428 break; 2429 if (!READ_ONCE(vcpu->preempted)) 2430 continue; 2431 if (vcpu == me) 2432 continue; 2433 if (swait_active(&vcpu->wq) && !kvm_arch_vcpu_runnable(vcpu)) 2434 continue; 2435 if (yield_to_kernel_mode && !kvm_arch_vcpu_in_kernel(vcpu)) 2436 continue; 2437 if (!kvm_vcpu_eligible_for_directed_yield(vcpu)) 2438 continue; 2439 2440 yielded = kvm_vcpu_yield_to(vcpu); 2441 if (yielded > 0) { 2442 kvm->last_boosted_vcpu = i; 2443 break; 2444 } else if (yielded < 0) { 2445 try--; 2446 if (!try) 2447 break; 2448 } 2449 } 2450 } 2451 kvm_vcpu_set_in_spin_loop(me, false); 2452 2453 /* Ensure vcpu is not eligible during next spinloop */ 2454 kvm_vcpu_set_dy_eligible(me, false); 2455 } 2456 EXPORT_SYMBOL_GPL(kvm_vcpu_on_spin); 2457 2458 static vm_fault_t kvm_vcpu_fault(struct vm_fault *vmf) 2459 { 2460 struct kvm_vcpu *vcpu = vmf->vma->vm_file->private_data; 2461 struct page *page; 2462 2463 if (vmf->pgoff == 0) 2464 page = virt_to_page(vcpu->run); 2465 #ifdef CONFIG_X86 2466 else if (vmf->pgoff == KVM_PIO_PAGE_OFFSET) 2467 page = virt_to_page(vcpu->arch.pio_data); 2468 #endif 2469 #ifdef CONFIG_KVM_MMIO 2470 else if (vmf->pgoff == KVM_COALESCED_MMIO_PAGE_OFFSET) 2471 page = virt_to_page(vcpu->kvm->coalesced_mmio_ring); 2472 #endif 2473 else 2474 return kvm_arch_vcpu_fault(vcpu, vmf); 2475 get_page(page); 2476 vmf->page = page; 2477 return 0; 2478 } 2479 2480 static const struct vm_operations_struct kvm_vcpu_vm_ops = { 2481 .fault = kvm_vcpu_fault, 2482 }; 2483 2484 static int kvm_vcpu_mmap(struct file *file, struct vm_area_struct *vma) 2485 { 2486 vma->vm_ops = &kvm_vcpu_vm_ops; 2487 return 0; 2488 } 2489 2490 static int kvm_vcpu_release(struct inode *inode, struct file *filp) 2491 { 2492 struct kvm_vcpu *vcpu = filp->private_data; 2493 2494 debugfs_remove_recursive(vcpu->debugfs_dentry); 2495 kvm_put_kvm(vcpu->kvm); 2496 return 0; 2497 } 2498 2499 static struct file_operations kvm_vcpu_fops = { 2500 .release = kvm_vcpu_release, 2501 .unlocked_ioctl = kvm_vcpu_ioctl, 2502 .mmap = kvm_vcpu_mmap, 2503 .llseek = noop_llseek, 2504 KVM_COMPAT(kvm_vcpu_compat_ioctl), 2505 }; 2506 2507 /* 2508 * Allocates an inode for the vcpu. 2509 */ 2510 static int create_vcpu_fd(struct kvm_vcpu *vcpu) 2511 { 2512 char name[8 + 1 + ITOA_MAX_LEN + 1]; 2513 2514 snprintf(name, sizeof(name), "kvm-vcpu:%d", vcpu->vcpu_id); 2515 return anon_inode_getfd(name, &kvm_vcpu_fops, vcpu, O_RDWR | O_CLOEXEC); 2516 } 2517 2518 static int kvm_create_vcpu_debugfs(struct kvm_vcpu *vcpu) 2519 { 2520 char dir_name[ITOA_MAX_LEN * 2]; 2521 int ret; 2522 2523 if (!kvm_arch_has_vcpu_debugfs()) 2524 return 0; 2525 2526 if (!debugfs_initialized()) 2527 return 0; 2528 2529 snprintf(dir_name, sizeof(dir_name), "vcpu%d", vcpu->vcpu_id); 2530 vcpu->debugfs_dentry = debugfs_create_dir(dir_name, 2531 vcpu->kvm->debugfs_dentry); 2532 if (!vcpu->debugfs_dentry) 2533 return -ENOMEM; 2534 2535 ret = kvm_arch_create_vcpu_debugfs(vcpu); 2536 if (ret < 0) { 2537 debugfs_remove_recursive(vcpu->debugfs_dentry); 2538 return ret; 2539 } 2540 2541 return 0; 2542 } 2543 2544 /* 2545 * Creates some virtual cpus. Good luck creating more than one. 2546 */ 2547 static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id) 2548 { 2549 int r; 2550 struct kvm_vcpu *vcpu; 2551 2552 if (id >= KVM_MAX_VCPU_ID) 2553 return -EINVAL; 2554 2555 mutex_lock(&kvm->lock); 2556 if (kvm->created_vcpus == KVM_MAX_VCPUS) { 2557 mutex_unlock(&kvm->lock); 2558 return -EINVAL; 2559 } 2560 2561 kvm->created_vcpus++; 2562 mutex_unlock(&kvm->lock); 2563 2564 vcpu = kvm_arch_vcpu_create(kvm, id); 2565 if (IS_ERR(vcpu)) { 2566 r = PTR_ERR(vcpu); 2567 goto vcpu_decrement; 2568 } 2569 2570 preempt_notifier_init(&vcpu->preempt_notifier, &kvm_preempt_ops); 2571 2572 r = kvm_arch_vcpu_setup(vcpu); 2573 if (r) 2574 goto vcpu_destroy; 2575 2576 r = kvm_create_vcpu_debugfs(vcpu); 2577 if (r) 2578 goto vcpu_destroy; 2579 2580 mutex_lock(&kvm->lock); 2581 if (kvm_get_vcpu_by_id(kvm, id)) { 2582 r = -EEXIST; 2583 goto unlock_vcpu_destroy; 2584 } 2585 2586 BUG_ON(kvm->vcpus[atomic_read(&kvm->online_vcpus)]); 2587 2588 /* Now it's all set up, let userspace reach it */ 2589 kvm_get_kvm(kvm); 2590 r = create_vcpu_fd(vcpu); 2591 if (r < 0) { 2592 kvm_put_kvm(kvm); 2593 goto unlock_vcpu_destroy; 2594 } 2595 2596 kvm->vcpus[atomic_read(&kvm->online_vcpus)] = vcpu; 2597 2598 /* 2599 * Pairs with smp_rmb() in kvm_get_vcpu. Write kvm->vcpus 2600 * before kvm->online_vcpu's incremented value. 2601 */ 2602 smp_wmb(); 2603 atomic_inc(&kvm->online_vcpus); 2604 2605 mutex_unlock(&kvm->lock); 2606 kvm_arch_vcpu_postcreate(vcpu); 2607 return r; 2608 2609 unlock_vcpu_destroy: 2610 mutex_unlock(&kvm->lock); 2611 debugfs_remove_recursive(vcpu->debugfs_dentry); 2612 vcpu_destroy: 2613 kvm_arch_vcpu_destroy(vcpu); 2614 vcpu_decrement: 2615 mutex_lock(&kvm->lock); 2616 kvm->created_vcpus--; 2617 mutex_unlock(&kvm->lock); 2618 return r; 2619 } 2620 2621 static int kvm_vcpu_ioctl_set_sigmask(struct kvm_vcpu *vcpu, sigset_t *sigset) 2622 { 2623 if (sigset) { 2624 sigdelsetmask(sigset, sigmask(SIGKILL)|sigmask(SIGSTOP)); 2625 vcpu->sigset_active = 1; 2626 vcpu->sigset = *sigset; 2627 } else 2628 vcpu->sigset_active = 0; 2629 return 0; 2630 } 2631 2632 static long kvm_vcpu_ioctl(struct file *filp, 2633 unsigned int ioctl, unsigned long arg) 2634 { 2635 struct kvm_vcpu *vcpu = filp->private_data; 2636 void __user *argp = (void __user *)arg; 2637 int r; 2638 struct kvm_fpu *fpu = NULL; 2639 struct kvm_sregs *kvm_sregs = NULL; 2640 2641 if (vcpu->kvm->mm != current->mm) 2642 return -EIO; 2643 2644 if (unlikely(_IOC_TYPE(ioctl) != KVMIO)) 2645 return -EINVAL; 2646 2647 /* 2648 * Some architectures have vcpu ioctls that are asynchronous to vcpu 2649 * execution; mutex_lock() would break them. 2650 */ 2651 r = kvm_arch_vcpu_async_ioctl(filp, ioctl, arg); 2652 if (r != -ENOIOCTLCMD) 2653 return r; 2654 2655 if (mutex_lock_killable(&vcpu->mutex)) 2656 return -EINTR; 2657 switch (ioctl) { 2658 case KVM_RUN: { 2659 struct pid *oldpid; 2660 r = -EINVAL; 2661 if (arg) 2662 goto out; 2663 oldpid = rcu_access_pointer(vcpu->pid); 2664 if (unlikely(oldpid != task_pid(current))) { 2665 /* The thread running this VCPU changed. */ 2666 struct pid *newpid; 2667 2668 r = kvm_arch_vcpu_run_pid_change(vcpu); 2669 if (r) 2670 break; 2671 2672 newpid = get_task_pid(current, PIDTYPE_PID); 2673 rcu_assign_pointer(vcpu->pid, newpid); 2674 if (oldpid) 2675 synchronize_rcu(); 2676 put_pid(oldpid); 2677 } 2678 r = kvm_arch_vcpu_ioctl_run(vcpu, vcpu->run); 2679 trace_kvm_userspace_exit(vcpu->run->exit_reason, r); 2680 break; 2681 } 2682 case KVM_GET_REGS: { 2683 struct kvm_regs *kvm_regs; 2684 2685 r = -ENOMEM; 2686 kvm_regs = kzalloc(sizeof(struct kvm_regs), GFP_KERNEL); 2687 if (!kvm_regs) 2688 goto out; 2689 r = kvm_arch_vcpu_ioctl_get_regs(vcpu, kvm_regs); 2690 if (r) 2691 goto out_free1; 2692 r = -EFAULT; 2693 if (copy_to_user(argp, kvm_regs, sizeof(struct kvm_regs))) 2694 goto out_free1; 2695 r = 0; 2696 out_free1: 2697 kfree(kvm_regs); 2698 break; 2699 } 2700 case KVM_SET_REGS: { 2701 struct kvm_regs *kvm_regs; 2702 2703 r = -ENOMEM; 2704 kvm_regs = memdup_user(argp, sizeof(*kvm_regs)); 2705 if (IS_ERR(kvm_regs)) { 2706 r = PTR_ERR(kvm_regs); 2707 goto out; 2708 } 2709 r = kvm_arch_vcpu_ioctl_set_regs(vcpu, kvm_regs); 2710 kfree(kvm_regs); 2711 break; 2712 } 2713 case KVM_GET_SREGS: { 2714 kvm_sregs = kzalloc(sizeof(struct kvm_sregs), GFP_KERNEL); 2715 r = -ENOMEM; 2716 if (!kvm_sregs) 2717 goto out; 2718 r = kvm_arch_vcpu_ioctl_get_sregs(vcpu, kvm_sregs); 2719 if (r) 2720 goto out; 2721 r = -EFAULT; 2722 if (copy_to_user(argp, kvm_sregs, sizeof(struct kvm_sregs))) 2723 goto out; 2724 r = 0; 2725 break; 2726 } 2727 case KVM_SET_SREGS: { 2728 kvm_sregs = memdup_user(argp, sizeof(*kvm_sregs)); 2729 if (IS_ERR(kvm_sregs)) { 2730 r = PTR_ERR(kvm_sregs); 2731 kvm_sregs = NULL; 2732 goto out; 2733 } 2734 r = kvm_arch_vcpu_ioctl_set_sregs(vcpu, kvm_sregs); 2735 break; 2736 } 2737 case KVM_GET_MP_STATE: { 2738 struct kvm_mp_state mp_state; 2739 2740 r = kvm_arch_vcpu_ioctl_get_mpstate(vcpu, &mp_state); 2741 if (r) 2742 goto out; 2743 r = -EFAULT; 2744 if (copy_to_user(argp, &mp_state, sizeof(mp_state))) 2745 goto out; 2746 r = 0; 2747 break; 2748 } 2749 case KVM_SET_MP_STATE: { 2750 struct kvm_mp_state mp_state; 2751 2752 r = -EFAULT; 2753 if (copy_from_user(&mp_state, argp, sizeof(mp_state))) 2754 goto out; 2755 r = kvm_arch_vcpu_ioctl_set_mpstate(vcpu, &mp_state); 2756 break; 2757 } 2758 case KVM_TRANSLATE: { 2759 struct kvm_translation tr; 2760 2761 r = -EFAULT; 2762 if (copy_from_user(&tr, argp, sizeof(tr))) 2763 goto out; 2764 r = kvm_arch_vcpu_ioctl_translate(vcpu, &tr); 2765 if (r) 2766 goto out; 2767 r = -EFAULT; 2768 if (copy_to_user(argp, &tr, sizeof(tr))) 2769 goto out; 2770 r = 0; 2771 break; 2772 } 2773 case KVM_SET_GUEST_DEBUG: { 2774 struct kvm_guest_debug dbg; 2775 2776 r = -EFAULT; 2777 if (copy_from_user(&dbg, argp, sizeof(dbg))) 2778 goto out; 2779 r = kvm_arch_vcpu_ioctl_set_guest_debug(vcpu, &dbg); 2780 break; 2781 } 2782 case KVM_SET_SIGNAL_MASK: { 2783 struct kvm_signal_mask __user *sigmask_arg = argp; 2784 struct kvm_signal_mask kvm_sigmask; 2785 sigset_t sigset, *p; 2786 2787 p = NULL; 2788 if (argp) { 2789 r = -EFAULT; 2790 if (copy_from_user(&kvm_sigmask, argp, 2791 sizeof(kvm_sigmask))) 2792 goto out; 2793 r = -EINVAL; 2794 if (kvm_sigmask.len != sizeof(sigset)) 2795 goto out; 2796 r = -EFAULT; 2797 if (copy_from_user(&sigset, sigmask_arg->sigset, 2798 sizeof(sigset))) 2799 goto out; 2800 p = &sigset; 2801 } 2802 r = kvm_vcpu_ioctl_set_sigmask(vcpu, p); 2803 break; 2804 } 2805 case KVM_GET_FPU: { 2806 fpu = kzalloc(sizeof(struct kvm_fpu), GFP_KERNEL); 2807 r = -ENOMEM; 2808 if (!fpu) 2809 goto out; 2810 r = kvm_arch_vcpu_ioctl_get_fpu(vcpu, fpu); 2811 if (r) 2812 goto out; 2813 r = -EFAULT; 2814 if (copy_to_user(argp, fpu, sizeof(struct kvm_fpu))) 2815 goto out; 2816 r = 0; 2817 break; 2818 } 2819 case KVM_SET_FPU: { 2820 fpu = memdup_user(argp, sizeof(*fpu)); 2821 if (IS_ERR(fpu)) { 2822 r = PTR_ERR(fpu); 2823 fpu = NULL; 2824 goto out; 2825 } 2826 r = kvm_arch_vcpu_ioctl_set_fpu(vcpu, fpu); 2827 break; 2828 } 2829 default: 2830 r = kvm_arch_vcpu_ioctl(filp, ioctl, arg); 2831 } 2832 out: 2833 mutex_unlock(&vcpu->mutex); 2834 kfree(fpu); 2835 kfree(kvm_sregs); 2836 return r; 2837 } 2838 2839 #ifdef CONFIG_KVM_COMPAT 2840 static long kvm_vcpu_compat_ioctl(struct file *filp, 2841 unsigned int ioctl, unsigned long arg) 2842 { 2843 struct kvm_vcpu *vcpu = filp->private_data; 2844 void __user *argp = compat_ptr(arg); 2845 int r; 2846 2847 if (vcpu->kvm->mm != current->mm) 2848 return -EIO; 2849 2850 switch (ioctl) { 2851 case KVM_SET_SIGNAL_MASK: { 2852 struct kvm_signal_mask __user *sigmask_arg = argp; 2853 struct kvm_signal_mask kvm_sigmask; 2854 sigset_t sigset; 2855 2856 if (argp) { 2857 r = -EFAULT; 2858 if (copy_from_user(&kvm_sigmask, argp, 2859 sizeof(kvm_sigmask))) 2860 goto out; 2861 r = -EINVAL; 2862 if (kvm_sigmask.len != sizeof(compat_sigset_t)) 2863 goto out; 2864 r = -EFAULT; 2865 if (get_compat_sigset(&sigset, (void *)sigmask_arg->sigset)) 2866 goto out; 2867 r = kvm_vcpu_ioctl_set_sigmask(vcpu, &sigset); 2868 } else 2869 r = kvm_vcpu_ioctl_set_sigmask(vcpu, NULL); 2870 break; 2871 } 2872 default: 2873 r = kvm_vcpu_ioctl(filp, ioctl, arg); 2874 } 2875 2876 out: 2877 return r; 2878 } 2879 #endif 2880 2881 static int kvm_device_ioctl_attr(struct kvm_device *dev, 2882 int (*accessor)(struct kvm_device *dev, 2883 struct kvm_device_attr *attr), 2884 unsigned long arg) 2885 { 2886 struct kvm_device_attr attr; 2887 2888 if (!accessor) 2889 return -EPERM; 2890 2891 if (copy_from_user(&attr, (void __user *)arg, sizeof(attr))) 2892 return -EFAULT; 2893 2894 return accessor(dev, &attr); 2895 } 2896 2897 static long kvm_device_ioctl(struct file *filp, unsigned int ioctl, 2898 unsigned long arg) 2899 { 2900 struct kvm_device *dev = filp->private_data; 2901 2902 switch (ioctl) { 2903 case KVM_SET_DEVICE_ATTR: 2904 return kvm_device_ioctl_attr(dev, dev->ops->set_attr, arg); 2905 case KVM_GET_DEVICE_ATTR: 2906 return kvm_device_ioctl_attr(dev, dev->ops->get_attr, arg); 2907 case KVM_HAS_DEVICE_ATTR: 2908 return kvm_device_ioctl_attr(dev, dev->ops->has_attr, arg); 2909 default: 2910 if (dev->ops->ioctl) 2911 return dev->ops->ioctl(dev, ioctl, arg); 2912 2913 return -ENOTTY; 2914 } 2915 } 2916 2917 static int kvm_device_release(struct inode *inode, struct file *filp) 2918 { 2919 struct kvm_device *dev = filp->private_data; 2920 struct kvm *kvm = dev->kvm; 2921 2922 kvm_put_kvm(kvm); 2923 return 0; 2924 } 2925 2926 static const struct file_operations kvm_device_fops = { 2927 .unlocked_ioctl = kvm_device_ioctl, 2928 .release = kvm_device_release, 2929 KVM_COMPAT(kvm_device_ioctl), 2930 }; 2931 2932 struct kvm_device *kvm_device_from_filp(struct file *filp) 2933 { 2934 if (filp->f_op != &kvm_device_fops) 2935 return NULL; 2936 2937 return filp->private_data; 2938 } 2939 2940 static struct kvm_device_ops *kvm_device_ops_table[KVM_DEV_TYPE_MAX] = { 2941 #ifdef CONFIG_KVM_MPIC 2942 [KVM_DEV_TYPE_FSL_MPIC_20] = &kvm_mpic_ops, 2943 [KVM_DEV_TYPE_FSL_MPIC_42] = &kvm_mpic_ops, 2944 #endif 2945 }; 2946 2947 int kvm_register_device_ops(struct kvm_device_ops *ops, u32 type) 2948 { 2949 if (type >= ARRAY_SIZE(kvm_device_ops_table)) 2950 return -ENOSPC; 2951 2952 if (kvm_device_ops_table[type] != NULL) 2953 return -EEXIST; 2954 2955 kvm_device_ops_table[type] = ops; 2956 return 0; 2957 } 2958 2959 void kvm_unregister_device_ops(u32 type) 2960 { 2961 if (kvm_device_ops_table[type] != NULL) 2962 kvm_device_ops_table[type] = NULL; 2963 } 2964 2965 static int kvm_ioctl_create_device(struct kvm *kvm, 2966 struct kvm_create_device *cd) 2967 { 2968 struct kvm_device_ops *ops = NULL; 2969 struct kvm_device *dev; 2970 bool test = cd->flags & KVM_CREATE_DEVICE_TEST; 2971 int ret; 2972 2973 if (cd->type >= ARRAY_SIZE(kvm_device_ops_table)) 2974 return -ENODEV; 2975 2976 ops = kvm_device_ops_table[cd->type]; 2977 if (ops == NULL) 2978 return -ENODEV; 2979 2980 if (test) 2981 return 0; 2982 2983 dev = kzalloc(sizeof(*dev), GFP_KERNEL); 2984 if (!dev) 2985 return -ENOMEM; 2986 2987 dev->ops = ops; 2988 dev->kvm = kvm; 2989 2990 mutex_lock(&kvm->lock); 2991 ret = ops->create(dev, cd->type); 2992 if (ret < 0) { 2993 mutex_unlock(&kvm->lock); 2994 kfree(dev); 2995 return ret; 2996 } 2997 list_add(&dev->vm_node, &kvm->devices); 2998 mutex_unlock(&kvm->lock); 2999 3000 if (ops->init) 3001 ops->init(dev); 3002 3003 kvm_get_kvm(kvm); 3004 ret = anon_inode_getfd(ops->name, &kvm_device_fops, dev, O_RDWR | O_CLOEXEC); 3005 if (ret < 0) { 3006 kvm_put_kvm(kvm); 3007 mutex_lock(&kvm->lock); 3008 list_del(&dev->vm_node); 3009 mutex_unlock(&kvm->lock); 3010 ops->destroy(dev); 3011 return ret; 3012 } 3013 3014 cd->fd = ret; 3015 return 0; 3016 } 3017 3018 static long kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg) 3019 { 3020 switch (arg) { 3021 case KVM_CAP_USER_MEMORY: 3022 case KVM_CAP_DESTROY_MEMORY_REGION_WORKS: 3023 case KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: 3024 case KVM_CAP_INTERNAL_ERROR_DATA: 3025 #ifdef CONFIG_HAVE_KVM_MSI 3026 case KVM_CAP_SIGNAL_MSI: 3027 #endif 3028 #ifdef CONFIG_HAVE_KVM_IRQFD 3029 case KVM_CAP_IRQFD: 3030 case KVM_CAP_IRQFD_RESAMPLE: 3031 #endif 3032 case KVM_CAP_IOEVENTFD_ANY_LENGTH: 3033 case KVM_CAP_CHECK_EXTENSION_VM: 3034 case KVM_CAP_ENABLE_CAP_VM: 3035 #ifdef CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT 3036 case KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: 3037 #endif 3038 return 1; 3039 #ifdef CONFIG_KVM_MMIO 3040 case KVM_CAP_COALESCED_MMIO: 3041 return KVM_COALESCED_MMIO_PAGE_OFFSET; 3042 case KVM_CAP_COALESCED_PIO: 3043 return 1; 3044 #endif 3045 #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING 3046 case KVM_CAP_IRQ_ROUTING: 3047 return KVM_MAX_IRQ_ROUTES; 3048 #endif 3049 #if KVM_ADDRESS_SPACE_NUM > 1 3050 case KVM_CAP_MULTI_ADDRESS_SPACE: 3051 return KVM_ADDRESS_SPACE_NUM; 3052 #endif 3053 case KVM_CAP_MAX_VCPU_ID: 3054 return KVM_MAX_VCPU_ID; 3055 default: 3056 break; 3057 } 3058 return kvm_vm_ioctl_check_extension(kvm, arg); 3059 } 3060 3061 int __attribute__((weak)) kvm_vm_ioctl_enable_cap(struct kvm *kvm, 3062 struct kvm_enable_cap *cap) 3063 { 3064 return -EINVAL; 3065 } 3066 3067 static int kvm_vm_ioctl_enable_cap_generic(struct kvm *kvm, 3068 struct kvm_enable_cap *cap) 3069 { 3070 switch (cap->cap) { 3071 #ifdef CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT 3072 case KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: 3073 if (cap->flags || (cap->args[0] & ~1)) 3074 return -EINVAL; 3075 kvm->manual_dirty_log_protect = cap->args[0]; 3076 return 0; 3077 #endif 3078 default: 3079 return kvm_vm_ioctl_enable_cap(kvm, cap); 3080 } 3081 } 3082 3083 static long kvm_vm_ioctl(struct file *filp, 3084 unsigned int ioctl, unsigned long arg) 3085 { 3086 struct kvm *kvm = filp->private_data; 3087 void __user *argp = (void __user *)arg; 3088 int r; 3089 3090 if (kvm->mm != current->mm) 3091 return -EIO; 3092 switch (ioctl) { 3093 case KVM_CREATE_VCPU: 3094 r = kvm_vm_ioctl_create_vcpu(kvm, arg); 3095 break; 3096 case KVM_ENABLE_CAP: { 3097 struct kvm_enable_cap cap; 3098 3099 r = -EFAULT; 3100 if (copy_from_user(&cap, argp, sizeof(cap))) 3101 goto out; 3102 r = kvm_vm_ioctl_enable_cap_generic(kvm, &cap); 3103 break; 3104 } 3105 case KVM_SET_USER_MEMORY_REGION: { 3106 struct kvm_userspace_memory_region kvm_userspace_mem; 3107 3108 r = -EFAULT; 3109 if (copy_from_user(&kvm_userspace_mem, argp, 3110 sizeof(kvm_userspace_mem))) 3111 goto out; 3112 3113 r = kvm_vm_ioctl_set_memory_region(kvm, &kvm_userspace_mem); 3114 break; 3115 } 3116 case KVM_GET_DIRTY_LOG: { 3117 struct kvm_dirty_log log; 3118 3119 r = -EFAULT; 3120 if (copy_from_user(&log, argp, sizeof(log))) 3121 goto out; 3122 r = kvm_vm_ioctl_get_dirty_log(kvm, &log); 3123 break; 3124 } 3125 #ifdef CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT 3126 case KVM_CLEAR_DIRTY_LOG: { 3127 struct kvm_clear_dirty_log log; 3128 3129 r = -EFAULT; 3130 if (copy_from_user(&log, argp, sizeof(log))) 3131 goto out; 3132 r = kvm_vm_ioctl_clear_dirty_log(kvm, &log); 3133 break; 3134 } 3135 #endif 3136 #ifdef CONFIG_KVM_MMIO 3137 case KVM_REGISTER_COALESCED_MMIO: { 3138 struct kvm_coalesced_mmio_zone zone; 3139 3140 r = -EFAULT; 3141 if (copy_from_user(&zone, argp, sizeof(zone))) 3142 goto out; 3143 r = kvm_vm_ioctl_register_coalesced_mmio(kvm, &zone); 3144 break; 3145 } 3146 case KVM_UNREGISTER_COALESCED_MMIO: { 3147 struct kvm_coalesced_mmio_zone zone; 3148 3149 r = -EFAULT; 3150 if (copy_from_user(&zone, argp, sizeof(zone))) 3151 goto out; 3152 r = kvm_vm_ioctl_unregister_coalesced_mmio(kvm, &zone); 3153 break; 3154 } 3155 #endif 3156 case KVM_IRQFD: { 3157 struct kvm_irqfd data; 3158 3159 r = -EFAULT; 3160 if (copy_from_user(&data, argp, sizeof(data))) 3161 goto out; 3162 r = kvm_irqfd(kvm, &data); 3163 break; 3164 } 3165 case KVM_IOEVENTFD: { 3166 struct kvm_ioeventfd data; 3167 3168 r = -EFAULT; 3169 if (copy_from_user(&data, argp, sizeof(data))) 3170 goto out; 3171 r = kvm_ioeventfd(kvm, &data); 3172 break; 3173 } 3174 #ifdef CONFIG_HAVE_KVM_MSI 3175 case KVM_SIGNAL_MSI: { 3176 struct kvm_msi msi; 3177 3178 r = -EFAULT; 3179 if (copy_from_user(&msi, argp, sizeof(msi))) 3180 goto out; 3181 r = kvm_send_userspace_msi(kvm, &msi); 3182 break; 3183 } 3184 #endif 3185 #ifdef __KVM_HAVE_IRQ_LINE 3186 case KVM_IRQ_LINE_STATUS: 3187 case KVM_IRQ_LINE: { 3188 struct kvm_irq_level irq_event; 3189 3190 r = -EFAULT; 3191 if (copy_from_user(&irq_event, argp, sizeof(irq_event))) 3192 goto out; 3193 3194 r = kvm_vm_ioctl_irq_line(kvm, &irq_event, 3195 ioctl == KVM_IRQ_LINE_STATUS); 3196 if (r) 3197 goto out; 3198 3199 r = -EFAULT; 3200 if (ioctl == KVM_IRQ_LINE_STATUS) { 3201 if (copy_to_user(argp, &irq_event, sizeof(irq_event))) 3202 goto out; 3203 } 3204 3205 r = 0; 3206 break; 3207 } 3208 #endif 3209 #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING 3210 case KVM_SET_GSI_ROUTING: { 3211 struct kvm_irq_routing routing; 3212 struct kvm_irq_routing __user *urouting; 3213 struct kvm_irq_routing_entry *entries = NULL; 3214 3215 r = -EFAULT; 3216 if (copy_from_user(&routing, argp, sizeof(routing))) 3217 goto out; 3218 r = -EINVAL; 3219 if (!kvm_arch_can_set_irq_routing(kvm)) 3220 goto out; 3221 if (routing.nr > KVM_MAX_IRQ_ROUTES) 3222 goto out; 3223 if (routing.flags) 3224 goto out; 3225 if (routing.nr) { 3226 r = -ENOMEM; 3227 entries = vmalloc(array_size(sizeof(*entries), 3228 routing.nr)); 3229 if (!entries) 3230 goto out; 3231 r = -EFAULT; 3232 urouting = argp; 3233 if (copy_from_user(entries, urouting->entries, 3234 routing.nr * sizeof(*entries))) 3235 goto out_free_irq_routing; 3236 } 3237 r = kvm_set_irq_routing(kvm, entries, routing.nr, 3238 routing.flags); 3239 out_free_irq_routing: 3240 vfree(entries); 3241 break; 3242 } 3243 #endif /* CONFIG_HAVE_KVM_IRQ_ROUTING */ 3244 case KVM_CREATE_DEVICE: { 3245 struct kvm_create_device cd; 3246 3247 r = -EFAULT; 3248 if (copy_from_user(&cd, argp, sizeof(cd))) 3249 goto out; 3250 3251 r = kvm_ioctl_create_device(kvm, &cd); 3252 if (r) 3253 goto out; 3254 3255 r = -EFAULT; 3256 if (copy_to_user(argp, &cd, sizeof(cd))) 3257 goto out; 3258 3259 r = 0; 3260 break; 3261 } 3262 case KVM_CHECK_EXTENSION: 3263 r = kvm_vm_ioctl_check_extension_generic(kvm, arg); 3264 break; 3265 default: 3266 r = kvm_arch_vm_ioctl(filp, ioctl, arg); 3267 } 3268 out: 3269 return r; 3270 } 3271 3272 #ifdef CONFIG_KVM_COMPAT 3273 struct compat_kvm_dirty_log { 3274 __u32 slot; 3275 __u32 padding1; 3276 union { 3277 compat_uptr_t dirty_bitmap; /* one bit per page */ 3278 __u64 padding2; 3279 }; 3280 }; 3281 3282 static long kvm_vm_compat_ioctl(struct file *filp, 3283 unsigned int ioctl, unsigned long arg) 3284 { 3285 struct kvm *kvm = filp->private_data; 3286 int r; 3287 3288 if (kvm->mm != current->mm) 3289 return -EIO; 3290 switch (ioctl) { 3291 case KVM_GET_DIRTY_LOG: { 3292 struct compat_kvm_dirty_log compat_log; 3293 struct kvm_dirty_log log; 3294 3295 if (copy_from_user(&compat_log, (void __user *)arg, 3296 sizeof(compat_log))) 3297 return -EFAULT; 3298 log.slot = compat_log.slot; 3299 log.padding1 = compat_log.padding1; 3300 log.padding2 = compat_log.padding2; 3301 log.dirty_bitmap = compat_ptr(compat_log.dirty_bitmap); 3302 3303 r = kvm_vm_ioctl_get_dirty_log(kvm, &log); 3304 break; 3305 } 3306 default: 3307 r = kvm_vm_ioctl(filp, ioctl, arg); 3308 } 3309 return r; 3310 } 3311 #endif 3312 3313 static struct file_operations kvm_vm_fops = { 3314 .release = kvm_vm_release, 3315 .unlocked_ioctl = kvm_vm_ioctl, 3316 .llseek = noop_llseek, 3317 KVM_COMPAT(kvm_vm_compat_ioctl), 3318 }; 3319 3320 static int kvm_dev_ioctl_create_vm(unsigned long type) 3321 { 3322 int r; 3323 struct kvm *kvm; 3324 struct file *file; 3325 3326 kvm = kvm_create_vm(type); 3327 if (IS_ERR(kvm)) 3328 return PTR_ERR(kvm); 3329 #ifdef CONFIG_KVM_MMIO 3330 r = kvm_coalesced_mmio_init(kvm); 3331 if (r < 0) 3332 goto put_kvm; 3333 #endif 3334 r = get_unused_fd_flags(O_CLOEXEC); 3335 if (r < 0) 3336 goto put_kvm; 3337 3338 file = anon_inode_getfile("kvm-vm", &kvm_vm_fops, kvm, O_RDWR); 3339 if (IS_ERR(file)) { 3340 put_unused_fd(r); 3341 r = PTR_ERR(file); 3342 goto put_kvm; 3343 } 3344 3345 /* 3346 * Don't call kvm_put_kvm anymore at this point; file->f_op is 3347 * already set, with ->release() being kvm_vm_release(). In error 3348 * cases it will be called by the final fput(file) and will take 3349 * care of doing kvm_put_kvm(kvm). 3350 */ 3351 if (kvm_create_vm_debugfs(kvm, r) < 0) { 3352 put_unused_fd(r); 3353 fput(file); 3354 return -ENOMEM; 3355 } 3356 kvm_uevent_notify_change(KVM_EVENT_CREATE_VM, kvm); 3357 3358 fd_install(r, file); 3359 return r; 3360 3361 put_kvm: 3362 kvm_put_kvm(kvm); 3363 return r; 3364 } 3365 3366 static long kvm_dev_ioctl(struct file *filp, 3367 unsigned int ioctl, unsigned long arg) 3368 { 3369 long r = -EINVAL; 3370 3371 switch (ioctl) { 3372 case KVM_GET_API_VERSION: 3373 if (arg) 3374 goto out; 3375 r = KVM_API_VERSION; 3376 break; 3377 case KVM_CREATE_VM: 3378 r = kvm_dev_ioctl_create_vm(arg); 3379 break; 3380 case KVM_CHECK_EXTENSION: 3381 r = kvm_vm_ioctl_check_extension_generic(NULL, arg); 3382 break; 3383 case KVM_GET_VCPU_MMAP_SIZE: 3384 if (arg) 3385 goto out; 3386 r = PAGE_SIZE; /* struct kvm_run */ 3387 #ifdef CONFIG_X86 3388 r += PAGE_SIZE; /* pio data page */ 3389 #endif 3390 #ifdef CONFIG_KVM_MMIO 3391 r += PAGE_SIZE; /* coalesced mmio ring page */ 3392 #endif 3393 break; 3394 case KVM_TRACE_ENABLE: 3395 case KVM_TRACE_PAUSE: 3396 case KVM_TRACE_DISABLE: 3397 r = -EOPNOTSUPP; 3398 break; 3399 default: 3400 return kvm_arch_dev_ioctl(filp, ioctl, arg); 3401 } 3402 out: 3403 return r; 3404 } 3405 3406 static struct file_operations kvm_chardev_ops = { 3407 .unlocked_ioctl = kvm_dev_ioctl, 3408 .llseek = noop_llseek, 3409 KVM_COMPAT(kvm_dev_ioctl), 3410 }; 3411 3412 static struct miscdevice kvm_dev = { 3413 KVM_MINOR, 3414 "kvm", 3415 &kvm_chardev_ops, 3416 }; 3417 3418 static void hardware_enable_nolock(void *junk) 3419 { 3420 int cpu = raw_smp_processor_id(); 3421 int r; 3422 3423 if (cpumask_test_cpu(cpu, cpus_hardware_enabled)) 3424 return; 3425 3426 cpumask_set_cpu(cpu, cpus_hardware_enabled); 3427 3428 r = kvm_arch_hardware_enable(); 3429 3430 if (r) { 3431 cpumask_clear_cpu(cpu, cpus_hardware_enabled); 3432 atomic_inc(&hardware_enable_failed); 3433 pr_info("kvm: enabling virtualization on CPU%d failed\n", cpu); 3434 } 3435 } 3436 3437 static int kvm_starting_cpu(unsigned int cpu) 3438 { 3439 raw_spin_lock(&kvm_count_lock); 3440 if (kvm_usage_count) 3441 hardware_enable_nolock(NULL); 3442 raw_spin_unlock(&kvm_count_lock); 3443 return 0; 3444 } 3445 3446 static void hardware_disable_nolock(void *junk) 3447 { 3448 int cpu = raw_smp_processor_id(); 3449 3450 if (!cpumask_test_cpu(cpu, cpus_hardware_enabled)) 3451 return; 3452 cpumask_clear_cpu(cpu, cpus_hardware_enabled); 3453 kvm_arch_hardware_disable(); 3454 } 3455 3456 static int kvm_dying_cpu(unsigned int cpu) 3457 { 3458 raw_spin_lock(&kvm_count_lock); 3459 if (kvm_usage_count) 3460 hardware_disable_nolock(NULL); 3461 raw_spin_unlock(&kvm_count_lock); 3462 return 0; 3463 } 3464 3465 static void hardware_disable_all_nolock(void) 3466 { 3467 BUG_ON(!kvm_usage_count); 3468 3469 kvm_usage_count--; 3470 if (!kvm_usage_count) 3471 on_each_cpu(hardware_disable_nolock, NULL, 1); 3472 } 3473 3474 static void hardware_disable_all(void) 3475 { 3476 raw_spin_lock(&kvm_count_lock); 3477 hardware_disable_all_nolock(); 3478 raw_spin_unlock(&kvm_count_lock); 3479 } 3480 3481 static int hardware_enable_all(void) 3482 { 3483 int r = 0; 3484 3485 raw_spin_lock(&kvm_count_lock); 3486 3487 kvm_usage_count++; 3488 if (kvm_usage_count == 1) { 3489 atomic_set(&hardware_enable_failed, 0); 3490 on_each_cpu(hardware_enable_nolock, NULL, 1); 3491 3492 if (atomic_read(&hardware_enable_failed)) { 3493 hardware_disable_all_nolock(); 3494 r = -EBUSY; 3495 } 3496 } 3497 3498 raw_spin_unlock(&kvm_count_lock); 3499 3500 return r; 3501 } 3502 3503 static int kvm_reboot(struct notifier_block *notifier, unsigned long val, 3504 void *v) 3505 { 3506 /* 3507 * Some (well, at least mine) BIOSes hang on reboot if 3508 * in vmx root mode. 3509 * 3510 * And Intel TXT required VMX off for all cpu when system shutdown. 3511 */ 3512 pr_info("kvm: exiting hardware virtualization\n"); 3513 kvm_rebooting = true; 3514 on_each_cpu(hardware_disable_nolock, NULL, 1); 3515 return NOTIFY_OK; 3516 } 3517 3518 static struct notifier_block kvm_reboot_notifier = { 3519 .notifier_call = kvm_reboot, 3520 .priority = 0, 3521 }; 3522 3523 static void kvm_io_bus_destroy(struct kvm_io_bus *bus) 3524 { 3525 int i; 3526 3527 for (i = 0; i < bus->dev_count; i++) { 3528 struct kvm_io_device *pos = bus->range[i].dev; 3529 3530 kvm_iodevice_destructor(pos); 3531 } 3532 kfree(bus); 3533 } 3534 3535 static inline int kvm_io_bus_cmp(const struct kvm_io_range *r1, 3536 const struct kvm_io_range *r2) 3537 { 3538 gpa_t addr1 = r1->addr; 3539 gpa_t addr2 = r2->addr; 3540 3541 if (addr1 < addr2) 3542 return -1; 3543 3544 /* If r2->len == 0, match the exact address. If r2->len != 0, 3545 * accept any overlapping write. Any order is acceptable for 3546 * overlapping ranges, because kvm_io_bus_get_first_dev ensures 3547 * we process all of them. 3548 */ 3549 if (r2->len) { 3550 addr1 += r1->len; 3551 addr2 += r2->len; 3552 } 3553 3554 if (addr1 > addr2) 3555 return 1; 3556 3557 return 0; 3558 } 3559 3560 static int kvm_io_bus_sort_cmp(const void *p1, const void *p2) 3561 { 3562 return kvm_io_bus_cmp(p1, p2); 3563 } 3564 3565 static int kvm_io_bus_get_first_dev(struct kvm_io_bus *bus, 3566 gpa_t addr, int len) 3567 { 3568 struct kvm_io_range *range, key; 3569 int off; 3570 3571 key = (struct kvm_io_range) { 3572 .addr = addr, 3573 .len = len, 3574 }; 3575 3576 range = bsearch(&key, bus->range, bus->dev_count, 3577 sizeof(struct kvm_io_range), kvm_io_bus_sort_cmp); 3578 if (range == NULL) 3579 return -ENOENT; 3580 3581 off = range - bus->range; 3582 3583 while (off > 0 && kvm_io_bus_cmp(&key, &bus->range[off-1]) == 0) 3584 off--; 3585 3586 return off; 3587 } 3588 3589 static int __kvm_io_bus_write(struct kvm_vcpu *vcpu, struct kvm_io_bus *bus, 3590 struct kvm_io_range *range, const void *val) 3591 { 3592 int idx; 3593 3594 idx = kvm_io_bus_get_first_dev(bus, range->addr, range->len); 3595 if (idx < 0) 3596 return -EOPNOTSUPP; 3597 3598 while (idx < bus->dev_count && 3599 kvm_io_bus_cmp(range, &bus->range[idx]) == 0) { 3600 if (!kvm_iodevice_write(vcpu, bus->range[idx].dev, range->addr, 3601 range->len, val)) 3602 return idx; 3603 idx++; 3604 } 3605 3606 return -EOPNOTSUPP; 3607 } 3608 3609 /* kvm_io_bus_write - called under kvm->slots_lock */ 3610 int kvm_io_bus_write(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr, 3611 int len, const void *val) 3612 { 3613 struct kvm_io_bus *bus; 3614 struct kvm_io_range range; 3615 int r; 3616 3617 range = (struct kvm_io_range) { 3618 .addr = addr, 3619 .len = len, 3620 }; 3621 3622 bus = srcu_dereference(vcpu->kvm->buses[bus_idx], &vcpu->kvm->srcu); 3623 if (!bus) 3624 return -ENOMEM; 3625 r = __kvm_io_bus_write(vcpu, bus, &range, val); 3626 return r < 0 ? r : 0; 3627 } 3628 3629 /* kvm_io_bus_write_cookie - called under kvm->slots_lock */ 3630 int kvm_io_bus_write_cookie(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, 3631 gpa_t addr, int len, const void *val, long cookie) 3632 { 3633 struct kvm_io_bus *bus; 3634 struct kvm_io_range range; 3635 3636 range = (struct kvm_io_range) { 3637 .addr = addr, 3638 .len = len, 3639 }; 3640 3641 bus = srcu_dereference(vcpu->kvm->buses[bus_idx], &vcpu->kvm->srcu); 3642 if (!bus) 3643 return -ENOMEM; 3644 3645 /* First try the device referenced by cookie. */ 3646 if ((cookie >= 0) && (cookie < bus->dev_count) && 3647 (kvm_io_bus_cmp(&range, &bus->range[cookie]) == 0)) 3648 if (!kvm_iodevice_write(vcpu, bus->range[cookie].dev, addr, len, 3649 val)) 3650 return cookie; 3651 3652 /* 3653 * cookie contained garbage; fall back to search and return the 3654 * correct cookie value. 3655 */ 3656 return __kvm_io_bus_write(vcpu, bus, &range, val); 3657 } 3658 3659 static int __kvm_io_bus_read(struct kvm_vcpu *vcpu, struct kvm_io_bus *bus, 3660 struct kvm_io_range *range, void *val) 3661 { 3662 int idx; 3663 3664 idx = kvm_io_bus_get_first_dev(bus, range->addr, range->len); 3665 if (idx < 0) 3666 return -EOPNOTSUPP; 3667 3668 while (idx < bus->dev_count && 3669 kvm_io_bus_cmp(range, &bus->range[idx]) == 0) { 3670 if (!kvm_iodevice_read(vcpu, bus->range[idx].dev, range->addr, 3671 range->len, val)) 3672 return idx; 3673 idx++; 3674 } 3675 3676 return -EOPNOTSUPP; 3677 } 3678 EXPORT_SYMBOL_GPL(kvm_io_bus_write); 3679 3680 /* kvm_io_bus_read - called under kvm->slots_lock */ 3681 int kvm_io_bus_read(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr, 3682 int len, void *val) 3683 { 3684 struct kvm_io_bus *bus; 3685 struct kvm_io_range range; 3686 int r; 3687 3688 range = (struct kvm_io_range) { 3689 .addr = addr, 3690 .len = len, 3691 }; 3692 3693 bus = srcu_dereference(vcpu->kvm->buses[bus_idx], &vcpu->kvm->srcu); 3694 if (!bus) 3695 return -ENOMEM; 3696 r = __kvm_io_bus_read(vcpu, bus, &range, val); 3697 return r < 0 ? r : 0; 3698 } 3699 3700 3701 /* Caller must hold slots_lock. */ 3702 int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, 3703 int len, struct kvm_io_device *dev) 3704 { 3705 int i; 3706 struct kvm_io_bus *new_bus, *bus; 3707 struct kvm_io_range range; 3708 3709 bus = kvm_get_bus(kvm, bus_idx); 3710 if (!bus) 3711 return -ENOMEM; 3712 3713 /* exclude ioeventfd which is limited by maximum fd */ 3714 if (bus->dev_count - bus->ioeventfd_count > NR_IOBUS_DEVS - 1) 3715 return -ENOSPC; 3716 3717 new_bus = kmalloc(sizeof(*bus) + ((bus->dev_count + 1) * 3718 sizeof(struct kvm_io_range)), GFP_KERNEL); 3719 if (!new_bus) 3720 return -ENOMEM; 3721 3722 range = (struct kvm_io_range) { 3723 .addr = addr, 3724 .len = len, 3725 .dev = dev, 3726 }; 3727 3728 for (i = 0; i < bus->dev_count; i++) 3729 if (kvm_io_bus_cmp(&bus->range[i], &range) > 0) 3730 break; 3731 3732 memcpy(new_bus, bus, sizeof(*bus) + i * sizeof(struct kvm_io_range)); 3733 new_bus->dev_count++; 3734 new_bus->range[i] = range; 3735 memcpy(new_bus->range + i + 1, bus->range + i, 3736 (bus->dev_count - i) * sizeof(struct kvm_io_range)); 3737 rcu_assign_pointer(kvm->buses[bus_idx], new_bus); 3738 synchronize_srcu_expedited(&kvm->srcu); 3739 kfree(bus); 3740 3741 return 0; 3742 } 3743 3744 /* Caller must hold slots_lock. */ 3745 void kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx, 3746 struct kvm_io_device *dev) 3747 { 3748 int i; 3749 struct kvm_io_bus *new_bus, *bus; 3750 3751 bus = kvm_get_bus(kvm, bus_idx); 3752 if (!bus) 3753 return; 3754 3755 for (i = 0; i < bus->dev_count; i++) 3756 if (bus->range[i].dev == dev) { 3757 break; 3758 } 3759 3760 if (i == bus->dev_count) 3761 return; 3762 3763 new_bus = kmalloc(sizeof(*bus) + ((bus->dev_count - 1) * 3764 sizeof(struct kvm_io_range)), GFP_KERNEL); 3765 if (!new_bus) { 3766 pr_err("kvm: failed to shrink bus, removing it completely\n"); 3767 goto broken; 3768 } 3769 3770 memcpy(new_bus, bus, sizeof(*bus) + i * sizeof(struct kvm_io_range)); 3771 new_bus->dev_count--; 3772 memcpy(new_bus->range + i, bus->range + i + 1, 3773 (new_bus->dev_count - i) * sizeof(struct kvm_io_range)); 3774 3775 broken: 3776 rcu_assign_pointer(kvm->buses[bus_idx], new_bus); 3777 synchronize_srcu_expedited(&kvm->srcu); 3778 kfree(bus); 3779 return; 3780 } 3781 3782 struct kvm_io_device *kvm_io_bus_get_dev(struct kvm *kvm, enum kvm_bus bus_idx, 3783 gpa_t addr) 3784 { 3785 struct kvm_io_bus *bus; 3786 int dev_idx, srcu_idx; 3787 struct kvm_io_device *iodev = NULL; 3788 3789 srcu_idx = srcu_read_lock(&kvm->srcu); 3790 3791 bus = srcu_dereference(kvm->buses[bus_idx], &kvm->srcu); 3792 if (!bus) 3793 goto out_unlock; 3794 3795 dev_idx = kvm_io_bus_get_first_dev(bus, addr, 1); 3796 if (dev_idx < 0) 3797 goto out_unlock; 3798 3799 iodev = bus->range[dev_idx].dev; 3800 3801 out_unlock: 3802 srcu_read_unlock(&kvm->srcu, srcu_idx); 3803 3804 return iodev; 3805 } 3806 EXPORT_SYMBOL_GPL(kvm_io_bus_get_dev); 3807 3808 static int kvm_debugfs_open(struct inode *inode, struct file *file, 3809 int (*get)(void *, u64 *), int (*set)(void *, u64), 3810 const char *fmt) 3811 { 3812 struct kvm_stat_data *stat_data = (struct kvm_stat_data *) 3813 inode->i_private; 3814 3815 /* The debugfs files are a reference to the kvm struct which 3816 * is still valid when kvm_destroy_vm is called. 3817 * To avoid the race between open and the removal of the debugfs 3818 * directory we test against the users count. 3819 */ 3820 if (!refcount_inc_not_zero(&stat_data->kvm->users_count)) 3821 return -ENOENT; 3822 3823 if (simple_attr_open(inode, file, get, set, fmt)) { 3824 kvm_put_kvm(stat_data->kvm); 3825 return -ENOMEM; 3826 } 3827 3828 return 0; 3829 } 3830 3831 static int kvm_debugfs_release(struct inode *inode, struct file *file) 3832 { 3833 struct kvm_stat_data *stat_data = (struct kvm_stat_data *) 3834 inode->i_private; 3835 3836 simple_attr_release(inode, file); 3837 kvm_put_kvm(stat_data->kvm); 3838 3839 return 0; 3840 } 3841 3842 static int vm_stat_get_per_vm(void *data, u64 *val) 3843 { 3844 struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data; 3845 3846 *val = *(ulong *)((void *)stat_data->kvm + stat_data->offset); 3847 3848 return 0; 3849 } 3850 3851 static int vm_stat_clear_per_vm(void *data, u64 val) 3852 { 3853 struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data; 3854 3855 if (val) 3856 return -EINVAL; 3857 3858 *(ulong *)((void *)stat_data->kvm + stat_data->offset) = 0; 3859 3860 return 0; 3861 } 3862 3863 static int vm_stat_get_per_vm_open(struct inode *inode, struct file *file) 3864 { 3865 __simple_attr_check_format("%llu\n", 0ull); 3866 return kvm_debugfs_open(inode, file, vm_stat_get_per_vm, 3867 vm_stat_clear_per_vm, "%llu\n"); 3868 } 3869 3870 static const struct file_operations vm_stat_get_per_vm_fops = { 3871 .owner = THIS_MODULE, 3872 .open = vm_stat_get_per_vm_open, 3873 .release = kvm_debugfs_release, 3874 .read = simple_attr_read, 3875 .write = simple_attr_write, 3876 .llseek = no_llseek, 3877 }; 3878 3879 static int vcpu_stat_get_per_vm(void *data, u64 *val) 3880 { 3881 int i; 3882 struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data; 3883 struct kvm_vcpu *vcpu; 3884 3885 *val = 0; 3886 3887 kvm_for_each_vcpu(i, vcpu, stat_data->kvm) 3888 *val += *(u64 *)((void *)vcpu + stat_data->offset); 3889 3890 return 0; 3891 } 3892 3893 static int vcpu_stat_clear_per_vm(void *data, u64 val) 3894 { 3895 int i; 3896 struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data; 3897 struct kvm_vcpu *vcpu; 3898 3899 if (val) 3900 return -EINVAL; 3901 3902 kvm_for_each_vcpu(i, vcpu, stat_data->kvm) 3903 *(u64 *)((void *)vcpu + stat_data->offset) = 0; 3904 3905 return 0; 3906 } 3907 3908 static int vcpu_stat_get_per_vm_open(struct inode *inode, struct file *file) 3909 { 3910 __simple_attr_check_format("%llu\n", 0ull); 3911 return kvm_debugfs_open(inode, file, vcpu_stat_get_per_vm, 3912 vcpu_stat_clear_per_vm, "%llu\n"); 3913 } 3914 3915 static const struct file_operations vcpu_stat_get_per_vm_fops = { 3916 .owner = THIS_MODULE, 3917 .open = vcpu_stat_get_per_vm_open, 3918 .release = kvm_debugfs_release, 3919 .read = simple_attr_read, 3920 .write = simple_attr_write, 3921 .llseek = no_llseek, 3922 }; 3923 3924 static const struct file_operations *stat_fops_per_vm[] = { 3925 [KVM_STAT_VCPU] = &vcpu_stat_get_per_vm_fops, 3926 [KVM_STAT_VM] = &vm_stat_get_per_vm_fops, 3927 }; 3928 3929 static int vm_stat_get(void *_offset, u64 *val) 3930 { 3931 unsigned offset = (long)_offset; 3932 struct kvm *kvm; 3933 struct kvm_stat_data stat_tmp = {.offset = offset}; 3934 u64 tmp_val; 3935 3936 *val = 0; 3937 spin_lock(&kvm_lock); 3938 list_for_each_entry(kvm, &vm_list, vm_list) { 3939 stat_tmp.kvm = kvm; 3940 vm_stat_get_per_vm((void *)&stat_tmp, &tmp_val); 3941 *val += tmp_val; 3942 } 3943 spin_unlock(&kvm_lock); 3944 return 0; 3945 } 3946 3947 static int vm_stat_clear(void *_offset, u64 val) 3948 { 3949 unsigned offset = (long)_offset; 3950 struct kvm *kvm; 3951 struct kvm_stat_data stat_tmp = {.offset = offset}; 3952 3953 if (val) 3954 return -EINVAL; 3955 3956 spin_lock(&kvm_lock); 3957 list_for_each_entry(kvm, &vm_list, vm_list) { 3958 stat_tmp.kvm = kvm; 3959 vm_stat_clear_per_vm((void *)&stat_tmp, 0); 3960 } 3961 spin_unlock(&kvm_lock); 3962 3963 return 0; 3964 } 3965 3966 DEFINE_SIMPLE_ATTRIBUTE(vm_stat_fops, vm_stat_get, vm_stat_clear, "%llu\n"); 3967 3968 static int vcpu_stat_get(void *_offset, u64 *val) 3969 { 3970 unsigned offset = (long)_offset; 3971 struct kvm *kvm; 3972 struct kvm_stat_data stat_tmp = {.offset = offset}; 3973 u64 tmp_val; 3974 3975 *val = 0; 3976 spin_lock(&kvm_lock); 3977 list_for_each_entry(kvm, &vm_list, vm_list) { 3978 stat_tmp.kvm = kvm; 3979 vcpu_stat_get_per_vm((void *)&stat_tmp, &tmp_val); 3980 *val += tmp_val; 3981 } 3982 spin_unlock(&kvm_lock); 3983 return 0; 3984 } 3985 3986 static int vcpu_stat_clear(void *_offset, u64 val) 3987 { 3988 unsigned offset = (long)_offset; 3989 struct kvm *kvm; 3990 struct kvm_stat_data stat_tmp = {.offset = offset}; 3991 3992 if (val) 3993 return -EINVAL; 3994 3995 spin_lock(&kvm_lock); 3996 list_for_each_entry(kvm, &vm_list, vm_list) { 3997 stat_tmp.kvm = kvm; 3998 vcpu_stat_clear_per_vm((void *)&stat_tmp, 0); 3999 } 4000 spin_unlock(&kvm_lock); 4001 4002 return 0; 4003 } 4004 4005 DEFINE_SIMPLE_ATTRIBUTE(vcpu_stat_fops, vcpu_stat_get, vcpu_stat_clear, 4006 "%llu\n"); 4007 4008 static const struct file_operations *stat_fops[] = { 4009 [KVM_STAT_VCPU] = &vcpu_stat_fops, 4010 [KVM_STAT_VM] = &vm_stat_fops, 4011 }; 4012 4013 static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm) 4014 { 4015 struct kobj_uevent_env *env; 4016 unsigned long long created, active; 4017 4018 if (!kvm_dev.this_device || !kvm) 4019 return; 4020 4021 spin_lock(&kvm_lock); 4022 if (type == KVM_EVENT_CREATE_VM) { 4023 kvm_createvm_count++; 4024 kvm_active_vms++; 4025 } else if (type == KVM_EVENT_DESTROY_VM) { 4026 kvm_active_vms--; 4027 } 4028 created = kvm_createvm_count; 4029 active = kvm_active_vms; 4030 spin_unlock(&kvm_lock); 4031 4032 env = kzalloc(sizeof(*env), GFP_KERNEL); 4033 if (!env) 4034 return; 4035 4036 add_uevent_var(env, "CREATED=%llu", created); 4037 add_uevent_var(env, "COUNT=%llu", active); 4038 4039 if (type == KVM_EVENT_CREATE_VM) { 4040 add_uevent_var(env, "EVENT=create"); 4041 kvm->userspace_pid = task_pid_nr(current); 4042 } else if (type == KVM_EVENT_DESTROY_VM) { 4043 add_uevent_var(env, "EVENT=destroy"); 4044 } 4045 add_uevent_var(env, "PID=%d", kvm->userspace_pid); 4046 4047 if (kvm->debugfs_dentry) { 4048 char *tmp, *p = kmalloc(PATH_MAX, GFP_KERNEL); 4049 4050 if (p) { 4051 tmp = dentry_path_raw(kvm->debugfs_dentry, p, PATH_MAX); 4052 if (!IS_ERR(tmp)) 4053 add_uevent_var(env, "STATS_PATH=%s", tmp); 4054 kfree(p); 4055 } 4056 } 4057 /* no need for checks, since we are adding at most only 5 keys */ 4058 env->envp[env->envp_idx++] = NULL; 4059 kobject_uevent_env(&kvm_dev.this_device->kobj, KOBJ_CHANGE, env->envp); 4060 kfree(env); 4061 } 4062 4063 static void kvm_init_debug(void) 4064 { 4065 struct kvm_stats_debugfs_item *p; 4066 4067 kvm_debugfs_dir = debugfs_create_dir("kvm", NULL); 4068 4069 kvm_debugfs_num_entries = 0; 4070 for (p = debugfs_entries; p->name; ++p, kvm_debugfs_num_entries++) { 4071 debugfs_create_file(p->name, 0644, kvm_debugfs_dir, 4072 (void *)(long)p->offset, 4073 stat_fops[p->kind]); 4074 } 4075 } 4076 4077 static int kvm_suspend(void) 4078 { 4079 if (kvm_usage_count) 4080 hardware_disable_nolock(NULL); 4081 return 0; 4082 } 4083 4084 static void kvm_resume(void) 4085 { 4086 if (kvm_usage_count) { 4087 WARN_ON(raw_spin_is_locked(&kvm_count_lock)); 4088 hardware_enable_nolock(NULL); 4089 } 4090 } 4091 4092 static struct syscore_ops kvm_syscore_ops = { 4093 .suspend = kvm_suspend, 4094 .resume = kvm_resume, 4095 }; 4096 4097 static inline 4098 struct kvm_vcpu *preempt_notifier_to_vcpu(struct preempt_notifier *pn) 4099 { 4100 return container_of(pn, struct kvm_vcpu, preempt_notifier); 4101 } 4102 4103 static void kvm_sched_in(struct preempt_notifier *pn, int cpu) 4104 { 4105 struct kvm_vcpu *vcpu = preempt_notifier_to_vcpu(pn); 4106 4107 if (vcpu->preempted) 4108 vcpu->preempted = false; 4109 4110 kvm_arch_sched_in(vcpu, cpu); 4111 4112 kvm_arch_vcpu_load(vcpu, cpu); 4113 } 4114 4115 static void kvm_sched_out(struct preempt_notifier *pn, 4116 struct task_struct *next) 4117 { 4118 struct kvm_vcpu *vcpu = preempt_notifier_to_vcpu(pn); 4119 4120 if (current->state == TASK_RUNNING) 4121 vcpu->preempted = true; 4122 kvm_arch_vcpu_put(vcpu); 4123 } 4124 4125 int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, 4126 struct module *module) 4127 { 4128 int r; 4129 int cpu; 4130 4131 r = kvm_arch_init(opaque); 4132 if (r) 4133 goto out_fail; 4134 4135 /* 4136 * kvm_arch_init makes sure there's at most one caller 4137 * for architectures that support multiple implementations, 4138 * like intel and amd on x86. 4139 * kvm_arch_init must be called before kvm_irqfd_init to avoid creating 4140 * conflicts in case kvm is already setup for another implementation. 4141 */ 4142 r = kvm_irqfd_init(); 4143 if (r) 4144 goto out_irqfd; 4145 4146 if (!zalloc_cpumask_var(&cpus_hardware_enabled, GFP_KERNEL)) { 4147 r = -ENOMEM; 4148 goto out_free_0; 4149 } 4150 4151 r = kvm_arch_hardware_setup(); 4152 if (r < 0) 4153 goto out_free_0a; 4154 4155 for_each_online_cpu(cpu) { 4156 smp_call_function_single(cpu, 4157 kvm_arch_check_processor_compat, 4158 &r, 1); 4159 if (r < 0) 4160 goto out_free_1; 4161 } 4162 4163 r = cpuhp_setup_state_nocalls(CPUHP_AP_KVM_STARTING, "kvm/cpu:starting", 4164 kvm_starting_cpu, kvm_dying_cpu); 4165 if (r) 4166 goto out_free_2; 4167 register_reboot_notifier(&kvm_reboot_notifier); 4168 4169 /* A kmem cache lets us meet the alignment requirements of fx_save. */ 4170 if (!vcpu_align) 4171 vcpu_align = __alignof__(struct kvm_vcpu); 4172 kvm_vcpu_cache = 4173 kmem_cache_create_usercopy("kvm_vcpu", vcpu_size, vcpu_align, 4174 SLAB_ACCOUNT, 4175 offsetof(struct kvm_vcpu, arch), 4176 sizeof_field(struct kvm_vcpu, arch), 4177 NULL); 4178 if (!kvm_vcpu_cache) { 4179 r = -ENOMEM; 4180 goto out_free_3; 4181 } 4182 4183 r = kvm_async_pf_init(); 4184 if (r) 4185 goto out_free; 4186 4187 kvm_chardev_ops.owner = module; 4188 kvm_vm_fops.owner = module; 4189 kvm_vcpu_fops.owner = module; 4190 4191 r = misc_register(&kvm_dev); 4192 if (r) { 4193 pr_err("kvm: misc device register failed\n"); 4194 goto out_unreg; 4195 } 4196 4197 register_syscore_ops(&kvm_syscore_ops); 4198 4199 kvm_preempt_ops.sched_in = kvm_sched_in; 4200 kvm_preempt_ops.sched_out = kvm_sched_out; 4201 4202 kvm_init_debug(); 4203 4204 r = kvm_vfio_ops_init(); 4205 WARN_ON(r); 4206 4207 return 0; 4208 4209 out_unreg: 4210 kvm_async_pf_deinit(); 4211 out_free: 4212 kmem_cache_destroy(kvm_vcpu_cache); 4213 out_free_3: 4214 unregister_reboot_notifier(&kvm_reboot_notifier); 4215 cpuhp_remove_state_nocalls(CPUHP_AP_KVM_STARTING); 4216 out_free_2: 4217 out_free_1: 4218 kvm_arch_hardware_unsetup(); 4219 out_free_0a: 4220 free_cpumask_var(cpus_hardware_enabled); 4221 out_free_0: 4222 kvm_irqfd_exit(); 4223 out_irqfd: 4224 kvm_arch_exit(); 4225 out_fail: 4226 return r; 4227 } 4228 EXPORT_SYMBOL_GPL(kvm_init); 4229 4230 void kvm_exit(void) 4231 { 4232 debugfs_remove_recursive(kvm_debugfs_dir); 4233 misc_deregister(&kvm_dev); 4234 kmem_cache_destroy(kvm_vcpu_cache); 4235 kvm_async_pf_deinit(); 4236 unregister_syscore_ops(&kvm_syscore_ops); 4237 unregister_reboot_notifier(&kvm_reboot_notifier); 4238 cpuhp_remove_state_nocalls(CPUHP_AP_KVM_STARTING); 4239 on_each_cpu(hardware_disable_nolock, NULL, 1); 4240 kvm_arch_hardware_unsetup(); 4241 kvm_arch_exit(); 4242 kvm_irqfd_exit(); 4243 free_cpumask_var(cpus_hardware_enabled); 4244 kvm_vfio_ops_exit(); 4245 } 4246 EXPORT_SYMBOL_GPL(kvm_exit); 4247