kvm: x86: move assigned-dev.c and iommu.c to arch/x86/
Now that ia64 is gone, we can hide deprecated device assignment in x86. Notable changes: - kvm_vm_ioctl_assigned_device() was moved to x86/kvm_arch_vm_ioctl() The easy parts were removed from generic kvm code, remaining - kvm_iommu_(un)map_pages() would require new code to be moved - struct kvm_assigned_dev_kernel depends on struct kvm_irq_ack_notifier Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Родитель
6b397158d0
Коммит
c274e03af7
|
@ -1112,4 +1112,27 @@ int kvm_pmu_read_pmc(struct kvm_vcpu *vcpu, unsigned pmc, u64 *data);
|
||||||
void kvm_handle_pmu_event(struct kvm_vcpu *vcpu);
|
void kvm_handle_pmu_event(struct kvm_vcpu *vcpu);
|
||||||
void kvm_deliver_pmi(struct kvm_vcpu *vcpu);
|
void kvm_deliver_pmi(struct kvm_vcpu *vcpu);
|
||||||
|
|
||||||
|
#ifdef CONFIG_KVM_DEVICE_ASSIGNMENT
|
||||||
|
int kvm_iommu_map_guest(struct kvm *kvm);
|
||||||
|
int kvm_iommu_unmap_guest(struct kvm *kvm);
|
||||||
|
|
||||||
|
long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
|
||||||
|
unsigned long arg);
|
||||||
|
|
||||||
|
void kvm_free_all_assigned_devices(struct kvm *kvm);
|
||||||
|
#else
|
||||||
|
static inline int kvm_iommu_unmap_guest(struct kvm *kvm)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
|
||||||
|
unsigned long arg)
|
||||||
|
{
|
||||||
|
return -ENOTTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void kvm_free_all_assigned_devices(struct kvm *kvm) {}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _ASM_X86_KVM_HOST_H */
|
#endif /* _ASM_X86_KVM_HOST_H */
|
||||||
|
|
|
@ -9,11 +9,11 @@ KVM := ../../../virt/kvm
|
||||||
|
|
||||||
kvm-y += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o \
|
kvm-y += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o \
|
||||||
$(KVM)/eventfd.o $(KVM)/irqchip.o $(KVM)/vfio.o
|
$(KVM)/eventfd.o $(KVM)/irqchip.o $(KVM)/vfio.o
|
||||||
kvm-$(CONFIG_KVM_DEVICE_ASSIGNMENT) += $(KVM)/assigned-dev.o $(KVM)/iommu.o
|
|
||||||
kvm-$(CONFIG_KVM_ASYNC_PF) += $(KVM)/async_pf.o
|
kvm-$(CONFIG_KVM_ASYNC_PF) += $(KVM)/async_pf.o
|
||||||
|
|
||||||
kvm-y += x86.o mmu.o emulate.o i8259.o irq.o lapic.o \
|
kvm-y += x86.o mmu.o emulate.o i8259.o irq.o lapic.o \
|
||||||
i8254.o ioapic.o irq_comm.o cpuid.o pmu.o
|
i8254.o ioapic.o irq_comm.o cpuid.o pmu.o
|
||||||
|
kvm-$(CONFIG_KVM_DEVICE_ASSIGNMENT) += assigned-dev.o iommu.o
|
||||||
kvm-intel-y += vmx.o
|
kvm-intel-y += vmx.o
|
||||||
kvm-amd-y += svm.o
|
kvm-amd-y += svm.o
|
||||||
|
|
||||||
|
|
|
@ -4007,7 +4007,7 @@ long kvm_arch_vm_ioctl(struct file *filp,
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
;
|
r = kvm_vm_ioctl_assigned_device(kvm, ioctl, arg);
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
return r;
|
return r;
|
||||||
|
|
|
@ -764,8 +764,6 @@ void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id);
|
||||||
#ifdef CONFIG_KVM_DEVICE_ASSIGNMENT
|
#ifdef CONFIG_KVM_DEVICE_ASSIGNMENT
|
||||||
int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
|
int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
|
||||||
void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
|
void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
|
||||||
int kvm_iommu_map_guest(struct kvm *kvm);
|
|
||||||
int kvm_iommu_unmap_guest(struct kvm *kvm);
|
|
||||||
int kvm_assign_device(struct kvm *kvm,
|
int kvm_assign_device(struct kvm *kvm,
|
||||||
struct kvm_assigned_dev_kernel *assigned_dev);
|
struct kvm_assigned_dev_kernel *assigned_dev);
|
||||||
int kvm_deassign_device(struct kvm *kvm,
|
int kvm_deassign_device(struct kvm *kvm,
|
||||||
|
@ -781,11 +779,6 @@ static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
|
||||||
struct kvm_memory_slot *slot)
|
struct kvm_memory_slot *slot)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int kvm_iommu_unmap_guest(struct kvm *kvm)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline void kvm_guest_enter(void)
|
static inline void kvm_guest_enter(void)
|
||||||
|
@ -1005,25 +998,6 @@ static inline bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) { return true; }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_DEVICE_ASSIGNMENT
|
|
||||||
|
|
||||||
long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
|
|
||||||
unsigned long arg);
|
|
||||||
|
|
||||||
void kvm_free_all_assigned_devices(struct kvm *kvm);
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
static inline long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
|
|
||||||
unsigned long arg)
|
|
||||||
{
|
|
||||||
return -ENOTTY;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void kvm_free_all_assigned_devices(struct kvm *kvm) {}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu)
|
static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
set_bit(req, &vcpu->requests);
|
set_bit(req, &vcpu->requests);
|
||||||
|
|
|
@ -2582,8 +2582,6 @@ static long kvm_vm_ioctl(struct file *filp,
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
r = kvm_arch_vm_ioctl(filp, ioctl, arg);
|
r = kvm_arch_vm_ioctl(filp, ioctl, arg);
|
||||||
if (r == -ENOTTY)
|
|
||||||
r = kvm_vm_ioctl_assigned_device(kvm, ioctl, arg);
|
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
return r;
|
return r;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче