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 ret = anon_inode_getfd(ops->name, &kvm_device_fops, dev, O_RDWR | O_CLOEXEC); 3004 if (ret < 0) { 3005 mutex_lock(&kvm->lock); 3006 list_del(&dev->vm_node); 3007 mutex_unlock(&kvm->lock); 3008 ops->destroy(dev); 3009 return ret; 3010 } 3011 3012 kvm_get_kvm(kvm); 3013 cd->fd = ret; 3014 return 0; 3015 } 3016 3017 static long kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg) 3018 { 3019 switch (arg) { 3020 case KVM_CAP_USER_MEMORY: 3021 case KVM_CAP_DESTROY_MEMORY_REGION_WORKS: 3022 case KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: 3023 case KVM_CAP_INTERNAL_ERROR_DATA: 3024 #ifdef CONFIG_HAVE_KVM_MSI 3025 case KVM_CAP_SIGNAL_MSI: 3026 #endif 3027 #ifdef CONFIG_HAVE_KVM_IRQFD 3028 case KVM_CAP_IRQFD: 3029 case KVM_CAP_IRQFD_RESAMPLE: 3030 #endif 3031 case KVM_CAP_IOEVENTFD_ANY_LENGTH: 3032 case KVM_CAP_CHECK_EXTENSION_VM: 3033 case KVM_CAP_ENABLE_CAP_VM: 3034 #ifdef CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT 3035 case KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: 3036 #endif 3037 return 1; 3038 #ifdef CONFIG_KVM_MMIO 3039 case KVM_CAP_COALESCED_MMIO: 3040 return KVM_COALESCED_MMIO_PAGE_OFFSET; 3041 case KVM_CAP_COALESCED_PIO: 3042 return 1; 3043 #endif 3044 #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING 3045 case KVM_CAP_IRQ_ROUTING: 3046 return KVM_MAX_IRQ_ROUTES; 3047 #endif 3048 #if KVM_ADDRESS_SPACE_NUM > 1 3049 case KVM_CAP_MULTI_ADDRESS_SPACE: 3050 return KVM_ADDRESS_SPACE_NUM; 3051 #endif 3052 case KVM_CAP_MAX_VCPU_ID: 3053 return KVM_MAX_VCPU_ID; 3054 default: 3055 break; 3056 } 3057 return kvm_vm_ioctl_check_extension(kvm, arg); 3058 } 3059 3060 int __attribute__((weak)) kvm_vm_ioctl_enable_cap(struct kvm *kvm, 3061 struct kvm_enable_cap *cap) 3062 { 3063 return -EINVAL; 3064 } 3065 3066 static int kvm_vm_ioctl_enable_cap_generic(struct kvm *kvm, 3067 struct kvm_enable_cap *cap) 3068 { 3069 switch (cap->cap) { 3070 #ifdef CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT 3071 case KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: 3072 if (cap->flags || (cap->args[0] & ~1)) 3073 return -EINVAL; 3074 kvm->manual_dirty_log_protect = cap->args[0]; 3075 return 0; 3076 #endif 3077 default: 3078 return kvm_vm_ioctl_enable_cap(kvm, cap); 3079 } 3080 } 3081 3082 static long kvm_vm_ioctl(struct file *filp, 3083 unsigned int ioctl, unsigned long arg) 3084 { 3085 struct kvm *kvm = filp->private_data; 3086 void __user *argp = (void __user *)arg; 3087 int r; 3088 3089 if (kvm->mm != current->mm) 3090 return -EIO; 3091 switch (ioctl) { 3092 case KVM_CREATE_VCPU: 3093 r = kvm_vm_ioctl_create_vcpu(kvm, arg); 3094 break; 3095 case KVM_ENABLE_CAP: { 3096 struct kvm_enable_cap cap; 3097 3098 r = -EFAULT; 3099 if (copy_from_user(&cap, argp, sizeof(cap))) 3100 goto out; 3101 r = kvm_vm_ioctl_enable_cap_generic(kvm, &cap); 3102 break; 3103 } 3104 case KVM_SET_USER_MEMORY_REGION: { 3105 struct kvm_userspace_memory_region kvm_userspace_mem; 3106 3107 r = -EFAULT; 3108 if (copy_from_user(&kvm_userspace_mem, argp, 3109 sizeof(kvm_userspace_mem))) 3110 goto out; 3111 3112 r = kvm_vm_ioctl_set_memory_region(kvm, &kvm_userspace_mem); 3113 break; 3114 } 3115 case KVM_GET_DIRTY_LOG: { 3116 struct kvm_dirty_log log; 3117 3118 r = -EFAULT; 3119 if (copy_from_user(&log, argp, sizeof(log))) 3120 goto out; 3121 r = kvm_vm_ioctl_get_dirty_log(kvm, &log); 3122 break; 3123 } 3124 #ifdef CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT 3125 case KVM_CLEAR_DIRTY_LOG: { 3126 struct kvm_clear_dirty_log log; 3127 3128 r = -EFAULT; 3129 if (copy_from_user(&log, argp, sizeof(log))) 3130 goto out; 3131 r = kvm_vm_ioctl_clear_dirty_log(kvm, &log); 3132 break; 3133 } 3134 #endif 3135 #ifdef CONFIG_KVM_MMIO 3136 case KVM_REGISTER_COALESCED_MMIO: { 3137 struct kvm_coalesced_mmio_zone zone; 3138 3139 r = -EFAULT; 3140 if (copy_from_user(&zone, argp, sizeof(zone))) 3141 goto out; 3142 r = kvm_vm_ioctl_register_coalesced_mmio(kvm, &zone); 3143 break; 3144 } 3145 case KVM_UNREGISTER_COALESCED_MMIO: { 3146 struct kvm_coalesced_mmio_zone zone; 3147 3148 r = -EFAULT; 3149 if (copy_from_user(&zone, argp, sizeof(zone))) 3150 goto out; 3151 r = kvm_vm_ioctl_unregister_coalesced_mmio(kvm, &zone); 3152 break; 3153 } 3154 #endif 3155 case KVM_IRQFD: { 3156 struct kvm_irqfd data; 3157 3158 r = -EFAULT; 3159 if (copy_from_user(&data, argp, sizeof(data))) 3160 goto out; 3161 r = kvm_irqfd(kvm, &data); 3162 break; 3163 } 3164 case KVM_IOEVENTFD: { 3165 struct kvm_ioeventfd data; 3166 3167 r = -EFAULT; 3168 if (copy_from_user(&data, argp, sizeof(data))) 3169 goto out; 3170 r = kvm_ioeventfd(kvm, &data); 3171 break; 3172 } 3173 #ifdef CONFIG_HAVE_KVM_MSI 3174 case KVM_SIGNAL_MSI: { 3175 struct kvm_msi msi; 3176 3177 r = -EFAULT; 3178 if (copy_from_user(&msi, argp, sizeof(msi))) 3179 goto out; 3180 r = kvm_send_userspace_msi(kvm, &msi); 3181 break; 3182 } 3183 #endif 3184 #ifdef __KVM_HAVE_IRQ_LINE 3185 case KVM_IRQ_LINE_STATUS: 3186 case KVM_IRQ_LINE: { 3187 struct kvm_irq_level irq_event; 3188 3189 r = -EFAULT; 3190 if (copy_from_user(&irq_event, argp, sizeof(irq_event))) 3191 goto out; 3192 3193 r = kvm_vm_ioctl_irq_line(kvm, &irq_event, 3194 ioctl == KVM_IRQ_LINE_STATUS); 3195 if (r) 3196 goto out; 3197 3198 r = -EFAULT; 3199 if (ioctl == KVM_IRQ_LINE_STATUS) { 3200 if (copy_to_user(argp, &irq_event, sizeof(irq_event))) 3201 goto out; 3202 } 3203 3204 r = 0; 3205 break; 3206 } 3207 #endif 3208 #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING 3209 case KVM_SET_GSI_ROUTING: { 3210 struct kvm_irq_routing routing; 3211 struct kvm_irq_routing __user *urouting; 3212 struct kvm_irq_routing_entry *entries = NULL; 3213 3214 r = -EFAULT; 3215 if (copy_from_user(&routing, argp, sizeof(routing))) 3216 goto out; 3217 r = -EINVAL; 3218 if (!kvm_arch_can_set_irq_routing(kvm)) 3219 goto out; 3220 if (routing.nr > KVM_MAX_IRQ_ROUTES) 3221 goto out; 3222 if (routing.flags) 3223 goto out; 3224 if (routing.nr) { 3225 r = -ENOMEM; 3226 entries = vmalloc(array_size(sizeof(*entries), 3227 routing.nr)); 3228 if (!entries) 3229 goto out; 3230 r = -EFAULT; 3231 urouting = argp; 3232 if (copy_from_user(entries, urouting->entries, 3233 routing.nr * sizeof(*entries))) 3234 goto out_free_irq_routing; 3235 } 3236 r = kvm_set_irq_routing(kvm, entries, routing.nr, 3237 routing.flags); 3238 out_free_irq_routing: 3239 vfree(entries); 3240 break; 3241 } 3242 #endif /* CONFIG_HAVE_KVM_IRQ_ROUTING */ 3243 case KVM_CREATE_DEVICE: { 3244 struct kvm_create_device cd; 3245 3246 r = -EFAULT; 3247 if (copy_from_user(&cd, argp, sizeof(cd))) 3248 goto out; 3249 3250 r = kvm_ioctl_create_device(kvm, &cd); 3251 if (r) 3252 goto out; 3253 3254 r = -EFAULT; 3255 if (copy_to_user(argp, &cd, sizeof(cd))) 3256 goto out; 3257 3258 r = 0; 3259 break; 3260 } 3261 case KVM_CHECK_EXTENSION: 3262 r = kvm_vm_ioctl_check_extension_generic(kvm, arg); 3263 break; 3264 default: 3265 r = kvm_arch_vm_ioctl(filp, ioctl, arg); 3266 } 3267 out: 3268 return r; 3269 } 3270 3271 #ifdef CONFIG_KVM_COMPAT 3272 struct compat_kvm_dirty_log { 3273 __u32 slot; 3274 __u32 padding1; 3275 union { 3276 compat_uptr_t dirty_bitmap; /* one bit per page */ 3277 __u64 padding2; 3278 }; 3279 }; 3280 3281 static long kvm_vm_compat_ioctl(struct file *filp, 3282 unsigned int ioctl, unsigned long arg) 3283 { 3284 struct kvm *kvm = filp->private_data; 3285 int r; 3286 3287 if (kvm->mm != current->mm) 3288 return -EIO; 3289 switch (ioctl) { 3290 case KVM_GET_DIRTY_LOG: { 3291 struct compat_kvm_dirty_log compat_log; 3292 struct kvm_dirty_log log; 3293 3294 if (copy_from_user(&compat_log, (void __user *)arg, 3295 sizeof(compat_log))) 3296 return -EFAULT; 3297 log.slot = compat_log.slot; 3298 log.padding1 = compat_log.padding1; 3299 log.padding2 = compat_log.padding2; 3300 log.dirty_bitmap = compat_ptr(compat_log.dirty_bitmap); 3301 3302 r = kvm_vm_ioctl_get_dirty_log(kvm, &log); 3303 break; 3304 } 3305 default: 3306 r = kvm_vm_ioctl(filp, ioctl, arg); 3307 } 3308 return r; 3309 } 3310 #endif 3311 3312 static struct file_operations kvm_vm_fops = { 3313 .release = kvm_vm_release, 3314 .unlocked_ioctl = kvm_vm_ioctl, 3315 .llseek = noop_llseek, 3316 KVM_COMPAT(kvm_vm_compat_ioctl), 3317 }; 3318 3319 static int kvm_dev_ioctl_create_vm(unsigned long type) 3320 { 3321 int r; 3322 struct kvm *kvm; 3323 struct file *file; 3324 3325 kvm = kvm_create_vm(type); 3326 if (IS_ERR(kvm)) 3327 return PTR_ERR(kvm); 3328 #ifdef CONFIG_KVM_MMIO 3329 r = kvm_coalesced_mmio_init(kvm); 3330 if (r < 0) 3331 goto put_kvm; 3332 #endif 3333 r = get_unused_fd_flags(O_CLOEXEC); 3334 if (r < 0) 3335 goto put_kvm; 3336 3337 file = anon_inode_getfile("kvm-vm", &kvm_vm_fops, kvm, O_RDWR); 3338 if (IS_ERR(file)) { 3339 put_unused_fd(r); 3340 r = PTR_ERR(file); 3341 goto put_kvm; 3342 } 3343 3344 /* 3345 * Don't call kvm_put_kvm anymore at this point; file->f_op is 3346 * already set, with ->release() being kvm_vm_release(). In error 3347 * cases it will be called by the final fput(file) and will take 3348 * care of doing kvm_put_kvm(kvm). 3349 */ 3350 if (kvm_create_vm_debugfs(kvm, r) < 0) { 3351 put_unused_fd(r); 3352 fput(file); 3353 return -ENOMEM; 3354 } 3355 kvm_uevent_notify_change(KVM_EVENT_CREATE_VM, kvm); 3356 3357 fd_install(r, file); 3358 return r; 3359 3360 put_kvm: 3361 kvm_put_kvm(kvm); 3362 return r; 3363 } 3364 3365 static long kvm_dev_ioctl(struct file *filp, 3366 unsigned int ioctl, unsigned long arg) 3367 { 3368 long r = -EINVAL; 3369 3370 switch (ioctl) { 3371 case KVM_GET_API_VERSION: 3372 if (arg) 3373 goto out; 3374 r = KVM_API_VERSION; 3375 break; 3376 case KVM_CREATE_VM: 3377 r = kvm_dev_ioctl_create_vm(arg); 3378 break; 3379 case KVM_CHECK_EXTENSION: 3380 r = kvm_vm_ioctl_check_extension_generic(NULL, arg); 3381 break; 3382 case KVM_GET_VCPU_MMAP_SIZE: 3383 if (arg) 3384 goto out; 3385 r = PAGE_SIZE; /* struct kvm_run */ 3386 #ifdef CONFIG_X86 3387 r += PAGE_SIZE; /* pio data page */ 3388 #endif 3389 #ifdef CONFIG_KVM_MMIO 3390 r += PAGE_SIZE; /* coalesced mmio ring page */ 3391 #endif 3392 break; 3393 case KVM_TRACE_ENABLE: 3394 case KVM_TRACE_PAUSE: 3395 case KVM_TRACE_DISABLE: 3396 r = -EOPNOTSUPP; 3397 break; 3398 default: 3399 return kvm_arch_dev_ioctl(filp, ioctl, arg); 3400 } 3401 out: 3402 return r; 3403 } 3404 3405 static struct file_operations kvm_chardev_ops = { 3406 .unlocked_ioctl = kvm_dev_ioctl, 3407 .llseek = noop_llseek, 3408 KVM_COMPAT(kvm_dev_ioctl), 3409 }; 3410 3411 static struct miscdevice kvm_dev = { 3412 KVM_MINOR, 3413 "kvm", 3414 &kvm_chardev_ops, 3415 }; 3416 3417 static void hardware_enable_nolock(void *junk) 3418 { 3419 int cpu = raw_smp_processor_id(); 3420 int r; 3421 3422 if (cpumask_test_cpu(cpu, cpus_hardware_enabled)) 3423 return; 3424 3425 cpumask_set_cpu(cpu, cpus_hardware_enabled); 3426 3427 r = kvm_arch_hardware_enable(); 3428 3429 if (r) { 3430 cpumask_clear_cpu(cpu, cpus_hardware_enabled); 3431 atomic_inc(&hardware_enable_failed); 3432 pr_info("kvm: enabling virtualization on CPU%d failed\n", cpu); 3433 } 3434 } 3435 3436 static int kvm_starting_cpu(unsigned int cpu) 3437 { 3438 raw_spin_lock(&kvm_count_lock); 3439 if (kvm_usage_count) 3440 hardware_enable_nolock(NULL); 3441 raw_spin_unlock(&kvm_count_lock); 3442 return 0; 3443 } 3444 3445 static void hardware_disable_nolock(void *junk) 3446 { 3447 int cpu = raw_smp_processor_id(); 3448 3449 if (!cpumask_test_cpu(cpu, cpus_hardware_enabled)) 3450 return; 3451 cpumask_clear_cpu(cpu, cpus_hardware_enabled); 3452 kvm_arch_hardware_disable(); 3453 } 3454 3455 static int kvm_dying_cpu(unsigned int cpu) 3456 { 3457 raw_spin_lock(&kvm_count_lock); 3458 if (kvm_usage_count) 3459 hardware_disable_nolock(NULL); 3460 raw_spin_unlock(&kvm_count_lock); 3461 return 0; 3462 } 3463 3464 static void hardware_disable_all_nolock(void) 3465 { 3466 BUG_ON(!kvm_usage_count); 3467 3468 kvm_usage_count--; 3469 if (!kvm_usage_count) 3470 on_each_cpu(hardware_disable_nolock, NULL, 1); 3471 } 3472 3473 static void hardware_disable_all(void) 3474 { 3475 raw_spin_lock(&kvm_count_lock); 3476 hardware_disable_all_nolock(); 3477 raw_spin_unlock(&kvm_count_lock); 3478 } 3479 3480 static int hardware_enable_all(void) 3481 { 3482 int r = 0; 3483 3484 raw_spin_lock(&kvm_count_lock); 3485 3486 kvm_usage_count++; 3487 if (kvm_usage_count == 1) { 3488 atomic_set(&hardware_enable_failed, 0); 3489 on_each_cpu(hardware_enable_nolock, NULL, 1); 3490 3491 if (atomic_read(&hardware_enable_failed)) { 3492 hardware_disable_all_nolock(); 3493 r = -EBUSY; 3494 } 3495 } 3496 3497 raw_spin_unlock(&kvm_count_lock); 3498 3499 return r; 3500 } 3501 3502 static int kvm_reboot(struct notifier_block *notifier, unsigned long val, 3503 void *v) 3504 { 3505 /* 3506 * Some (well, at least mine) BIOSes hang on reboot if 3507 * in vmx root mode. 3508 * 3509 * And Intel TXT required VMX off for all cpu when system shutdown. 3510 */ 3511 pr_info("kvm: exiting hardware virtualization\n"); 3512 kvm_rebooting = true; 3513 on_each_cpu(hardware_disable_nolock, NULL, 1); 3514 return NOTIFY_OK; 3515 } 3516 3517 static struct notifier_block kvm_reboot_notifier = { 3518 .notifier_call = kvm_reboot, 3519 .priority = 0, 3520 }; 3521 3522 static void kvm_io_bus_destroy(struct kvm_io_bus *bus) 3523 { 3524 int i; 3525 3526 for (i = 0; i < bus->dev_count; i++) { 3527 struct kvm_io_device *pos = bus->range[i].dev; 3528 3529 kvm_iodevice_destructor(pos); 3530 } 3531 kfree(bus); 3532 } 3533 3534 static inline int kvm_io_bus_cmp(const struct kvm_io_range *r1, 3535 const struct kvm_io_range *r2) 3536 { 3537 gpa_t addr1 = r1->addr; 3538 gpa_t addr2 = r2->addr; 3539 3540 if (addr1 < addr2) 3541 return -1; 3542 3543 /* If r2->len == 0, match the exact address. If r2->len != 0, 3544 * accept any overlapping write. Any order is acceptable for 3545 * overlapping ranges, because kvm_io_bus_get_first_dev ensures 3546 * we process all of them. 3547 */ 3548 if (r2->len) { 3549 addr1 += r1->len; 3550 addr2 += r2->len; 3551 } 3552 3553 if (addr1 > addr2) 3554 return 1; 3555 3556 return 0; 3557 } 3558 3559 static int kvm_io_bus_sort_cmp(const void *p1, const void *p2) 3560 { 3561 return kvm_io_bus_cmp(p1, p2); 3562 } 3563 3564 static int kvm_io_bus_get_first_dev(struct kvm_io_bus *bus, 3565 gpa_t addr, int len) 3566 { 3567 struct kvm_io_range *range, key; 3568 int off; 3569 3570 key = (struct kvm_io_range) { 3571 .addr = addr, 3572 .len = len, 3573 }; 3574 3575 range = bsearch(&key, bus->range, bus->dev_count, 3576 sizeof(struct kvm_io_range), kvm_io_bus_sort_cmp); 3577 if (range == NULL) 3578 return -ENOENT; 3579 3580 off = range - bus->range; 3581 3582 while (off > 0 && kvm_io_bus_cmp(&key, &bus->range[off-1]) == 0) 3583 off--; 3584 3585 return off; 3586 } 3587 3588 static int __kvm_io_bus_write(struct kvm_vcpu *vcpu, struct kvm_io_bus *bus, 3589 struct kvm_io_range *range, const void *val) 3590 { 3591 int idx; 3592 3593 idx = kvm_io_bus_get_first_dev(bus, range->addr, range->len); 3594 if (idx < 0) 3595 return -EOPNOTSUPP; 3596 3597 while (idx < bus->dev_count && 3598 kvm_io_bus_cmp(range, &bus->range[idx]) == 0) { 3599 if (!kvm_iodevice_write(vcpu, bus->range[idx].dev, range->addr, 3600 range->len, val)) 3601 return idx; 3602 idx++; 3603 } 3604 3605 return -EOPNOTSUPP; 3606 } 3607 3608 /* kvm_io_bus_write - called under kvm->slots_lock */ 3609 int kvm_io_bus_write(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr, 3610 int len, const void *val) 3611 { 3612 struct kvm_io_bus *bus; 3613 struct kvm_io_range range; 3614 int r; 3615 3616 range = (struct kvm_io_range) { 3617 .addr = addr, 3618 .len = len, 3619 }; 3620 3621 bus = srcu_dereference(vcpu->kvm->buses[bus_idx], &vcpu->kvm->srcu); 3622 if (!bus) 3623 return -ENOMEM; 3624 r = __kvm_io_bus_write(vcpu, bus, &range, val); 3625 return r < 0 ? r : 0; 3626 } 3627 3628 /* kvm_io_bus_write_cookie - called under kvm->slots_lock */ 3629 int kvm_io_bus_write_cookie(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, 3630 gpa_t addr, int len, const void *val, long cookie) 3631 { 3632 struct kvm_io_bus *bus; 3633 struct kvm_io_range range; 3634 3635 range = (struct kvm_io_range) { 3636 .addr = addr, 3637 .len = len, 3638 }; 3639 3640 bus = srcu_dereference(vcpu->kvm->buses[bus_idx], &vcpu->kvm->srcu); 3641 if (!bus) 3642 return -ENOMEM; 3643 3644 /* First try the device referenced by cookie. */ 3645 if ((cookie >= 0) && (cookie < bus->dev_count) && 3646 (kvm_io_bus_cmp(&range, &bus->range[cookie]) == 0)) 3647 if (!kvm_iodevice_write(vcpu, bus->range[cookie].dev, addr, len, 3648 val)) 3649 return cookie; 3650 3651 /* 3652 * cookie contained garbage; fall back to search and return the 3653 * correct cookie value. 3654 */ 3655 return __kvm_io_bus_write(vcpu, bus, &range, val); 3656 } 3657 3658 static int __kvm_io_bus_read(struct kvm_vcpu *vcpu, struct kvm_io_bus *bus, 3659 struct kvm_io_range *range, void *val) 3660 { 3661 int idx; 3662 3663 idx = kvm_io_bus_get_first_dev(bus, range->addr, range->len); 3664 if (idx < 0) 3665 return -EOPNOTSUPP; 3666 3667 while (idx < bus->dev_count && 3668 kvm_io_bus_cmp(range, &bus->range[idx]) == 0) { 3669 if (!kvm_iodevice_read(vcpu, bus->range[idx].dev, range->addr, 3670 range->len, val)) 3671 return idx; 3672 idx++; 3673 } 3674 3675 return -EOPNOTSUPP; 3676 } 3677 EXPORT_SYMBOL_GPL(kvm_io_bus_write); 3678 3679 /* kvm_io_bus_read - called under kvm->slots_lock */ 3680 int kvm_io_bus_read(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr, 3681 int len, void *val) 3682 { 3683 struct kvm_io_bus *bus; 3684 struct kvm_io_range range; 3685 int r; 3686 3687 range = (struct kvm_io_range) { 3688 .addr = addr, 3689 .len = len, 3690 }; 3691 3692 bus = srcu_dereference(vcpu->kvm->buses[bus_idx], &vcpu->kvm->srcu); 3693 if (!bus) 3694 return -ENOMEM; 3695 r = __kvm_io_bus_read(vcpu, bus, &range, val); 3696 return r < 0 ? r : 0; 3697 } 3698 3699 3700 /* Caller must hold slots_lock. */ 3701 int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, 3702 int len, struct kvm_io_device *dev) 3703 { 3704 int i; 3705 struct kvm_io_bus *new_bus, *bus; 3706 struct kvm_io_range range; 3707 3708 bus = kvm_get_bus(kvm, bus_idx); 3709 if (!bus) 3710 return -ENOMEM; 3711 3712 /* exclude ioeventfd which is limited by maximum fd */ 3713 if (bus->dev_count - bus->ioeventfd_count > NR_IOBUS_DEVS - 1) 3714 return -ENOSPC; 3715 3716 new_bus = kmalloc(sizeof(*bus) + ((bus->dev_count + 1) * 3717 sizeof(struct kvm_io_range)), GFP_KERNEL); 3718 if (!new_bus) 3719 return -ENOMEM; 3720 3721 range = (struct kvm_io_range) { 3722 .addr = addr, 3723 .len = len, 3724 .dev = dev, 3725 }; 3726 3727 for (i = 0; i < bus->dev_count; i++) 3728 if (kvm_io_bus_cmp(&bus->range[i], &range) > 0) 3729 break; 3730 3731 memcpy(new_bus, bus, sizeof(*bus) + i * sizeof(struct kvm_io_range)); 3732 new_bus->dev_count++; 3733 new_bus->range[i] = range; 3734 memcpy(new_bus->range + i + 1, bus->range + i, 3735 (bus->dev_count - i) * sizeof(struct kvm_io_range)); 3736 rcu_assign_pointer(kvm->buses[bus_idx], new_bus); 3737 synchronize_srcu_expedited(&kvm->srcu); 3738 kfree(bus); 3739 3740 return 0; 3741 } 3742 3743 /* Caller must hold slots_lock. */ 3744 void kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx, 3745 struct kvm_io_device *dev) 3746 { 3747 int i; 3748 struct kvm_io_bus *new_bus, *bus; 3749 3750 bus = kvm_get_bus(kvm, bus_idx); 3751 if (!bus) 3752 return; 3753 3754 for (i = 0; i < bus->dev_count; i++) 3755 if (bus->range[i].dev == dev) { 3756 break; 3757 } 3758 3759 if (i == bus->dev_count) 3760 return; 3761 3762 new_bus = kmalloc(sizeof(*bus) + ((bus->dev_count - 1) * 3763 sizeof(struct kvm_io_range)), GFP_KERNEL); 3764 if (!new_bus) { 3765 pr_err("kvm: failed to shrink bus, removing it completely\n"); 3766 goto broken; 3767 } 3768 3769 memcpy(new_bus, bus, sizeof(*bus) + i * sizeof(struct kvm_io_range)); 3770 new_bus->dev_count--; 3771 memcpy(new_bus->range + i, bus->range + i + 1, 3772 (new_bus->dev_count - i) * sizeof(struct kvm_io_range)); 3773 3774 broken: 3775 rcu_assign_pointer(kvm->buses[bus_idx], new_bus); 3776 synchronize_srcu_expedited(&kvm->srcu); 3777 kfree(bus); 3778 return; 3779 } 3780 3781 struct kvm_io_device *kvm_io_bus_get_dev(struct kvm *kvm, enum kvm_bus bus_idx, 3782 gpa_t addr) 3783 { 3784 struct kvm_io_bus *bus; 3785 int dev_idx, srcu_idx; 3786 struct kvm_io_device *iodev = NULL; 3787 3788 srcu_idx = srcu_read_lock(&kvm->srcu); 3789 3790 bus = srcu_dereference(kvm->buses[bus_idx], &kvm->srcu); 3791 if (!bus) 3792 goto out_unlock; 3793 3794 dev_idx = kvm_io_bus_get_first_dev(bus, addr, 1); 3795 if (dev_idx < 0) 3796 goto out_unlock; 3797 3798 iodev = bus->range[dev_idx].dev; 3799 3800 out_unlock: 3801 srcu_read_unlock(&kvm->srcu, srcu_idx); 3802 3803 return iodev; 3804 } 3805 EXPORT_SYMBOL_GPL(kvm_io_bus_get_dev); 3806 3807 static int kvm_debugfs_open(struct inode *inode, struct file *file, 3808 int (*get)(void *, u64 *), int (*set)(void *, u64), 3809 const char *fmt) 3810 { 3811 struct kvm_stat_data *stat_data = (struct kvm_stat_data *) 3812 inode->i_private; 3813 3814 /* The debugfs files are a reference to the kvm struct which 3815 * is still valid when kvm_destroy_vm is called. 3816 * To avoid the race between open and the removal of the debugfs 3817 * directory we test against the users count. 3818 */ 3819 if (!refcount_inc_not_zero(&stat_data->kvm->users_count)) 3820 return -ENOENT; 3821 3822 if (simple_attr_open(inode, file, get, set, fmt)) { 3823 kvm_put_kvm(stat_data->kvm); 3824 return -ENOMEM; 3825 } 3826 3827 return 0; 3828 } 3829 3830 static int kvm_debugfs_release(struct inode *inode, struct file *file) 3831 { 3832 struct kvm_stat_data *stat_data = (struct kvm_stat_data *) 3833 inode->i_private; 3834 3835 simple_attr_release(inode, file); 3836 kvm_put_kvm(stat_data->kvm); 3837 3838 return 0; 3839 } 3840 3841 static int vm_stat_get_per_vm(void *data, u64 *val) 3842 { 3843 struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data; 3844 3845 *val = *(ulong *)((void *)stat_data->kvm + stat_data->offset); 3846 3847 return 0; 3848 } 3849 3850 static int vm_stat_clear_per_vm(void *data, u64 val) 3851 { 3852 struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data; 3853 3854 if (val) 3855 return -EINVAL; 3856 3857 *(ulong *)((void *)stat_data->kvm + stat_data->offset) = 0; 3858 3859 return 0; 3860 } 3861 3862 static int vm_stat_get_per_vm_open(struct inode *inode, struct file *file) 3863 { 3864 __simple_attr_check_format("%llu\n", 0ull); 3865 return kvm_debugfs_open(inode, file, vm_stat_get_per_vm, 3866 vm_stat_clear_per_vm, "%llu\n"); 3867 } 3868 3869 static const struct file_operations vm_stat_get_per_vm_fops = { 3870 .owner = THIS_MODULE, 3871 .open = vm_stat_get_per_vm_open, 3872 .release = kvm_debugfs_release, 3873 .read = simple_attr_read, 3874 .write = simple_attr_write, 3875 .llseek = no_llseek, 3876 }; 3877 3878 static int vcpu_stat_get_per_vm(void *data, u64 *val) 3879 { 3880 int i; 3881 struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data; 3882 struct kvm_vcpu *vcpu; 3883 3884 *val = 0; 3885 3886 kvm_for_each_vcpu(i, vcpu, stat_data->kvm) 3887 *val += *(u64 *)((void *)vcpu + stat_data->offset); 3888 3889 return 0; 3890 } 3891 3892 static int vcpu_stat_clear_per_vm(void *data, u64 val) 3893 { 3894 int i; 3895 struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data; 3896 struct kvm_vcpu *vcpu; 3897 3898 if (val) 3899 return -EINVAL; 3900 3901 kvm_for_each_vcpu(i, vcpu, stat_data->kvm) 3902 *(u64 *)((void *)vcpu + stat_data->offset) = 0; 3903 3904 return 0; 3905 } 3906 3907 static int vcpu_stat_get_per_vm_open(struct inode *inode, struct file *file) 3908 { 3909 __simple_attr_check_format("%llu\n", 0ull); 3910 return kvm_debugfs_open(inode, file, vcpu_stat_get_per_vm, 3911 vcpu_stat_clear_per_vm, "%llu\n"); 3912 } 3913 3914 static const struct file_operations vcpu_stat_get_per_vm_fops = { 3915 .owner = THIS_MODULE, 3916 .open = vcpu_stat_get_per_vm_open, 3917 .release = kvm_debugfs_release, 3918 .read = simple_attr_read, 3919 .write = simple_attr_write, 3920 .llseek = no_llseek, 3921 }; 3922 3923 static const struct file_operations *stat_fops_per_vm[] = { 3924 [KVM_STAT_VCPU] = &vcpu_stat_get_per_vm_fops, 3925 [KVM_STAT_VM] = &vm_stat_get_per_vm_fops, 3926 }; 3927 3928 static int vm_stat_get(void *_offset, u64 *val) 3929 { 3930 unsigned offset = (long)_offset; 3931 struct kvm *kvm; 3932 struct kvm_stat_data stat_tmp = {.offset = offset}; 3933 u64 tmp_val; 3934 3935 *val = 0; 3936 spin_lock(&kvm_lock); 3937 list_for_each_entry(kvm, &vm_list, vm_list) { 3938 stat_tmp.kvm = kvm; 3939 vm_stat_get_per_vm((void *)&stat_tmp, &tmp_val); 3940 *val += tmp_val; 3941 } 3942 spin_unlock(&kvm_lock); 3943 return 0; 3944 } 3945 3946 static int vm_stat_clear(void *_offset, u64 val) 3947 { 3948 unsigned offset = (long)_offset; 3949 struct kvm *kvm; 3950 struct kvm_stat_data stat_tmp = {.offset = offset}; 3951 3952 if (val) 3953 return -EINVAL; 3954 3955 spin_lock(&kvm_lock); 3956 list_for_each_entry(kvm, &vm_list, vm_list) { 3957 stat_tmp.kvm = kvm; 3958 vm_stat_clear_per_vm((void *)&stat_tmp, 0); 3959 } 3960 spin_unlock(&kvm_lock); 3961 3962 return 0; 3963 } 3964 3965 DEFINE_SIMPLE_ATTRIBUTE(vm_stat_fops, vm_stat_get, vm_stat_clear, "%llu\n"); 3966 3967 static int vcpu_stat_get(void *_offset, u64 *val) 3968 { 3969 unsigned offset = (long)_offset; 3970 struct kvm *kvm; 3971 struct kvm_stat_data stat_tmp = {.offset = offset}; 3972 u64 tmp_val; 3973 3974 *val = 0; 3975 spin_lock(&kvm_lock); 3976 list_for_each_entry(kvm, &vm_list, vm_list) { 3977 stat_tmp.kvm = kvm; 3978 vcpu_stat_get_per_vm((void *)&stat_tmp, &tmp_val); 3979 *val += tmp_val; 3980 } 3981 spin_unlock(&kvm_lock); 3982 return 0; 3983 } 3984 3985 static int vcpu_stat_clear(void *_offset, u64 val) 3986 { 3987 unsigned offset = (long)_offset; 3988 struct kvm *kvm; 3989 struct kvm_stat_data stat_tmp = {.offset = offset}; 3990 3991 if (val) 3992 return -EINVAL; 3993 3994 spin_lock(&kvm_lock); 3995 list_for_each_entry(kvm, &vm_list, vm_list) { 3996 stat_tmp.kvm = kvm; 3997 vcpu_stat_clear_per_vm((void *)&stat_tmp, 0); 3998 } 3999 spin_unlock(&kvm_lock); 4000 4001 return 0; 4002 } 4003 4004 DEFINE_SIMPLE_ATTRIBUTE(vcpu_stat_fops, vcpu_stat_get, vcpu_stat_clear, 4005 "%llu\n"); 4006 4007 static const struct file_operations *stat_fops[] = { 4008 [KVM_STAT_VCPU] = &vcpu_stat_fops, 4009 [KVM_STAT_VM] = &vm_stat_fops, 4010 }; 4011 4012 static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm) 4013 { 4014 struct kobj_uevent_env *env; 4015 unsigned long long created, active; 4016 4017 if (!kvm_dev.this_device || !kvm) 4018 return; 4019 4020 spin_lock(&kvm_lock); 4021 if (type == KVM_EVENT_CREATE_VM) { 4022 kvm_createvm_count++; 4023 kvm_active_vms++; 4024 } else if (type == KVM_EVENT_DESTROY_VM) { 4025 kvm_active_vms--; 4026 } 4027 created = kvm_createvm_count; 4028 active = kvm_active_vms; 4029 spin_unlock(&kvm_lock); 4030 4031 env = kzalloc(sizeof(*env), GFP_KERNEL); 4032 if (!env) 4033 return; 4034 4035 add_uevent_var(env, "CREATED=%llu", created); 4036 add_uevent_var(env, "COUNT=%llu", active); 4037 4038 if (type == KVM_EVENT_CREATE_VM) { 4039 add_uevent_var(env, "EVENT=create"); 4040 kvm->userspace_pid = task_pid_nr(current); 4041 } else if (type == KVM_EVENT_DESTROY_VM) { 4042 add_uevent_var(env, "EVENT=destroy"); 4043 } 4044 add_uevent_var(env, "PID=%d", kvm->userspace_pid); 4045 4046 if (kvm->debugfs_dentry) { 4047 char *tmp, *p = kmalloc(PATH_MAX, GFP_KERNEL); 4048 4049 if (p) { 4050 tmp = dentry_path_raw(kvm->debugfs_dentry, p, PATH_MAX); 4051 if (!IS_ERR(tmp)) 4052 add_uevent_var(env, "STATS_PATH=%s", tmp); 4053 kfree(p); 4054 } 4055 } 4056 /* no need for checks, since we are adding at most only 5 keys */ 4057 env->envp[env->envp_idx++] = NULL; 4058 kobject_uevent_env(&kvm_dev.this_device->kobj, KOBJ_CHANGE, env->envp); 4059 kfree(env); 4060 } 4061 4062 static void kvm_init_debug(void) 4063 { 4064 struct kvm_stats_debugfs_item *p; 4065 4066 kvm_debugfs_dir = debugfs_create_dir("kvm", NULL); 4067 4068 kvm_debugfs_num_entries = 0; 4069 for (p = debugfs_entries; p->name; ++p, kvm_debugfs_num_entries++) { 4070 debugfs_create_file(p->name, 0644, kvm_debugfs_dir, 4071 (void *)(long)p->offset, 4072 stat_fops[p->kind]); 4073 } 4074 } 4075 4076 static int kvm_suspend(void) 4077 { 4078 if (kvm_usage_count) 4079 hardware_disable_nolock(NULL); 4080 return 0; 4081 } 4082 4083 static void kvm_resume(void) 4084 { 4085 if (kvm_usage_count) { 4086 WARN_ON(raw_spin_is_locked(&kvm_count_lock)); 4087 hardware_enable_nolock(NULL); 4088 } 4089 } 4090 4091 static struct syscore_ops kvm_syscore_ops = { 4092 .suspend = kvm_suspend, 4093 .resume = kvm_resume, 4094 }; 4095 4096 static inline 4097 struct kvm_vcpu *preempt_notifier_to_vcpu(struct preempt_notifier *pn) 4098 { 4099 return container_of(pn, struct kvm_vcpu, preempt_notifier); 4100 } 4101 4102 static void kvm_sched_in(struct preempt_notifier *pn, int cpu) 4103 { 4104 struct kvm_vcpu *vcpu = preempt_notifier_to_vcpu(pn); 4105 4106 if (vcpu->preempted) 4107 vcpu->preempted = false; 4108 4109 kvm_arch_sched_in(vcpu, cpu); 4110 4111 kvm_arch_vcpu_load(vcpu, cpu); 4112 } 4113 4114 static void kvm_sched_out(struct preempt_notifier *pn, 4115 struct task_struct *next) 4116 { 4117 struct kvm_vcpu *vcpu = preempt_notifier_to_vcpu(pn); 4118 4119 if (current->state == TASK_RUNNING) 4120 vcpu->preempted = true; 4121 kvm_arch_vcpu_put(vcpu); 4122 } 4123 4124 int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, 4125 struct module *module) 4126 { 4127 int r; 4128 int cpu; 4129 4130 r = kvm_arch_init(opaque); 4131 if (r) 4132 goto out_fail; 4133 4134 /* 4135 * kvm_arch_init makes sure there's at most one caller 4136 * for architectures that support multiple implementations, 4137 * like intel and amd on x86. 4138 * kvm_arch_init must be called before kvm_irqfd_init to avoid creating 4139 * conflicts in case kvm is already setup for another implementation. 4140 */ 4141 r = kvm_irqfd_init(); 4142 if (r) 4143 goto out_irqfd; 4144 4145 if (!zalloc_cpumask_var(&cpus_hardware_enabled, GFP_KERNEL)) { 4146 r = -ENOMEM; 4147 goto out_free_0; 4148 } 4149 4150 r = kvm_arch_hardware_setup(); 4151 if (r < 0) 4152 goto out_free_0a; 4153 4154 for_each_online_cpu(cpu) { 4155 smp_call_function_single(cpu, 4156 kvm_arch_check_processor_compat, 4157 &r, 1); 4158 if (r < 0) 4159 goto out_free_1; 4160 } 4161 4162 r = cpuhp_setup_state_nocalls(CPUHP_AP_KVM_STARTING, "kvm/cpu:starting", 4163 kvm_starting_cpu, kvm_dying_cpu); 4164 if (r) 4165 goto out_free_2; 4166 register_reboot_notifier(&kvm_reboot_notifier); 4167 4168 /* A kmem cache lets us meet the alignment requirements of fx_save. */ 4169 if (!vcpu_align) 4170 vcpu_align = __alignof__(struct kvm_vcpu); 4171 kvm_vcpu_cache = 4172 kmem_cache_create_usercopy("kvm_vcpu", vcpu_size, vcpu_align, 4173 SLAB_ACCOUNT, 4174 offsetof(struct kvm_vcpu, arch), 4175 sizeof_field(struct kvm_vcpu, arch), 4176 NULL); 4177 if (!kvm_vcpu_cache) { 4178 r = -ENOMEM; 4179 goto out_free_3; 4180 } 4181 4182 r = kvm_async_pf_init(); 4183 if (r) 4184 goto out_free; 4185 4186 kvm_chardev_ops.owner = module; 4187 kvm_vm_fops.owner = module; 4188 kvm_vcpu_fops.owner = module; 4189 4190 r = misc_register(&kvm_dev); 4191 if (r) { 4192 pr_err("kvm: misc device register failed\n"); 4193 goto out_unreg; 4194 } 4195 4196 register_syscore_ops(&kvm_syscore_ops); 4197 4198 kvm_preempt_ops.sched_in = kvm_sched_in; 4199 kvm_preempt_ops.sched_out = kvm_sched_out; 4200 4201 kvm_init_debug(); 4202 4203 r = kvm_vfio_ops_init(); 4204 WARN_ON(r); 4205 4206 return 0; 4207 4208 out_unreg: 4209 kvm_async_pf_deinit(); 4210 out_free: 4211 kmem_cache_destroy(kvm_vcpu_cache); 4212 out_free_3: 4213 unregister_reboot_notifier(&kvm_reboot_notifier); 4214 cpuhp_remove_state_nocalls(CPUHP_AP_KVM_STARTING); 4215 out_free_2: 4216 out_free_1: 4217 kvm_arch_hardware_unsetup(); 4218 out_free_0a: 4219 free_cpumask_var(cpus_hardware_enabled); 4220 out_free_0: 4221 kvm_irqfd_exit(); 4222 out_irqfd: 4223 kvm_arch_exit(); 4224 out_fail: 4225 return r; 4226 } 4227 EXPORT_SYMBOL_GPL(kvm_init); 4228 4229 void kvm_exit(void) 4230 { 4231 debugfs_remove_recursive(kvm_debugfs_dir); 4232 misc_deregister(&kvm_dev); 4233 kmem_cache_destroy(kvm_vcpu_cache); 4234 kvm_async_pf_deinit(); 4235 unregister_syscore_ops(&kvm_syscore_ops); 4236 unregister_reboot_notifier(&kvm_reboot_notifier); 4237 cpuhp_remove_state_nocalls(CPUHP_AP_KVM_STARTING); 4238 on_each_cpu(hardware_disable_nolock, NULL, 1); 4239 kvm_arch_hardware_unsetup(); 4240 kvm_arch_exit(); 4241 kvm_irqfd_exit(); 4242 free_cpumask_var(cpus_hardware_enabled); 4243 kvm_vfio_ops_exit(); 4244 } 4245 EXPORT_SYMBOL_GPL(kvm_exit); 4246