aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/kvm_host.h23
-rw-r--r--arch/x86/kvm/Makefile2
-rw-r--r--arch/x86/kvm/assigned-dev.c (renamed from virt/kvm/assigned-dev.c)0
-rw-r--r--arch/x86/kvm/iommu.c (renamed from virt/kvm/iommu.c)0
-rw-r--r--arch/x86/kvm/x86.c2
-rw-r--r--include/linux/kvm_host.h26
-rw-r--r--virt/kvm/kvm_main.c2
7 files changed, 25 insertions, 30 deletions
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 76ff3e2d8fd2..d549cf8bfb69 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1112,4 +1112,27 @@ int kvm_pmu_read_pmc(struct kvm_vcpu *vcpu, unsigned pmc, u64 *data);
1112void kvm_handle_pmu_event(struct kvm_vcpu *vcpu); 1112void kvm_handle_pmu_event(struct kvm_vcpu *vcpu);
1113void kvm_deliver_pmi(struct kvm_vcpu *vcpu); 1113void kvm_deliver_pmi(struct kvm_vcpu *vcpu);
1114 1114
1115#ifdef CONFIG_KVM_DEVICE_ASSIGNMENT
1116int kvm_iommu_map_guest(struct kvm *kvm);
1117int kvm_iommu_unmap_guest(struct kvm *kvm);
1118
1119long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
1120 unsigned long arg);
1121
1122void kvm_free_all_assigned_devices(struct kvm *kvm);
1123#else
1124static inline int kvm_iommu_unmap_guest(struct kvm *kvm)
1125{
1126 return 0;
1127}
1128
1129static inline long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
1130 unsigned long arg)
1131{
1132 return -ENOTTY;
1133}
1134
1135static inline void kvm_free_all_assigned_devices(struct kvm *kvm) {}
1136#endif
1137
1115#endif /* _ASM_X86_KVM_HOST_H */ 1138#endif /* _ASM_X86_KVM_HOST_H */
diff --git a/arch/x86/kvm/Makefile b/arch/x86/kvm/Makefile
index ee1cd92b03be..08f790dfadc9 100644
--- a/arch/x86/kvm/Makefile
+++ b/arch/x86/kvm/Makefile
@@ -9,11 +9,11 @@ KVM := ../../../virt/kvm
9 9
10kvm-y += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o \ 10kvm-y += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o \
11 $(KVM)/eventfd.o $(KVM)/irqchip.o $(KVM)/vfio.o 11 $(KVM)/eventfd.o $(KVM)/irqchip.o $(KVM)/vfio.o
12kvm-$(CONFIG_KVM_DEVICE_ASSIGNMENT) += $(KVM)/assigned-dev.o $(KVM)/iommu.o
13kvm-$(CONFIG_KVM_ASYNC_PF) += $(KVM)/async_pf.o 12kvm-$(CONFIG_KVM_ASYNC_PF) += $(KVM)/async_pf.o
14 13
15kvm-y += x86.o mmu.o emulate.o i8259.o irq.o lapic.o \ 14kvm-y += x86.o mmu.o emulate.o i8259.o irq.o lapic.o \
16 i8254.o ioapic.o irq_comm.o cpuid.o pmu.o 15 i8254.o ioapic.o irq_comm.o cpuid.o pmu.o
16kvm-$(CONFIG_KVM_DEVICE_ASSIGNMENT) += assigned-dev.o iommu.o
17kvm-intel-y += vmx.o 17kvm-intel-y += vmx.o
18kvm-amd-y += svm.o 18kvm-amd-y += svm.o
19 19
diff --git a/virt/kvm/assigned-dev.c b/arch/x86/kvm/assigned-dev.c
index e05000e200d2..e05000e200d2 100644
--- a/virt/kvm/assigned-dev.c
+++ b/arch/x86/kvm/assigned-dev.c
diff --git a/virt/kvm/iommu.c b/arch/x86/kvm/iommu.c
index c1e6ae989a43..c1e6ae989a43 100644
--- a/virt/kvm/iommu.c
+++ b/arch/x86/kvm/iommu.c
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 5337039427c8..782e4eaf4561 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -4007,7 +4007,7 @@ long kvm_arch_vm_ioctl(struct file *filp,
4007 } 4007 }
4008 4008
4009 default: 4009 default:
4010 ; 4010 r = kvm_vm_ioctl_assigned_device(kvm, ioctl, arg);
4011 } 4011 }
4012out: 4012out:
4013 return r; 4013 return r;
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index ded64cb3a081..aa56894ce839 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -764,8 +764,6 @@ void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id);
764#ifdef CONFIG_KVM_DEVICE_ASSIGNMENT 764#ifdef CONFIG_KVM_DEVICE_ASSIGNMENT
765int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot); 765int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
766void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot); 766void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
767int kvm_iommu_map_guest(struct kvm *kvm);
768int kvm_iommu_unmap_guest(struct kvm *kvm);
769int kvm_assign_device(struct kvm *kvm, 767int kvm_assign_device(struct kvm *kvm,
770 struct kvm_assigned_dev_kernel *assigned_dev); 768 struct kvm_assigned_dev_kernel *assigned_dev);
771int kvm_deassign_device(struct kvm *kvm, 769int kvm_deassign_device(struct kvm *kvm,
@@ -781,11 +779,6 @@ static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
781 struct kvm_memory_slot *slot) 779 struct kvm_memory_slot *slot)
782{ 780{
783} 781}
784
785static inline int kvm_iommu_unmap_guest(struct kvm *kvm)
786{
787 return 0;
788}
789#endif 782#endif
790 783
791static inline void kvm_guest_enter(void) 784static inline void kvm_guest_enter(void)
@@ -1005,25 +998,6 @@ static inline bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) { return true; }
1005 998
1006#endif 999#endif
1007 1000
1008#ifdef CONFIG_KVM_DEVICE_ASSIGNMENT
1009
1010long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
1011 unsigned long arg);
1012
1013void kvm_free_all_assigned_devices(struct kvm *kvm);
1014
1015#else
1016
1017static inline long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
1018 unsigned long arg)
1019{
1020 return -ENOTTY;
1021}
1022
1023static inline void kvm_free_all_assigned_devices(struct kvm *kvm) {}
1024
1025#endif
1026
1027static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu) 1001static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu)
1028{ 1002{
1029 set_bit(req, &vcpu->requests); 1003 set_bit(req, &vcpu->requests);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 3be43424818b..5b4533079eaa 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -2582,8 +2582,6 @@ static long kvm_vm_ioctl(struct file *filp,
2582 break; 2582 break;
2583 default: 2583 default:
2584 r = kvm_arch_vm_ioctl(filp, ioctl, arg); 2584 r = kvm_arch_vm_ioctl(filp, ioctl, arg);
2585 if (r == -ENOTTY)
2586 r = kvm_vm_ioctl_assigned_device(kvm, ioctl, arg);
2587 } 2585 }
2588out: 2586out:
2589 return r; 2587 return r;