diff options
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r-- | arch/x86/kvm/x86.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index c7ec0c921c01..f4cb1baaa04b 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -1206,6 +1206,7 @@ int kvm_dev_ioctl_check_extension(long ext) | |||
1206 | case KVM_CAP_IOEVENTFD: | 1206 | case KVM_CAP_IOEVENTFD: |
1207 | case KVM_CAP_PIT2: | 1207 | case KVM_CAP_PIT2: |
1208 | case KVM_CAP_PIT_STATE2: | 1208 | case KVM_CAP_PIT_STATE2: |
1209 | case KVM_CAP_SET_IDENTITY_MAP_ADDR: | ||
1209 | r = 1; | 1210 | r = 1; |
1210 | break; | 1211 | break; |
1211 | case KVM_CAP_COALESCED_MMIO: | 1212 | case KVM_CAP_COALESCED_MMIO: |
@@ -1906,6 +1907,13 @@ static int kvm_vm_ioctl_set_tss_addr(struct kvm *kvm, unsigned long addr) | |||
1906 | return ret; | 1907 | return ret; |
1907 | } | 1908 | } |
1908 | 1909 | ||
1910 | static int kvm_vm_ioctl_set_identity_map_addr(struct kvm *kvm, | ||
1911 | u64 ident_addr) | ||
1912 | { | ||
1913 | kvm->arch.ept_identity_map_addr = ident_addr; | ||
1914 | return 0; | ||
1915 | } | ||
1916 | |||
1909 | static int kvm_vm_ioctl_set_nr_mmu_pages(struct kvm *kvm, | 1917 | static int kvm_vm_ioctl_set_nr_mmu_pages(struct kvm *kvm, |
1910 | u32 kvm_nr_mmu_pages) | 1918 | u32 kvm_nr_mmu_pages) |
1911 | { | 1919 | { |
@@ -2173,6 +2181,17 @@ long kvm_arch_vm_ioctl(struct file *filp, | |||
2173 | if (r < 0) | 2181 | if (r < 0) |
2174 | goto out; | 2182 | goto out; |
2175 | break; | 2183 | break; |
2184 | case KVM_SET_IDENTITY_MAP_ADDR: { | ||
2185 | u64 ident_addr; | ||
2186 | |||
2187 | r = -EFAULT; | ||
2188 | if (copy_from_user(&ident_addr, argp, sizeof ident_addr)) | ||
2189 | goto out; | ||
2190 | r = kvm_vm_ioctl_set_identity_map_addr(kvm, ident_addr); | ||
2191 | if (r < 0) | ||
2192 | goto out; | ||
2193 | break; | ||
2194 | } | ||
2176 | case KVM_SET_MEMORY_REGION: { | 2195 | case KVM_SET_MEMORY_REGION: { |
2177 | struct kvm_memory_region kvm_mem; | 2196 | struct kvm_memory_region kvm_mem; |
2178 | struct kvm_userspace_memory_region kvm_userspace_mem; | 2197 | struct kvm_userspace_memory_region kvm_userspace_mem; |