diff options
| -rw-r--r-- | arch/x86/include/asm/kvm_host.h | 23 | ||||
| -rw-r--r-- | arch/x86/kvm/Makefile | 2 | ||||
| -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.c | 2 | ||||
| -rw-r--r-- | include/linux/kvm_host.h | 26 | ||||
| -rw-r--r-- | virt/kvm/kvm_main.c | 2 |
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); | |||
| 1112 | void kvm_handle_pmu_event(struct kvm_vcpu *vcpu); | 1112 | void kvm_handle_pmu_event(struct kvm_vcpu *vcpu); |
| 1113 | void kvm_deliver_pmi(struct kvm_vcpu *vcpu); | 1113 | void kvm_deliver_pmi(struct kvm_vcpu *vcpu); |
| 1114 | 1114 | ||
| 1115 | #ifdef CONFIG_KVM_DEVICE_ASSIGNMENT | ||
| 1116 | int kvm_iommu_map_guest(struct kvm *kvm); | ||
| 1117 | int kvm_iommu_unmap_guest(struct kvm *kvm); | ||
| 1118 | |||
| 1119 | long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl, | ||
| 1120 | unsigned long arg); | ||
| 1121 | |||
| 1122 | void kvm_free_all_assigned_devices(struct kvm *kvm); | ||
| 1123 | #else | ||
| 1124 | static inline int kvm_iommu_unmap_guest(struct kvm *kvm) | ||
| 1125 | { | ||
| 1126 | return 0; | ||
| 1127 | } | ||
| 1128 | |||
| 1129 | static inline long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl, | ||
| 1130 | unsigned long arg) | ||
| 1131 | { | ||
| 1132 | return -ENOTTY; | ||
| 1133 | } | ||
| 1134 | |||
| 1135 | static 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 | ||
| 10 | kvm-y += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o \ | 10 | kvm-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 |
| 12 | kvm-$(CONFIG_KVM_DEVICE_ASSIGNMENT) += $(KVM)/assigned-dev.o $(KVM)/iommu.o | ||
| 13 | kvm-$(CONFIG_KVM_ASYNC_PF) += $(KVM)/async_pf.o | 12 | kvm-$(CONFIG_KVM_ASYNC_PF) += $(KVM)/async_pf.o |
| 14 | 13 | ||
| 15 | kvm-y += x86.o mmu.o emulate.o i8259.o irq.o lapic.o \ | 14 | kvm-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 |
| 16 | kvm-$(CONFIG_KVM_DEVICE_ASSIGNMENT) += assigned-dev.o iommu.o | ||
| 17 | kvm-intel-y += vmx.o | 17 | kvm-intel-y += vmx.o |
| 18 | kvm-amd-y += svm.o | 18 | kvm-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 | } |
| 4012 | out: | 4012 | out: |
| 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 |
| 765 | int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot); | 765 | int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot); |
| 766 | void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot); | 766 | void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot); |
| 767 | int kvm_iommu_map_guest(struct kvm *kvm); | ||
| 768 | int kvm_iommu_unmap_guest(struct kvm *kvm); | ||
| 769 | int kvm_assign_device(struct kvm *kvm, | 767 | int kvm_assign_device(struct kvm *kvm, |
| 770 | struct kvm_assigned_dev_kernel *assigned_dev); | 768 | struct kvm_assigned_dev_kernel *assigned_dev); |
| 771 | int kvm_deassign_device(struct kvm *kvm, | 769 | int 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 | |||
| 785 | static inline int kvm_iommu_unmap_guest(struct kvm *kvm) | ||
| 786 | { | ||
| 787 | return 0; | ||
| 788 | } | ||
| 789 | #endif | 782 | #endif |
| 790 | 783 | ||
| 791 | static inline void kvm_guest_enter(void) | 784 | static 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 | |||
| 1010 | long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl, | ||
| 1011 | unsigned long arg); | ||
| 1012 | |||
| 1013 | void kvm_free_all_assigned_devices(struct kvm *kvm); | ||
| 1014 | |||
| 1015 | #else | ||
| 1016 | |||
| 1017 | static inline long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl, | ||
| 1018 | unsigned long arg) | ||
| 1019 | { | ||
| 1020 | return -ENOTTY; | ||
| 1021 | } | ||
| 1022 | |||
| 1023 | static inline void kvm_free_all_assigned_devices(struct kvm *kvm) {} | ||
| 1024 | |||
| 1025 | #endif | ||
| 1026 | |||
| 1027 | static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu) | 1001 | static 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 | } |
| 2588 | out: | 2586 | out: |
| 2589 | return r; | 2587 | return r; |
