···601/*602 * Creates some virtual cpus. Good luck creating more than one.603 */604-static int kvm_dev_ioctl_create_vcpu(struct kvm *kvm, int n)605{606 int r;607 struct kvm_vcpu *vcpu;···655 *656 * Discontiguous memory is allowed, mostly for framebuffers.657 */658-static int kvm_dev_ioctl_set_memory_region(struct kvm *kvm,659- struct kvm_memory_region *mem)660{661 int r;662 gfn_t base_gfn;···804/*805 * Get (and clear) the dirty memory log for a memory slot.806 */807-static int kvm_dev_ioctl_get_dirty_log(struct kvm *kvm,808- struct kvm_dirty_log *log)809{810 struct kvm_memory_slot *memslot;811 int r, i;···1535}1536EXPORT_SYMBOL_GPL(save_msrs);15371538-static int kvm_dev_ioctl_run(struct kvm *kvm, struct kvm_run *kvm_run)1539{1540 struct kvm_vcpu *vcpu;1541 int r;···1568 return r;1569}15701571-static int kvm_dev_ioctl_get_regs(struct kvm *kvm, struct kvm_regs *regs)1572{1573 struct kvm_vcpu *vcpu;1574···1614 return 0;1615}16161617-static int kvm_dev_ioctl_set_regs(struct kvm *kvm, struct kvm_regs *regs)1618{1619 struct kvm_vcpu *vcpu;1620···1660 return kvm_arch_ops->get_segment(vcpu, var, seg);1661}16621663-static int kvm_dev_ioctl_get_sregs(struct kvm *kvm, struct kvm_sregs *sregs)1664{1665 struct kvm_vcpu *vcpu;1666 struct descriptor_table dt;···1711 return kvm_arch_ops->set_segment(vcpu, var, seg);1712}17131714-static int kvm_dev_ioctl_set_sregs(struct kvm *kvm, struct kvm_sregs *sregs)1715{1716 struct kvm_vcpu *vcpu;1717 int mmu_reset_needed = 0;···1904/*1905 * Translate a guest virtual address to a guest physical address.1906 */1907-static int kvm_dev_ioctl_translate(struct kvm *kvm, struct kvm_translation *tr)1908{1909 unsigned long vaddr = tr->linear_address;1910 struct kvm_vcpu *vcpu;···1925 return 0;1926}19271928-static int kvm_dev_ioctl_interrupt(struct kvm *kvm, struct kvm_interrupt *irq)1929{1930 struct kvm_vcpu *vcpu;1931···1945 return 0;1946}19471948-static int kvm_dev_ioctl_debug_guest(struct kvm *kvm,1949 struct kvm_debug_guest *dbg)1950{1951 struct kvm_vcpu *vcpu;···19731974 switch (ioctl) {1975 case KVM_CREATE_VCPU:1976- r = kvm_dev_ioctl_create_vcpu(kvm, arg);1977 if (r)1978 goto out;1979 break;···1983 r = -EFAULT;1984 if (copy_from_user(&kvm_run, argp, sizeof kvm_run))1985 goto out;1986- r = kvm_dev_ioctl_run(kvm, &kvm_run);1987 if (r < 0 && r != -EINTR)1988 goto out;1989 if (copy_to_user(argp, &kvm_run, sizeof kvm_run)) {···1998 r = -EFAULT;1999 if (copy_from_user(&kvm_regs, argp, sizeof kvm_regs))2000 goto out;2001- r = kvm_dev_ioctl_get_regs(kvm, &kvm_regs);2002 if (r)2003 goto out;2004 r = -EFAULT;···2013 r = -EFAULT;2014 if (copy_from_user(&kvm_regs, argp, sizeof kvm_regs))2015 goto out;2016- r = kvm_dev_ioctl_set_regs(kvm, &kvm_regs);2017 if (r)2018 goto out;2019 r = 0;···2025 r = -EFAULT;2026 if (copy_from_user(&kvm_sregs, argp, sizeof kvm_sregs))2027 goto out;2028- r = kvm_dev_ioctl_get_sregs(kvm, &kvm_sregs);2029 if (r)2030 goto out;2031 r = -EFAULT;···2040 r = -EFAULT;2041 if (copy_from_user(&kvm_sregs, argp, sizeof kvm_sregs))2042 goto out;2043- r = kvm_dev_ioctl_set_sregs(kvm, &kvm_sregs);2044 if (r)2045 goto out;2046 r = 0;···2052 r = -EFAULT;2053 if (copy_from_user(&tr, argp, sizeof tr))2054 goto out;2055- r = kvm_dev_ioctl_translate(kvm, &tr);2056 if (r)2057 goto out;2058 r = -EFAULT;···2067 r = -EFAULT;2068 if (copy_from_user(&irq, argp, sizeof irq))2069 goto out;2070- r = kvm_dev_ioctl_interrupt(kvm, &irq);2071 if (r)2072 goto out;2073 r = 0;···2079 r = -EFAULT;2080 if (copy_from_user(&dbg, argp, sizeof dbg))2081 goto out;2082- r = kvm_dev_ioctl_debug_guest(kvm, &dbg);2083 if (r)2084 goto out;2085 r = 0;···2091 r = -EFAULT;2092 if (copy_from_user(&kvm_mem, argp, sizeof kvm_mem))2093 goto out;2094- r = kvm_dev_ioctl_set_memory_region(kvm, &kvm_mem);2095 if (r)2096 goto out;2097 break;···2102 r = -EFAULT;2103 if (copy_from_user(&log, argp, sizeof log))2104 goto out;2105- r = kvm_dev_ioctl_get_dirty_log(kvm, &log);2106 if (r)2107 goto out;2108 break;
···601/*602 * Creates some virtual cpus. Good luck creating more than one.603 */604+static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, int n)605{606 int r;607 struct kvm_vcpu *vcpu;···655 *656 * Discontiguous memory is allowed, mostly for framebuffers.657 */658+static int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,659+ struct kvm_memory_region *mem)660{661 int r;662 gfn_t base_gfn;···804/*805 * Get (and clear) the dirty memory log for a memory slot.806 */807+static int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,808+ struct kvm_dirty_log *log)809{810 struct kvm_memory_slot *memslot;811 int r, i;···1535}1536EXPORT_SYMBOL_GPL(save_msrs);15371538+static int kvm_vm_ioctl_run(struct kvm *kvm, struct kvm_run *kvm_run)1539{1540 struct kvm_vcpu *vcpu;1541 int r;···1568 return r;1569}15701571+static int kvm_vm_ioctl_get_regs(struct kvm *kvm, struct kvm_regs *regs)1572{1573 struct kvm_vcpu *vcpu;1574···1614 return 0;1615}16161617+static int kvm_vm_ioctl_set_regs(struct kvm *kvm, struct kvm_regs *regs)1618{1619 struct kvm_vcpu *vcpu;1620···1660 return kvm_arch_ops->get_segment(vcpu, var, seg);1661}16621663+static int kvm_vm_ioctl_get_sregs(struct kvm *kvm, struct kvm_sregs *sregs)1664{1665 struct kvm_vcpu *vcpu;1666 struct descriptor_table dt;···1711 return kvm_arch_ops->set_segment(vcpu, var, seg);1712}17131714+static int kvm_vm_ioctl_set_sregs(struct kvm *kvm, struct kvm_sregs *sregs)1715{1716 struct kvm_vcpu *vcpu;1717 int mmu_reset_needed = 0;···1904/*1905 * Translate a guest virtual address to a guest physical address.1906 */1907+static int kvm_vm_ioctl_translate(struct kvm *kvm, struct kvm_translation *tr)1908{1909 unsigned long vaddr = tr->linear_address;1910 struct kvm_vcpu *vcpu;···1925 return 0;1926}19271928+static int kvm_vm_ioctl_interrupt(struct kvm *kvm, struct kvm_interrupt *irq)1929{1930 struct kvm_vcpu *vcpu;1931···1945 return 0;1946}19471948+static int kvm_vm_ioctl_debug_guest(struct kvm *kvm,1949 struct kvm_debug_guest *dbg)1950{1951 struct kvm_vcpu *vcpu;···19731974 switch (ioctl) {1975 case KVM_CREATE_VCPU:1976+ r = kvm_vm_ioctl_create_vcpu(kvm, arg);1977 if (r)1978 goto out;1979 break;···1983 r = -EFAULT;1984 if (copy_from_user(&kvm_run, argp, sizeof kvm_run))1985 goto out;1986+ r = kvm_vm_ioctl_run(kvm, &kvm_run);1987 if (r < 0 && r != -EINTR)1988 goto out;1989 if (copy_to_user(argp, &kvm_run, sizeof kvm_run)) {···1998 r = -EFAULT;1999 if (copy_from_user(&kvm_regs, argp, sizeof kvm_regs))2000 goto out;2001+ r = kvm_vm_ioctl_get_regs(kvm, &kvm_regs);2002 if (r)2003 goto out;2004 r = -EFAULT;···2013 r = -EFAULT;2014 if (copy_from_user(&kvm_regs, argp, sizeof kvm_regs))2015 goto out;2016+ r = kvm_vm_ioctl_set_regs(kvm, &kvm_regs);2017 if (r)2018 goto out;2019 r = 0;···2025 r = -EFAULT;2026 if (copy_from_user(&kvm_sregs, argp, sizeof kvm_sregs))2027 goto out;2028+ r = kvm_vm_ioctl_get_sregs(kvm, &kvm_sregs);2029 if (r)2030 goto out;2031 r = -EFAULT;···2040 r = -EFAULT;2041 if (copy_from_user(&kvm_sregs, argp, sizeof kvm_sregs))2042 goto out;2043+ r = kvm_vm_ioctl_set_sregs(kvm, &kvm_sregs);2044 if (r)2045 goto out;2046 r = 0;···2052 r = -EFAULT;2053 if (copy_from_user(&tr, argp, sizeof tr))2054 goto out;2055+ r = kvm_vm_ioctl_translate(kvm, &tr);2056 if (r)2057 goto out;2058 r = -EFAULT;···2067 r = -EFAULT;2068 if (copy_from_user(&irq, argp, sizeof irq))2069 goto out;2070+ r = kvm_vm_ioctl_interrupt(kvm, &irq);2071 if (r)2072 goto out;2073 r = 0;···2079 r = -EFAULT;2080 if (copy_from_user(&dbg, argp, sizeof dbg))2081 goto out;2082+ r = kvm_vm_ioctl_debug_guest(kvm, &dbg);2083 if (r)2084 goto out;2085 r = 0;···2091 r = -EFAULT;2092 if (copy_from_user(&kvm_mem, argp, sizeof kvm_mem))2093 goto out;2094+ r = kvm_vm_ioctl_set_memory_region(kvm, &kvm_mem);2095 if (r)2096 goto out;2097 break;···2102 r = -EFAULT;2103 if (copy_from_user(&log, argp, sizeof log))2104 goto out;2105+ r = kvm_vm_ioctl_get_dirty_log(kvm, &log);2106 if (r)2107 goto out;2108 break;