diff options
author | Alex Williamson <alex.williamson@redhat.com> | 2013-10-30 11:02:30 -0600 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2013-10-30 19:02:23 +0100 |
commit | e0f0bbc527f6e9c0261f1d16b2a0b47612b7f235 (patch) | |
tree | 623b954e7571767c4d5f0581ad8ba6eacd48785d /include/linux/kvm_host.h | |
parent | d96eb2c6f480769bff32054e78b964860dae4d56 (diff) | |
download | linux-stable-e0f0bbc527f6e9c0261f1d16b2a0b47612b7f235.tar.gz linux-stable-e0f0bbc527f6e9c0261f1d16b2a0b47612b7f235.tar.bz2 linux-stable-e0f0bbc527f6e9c0261f1d16b2a0b47612b7f235.zip |
kvm: Create non-coherent DMA registeration
We currently use some ad-hoc arch variables tied to legacy KVM device
assignment to manage emulation of instructions that depend on whether
non-coherent DMA is present. Create an interface for this, adapting
legacy KVM device assignment and adding VFIO via the KVM-VFIO device.
For now we assume that non-coherent DMA is possible any time we have a
VFIO group. Eventually an interface can be developed as part of the
VFIO external user interface to query the coherency of a group.
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include/linux/kvm_host.h')
-rw-r--r-- | include/linux/kvm_host.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index ed64880e4915..92aae88756db 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -670,6 +670,25 @@ static inline void kvm_arch_free_vm(struct kvm *kvm) } #endif +#ifdef __KVM_HAVE_ARCH_NONCOHERENT_DMA +void kvm_arch_register_noncoherent_dma(struct kvm *kvm); +void kvm_arch_unregister_noncoherent_dma(struct kvm *kvm); +bool kvm_arch_has_noncoherent_dma(struct kvm *kvm); +#else +static inline void kvm_arch_register_noncoherent_dma(struct kvm *kvm) +{ +} + +static inline void kvm_arch_unregister_noncoherent_dma(struct kvm *kvm) +{ +} + +static inline bool kvm_arch_has_noncoherent_dma(struct kvm *kvm) +{ + return false; +} +#endif + static inline wait_queue_head_t *kvm_arch_vcpu_wq(struct kvm_vcpu *vcpu) { #ifdef __KVM_HAVE_ARCH_WQP |