Linux Audio

Check our new training course

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