diff options
| author | Alexey Kardashevskiy | 2018-02-06 19:08:24 +0100 |
|---|---|---|
| committer | Alex Williamson | 2018-02-06 19:08:24 +0100 |
| commit | 9ded780c4cc92d15a977dba589d64862e25a340e (patch) | |
| tree | 64a081469be91b7bacadf05e97d6766885e7a44e /target/ppc/kvm_ppc.h | |
| parent | vfio/spapr: Use iommu memory region's get_attr() (diff) | |
| download | qemu-9ded780c4cc92d15a977dba589d64862e25a340e.tar.gz qemu-9ded780c4cc92d15a977dba589d64862e25a340e.tar.xz qemu-9ded780c4cc92d15a977dba589d64862e25a340e.zip | |
spapr/iommu: Enable in-kernel TCE acceleration via VFIO KVM device
In order to enable TCE operations support in KVM, we have to inform
the KVM about VFIO groups being attached to specific LIOBNs;
the necessary bits are implemented already by IOMMU MR and VFIO.
This defines get_attr() for the SPAPR TCE IOMMU MR which makes VFIO
call the KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE ioctl and establish
LIOBN-to-IOMMU link.
This changes spapr_tce_set_need_vfio() to avoid TCE table reallocation
if the kernel supports the TCE acceleration.
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
[aw - remove unnecessary sys/ioctl.h include]
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Diffstat (limited to 'target/ppc/kvm_ppc.h')
| -rw-r--r-- | target/ppc/kvm_ppc.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h index 39830baa77..4d2789eef6 100644 --- a/target/ppc/kvm_ppc.h +++ b/target/ppc/kvm_ppc.h @@ -46,6 +46,7 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t page_shift, int kvmppc_remove_spapr_tce(void *table, int pfd, uint32_t window_size); int kvmppc_reset_htab(int shift_hint); uint64_t kvmppc_rma_size(uint64_t current_size, unsigned int hash_shift); +bool kvmppc_has_cap_spapr_vfio(void); #endif /* !CONFIG_USER_ONLY */ bool kvmppc_has_cap_epr(void); int kvmppc_define_rtas_kernel_token(uint32_t token, const char *function); @@ -232,6 +233,11 @@ static inline bool kvmppc_is_mem_backend_page_size_ok(const char *obj_path) return true; } +static inline bool kvmppc_has_cap_spapr_vfio(void) +{ + return false; +} + #endif /* !CONFIG_USER_ONLY */ static inline bool kvmppc_has_cap_epr(void) |
