mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-26 08:31:13 +00:00
powerpc/vfio_spapr_tce: Add reference counting to iommu_table
So far iommu_table obejcts were only used in virtual mode and had a single owner. We are going to change this by implementing in-kernel acceleration of DMA mapping requests. The proposed acceleration will handle requests in real mode and KVM will keep references to tables. This adds a kref to iommu_table and defines new helpers to update it. This replaces iommu_free_table() with iommu_tce_table_put() and makes iommu_free_table() static. iommu_tce_table_get() is not used in this patch but it will be in the following patch. Since this touches prototypes, this also removes @node_name parameter as it has never been really useful on powernv and carrying it for the pseries platform code to iommu_free_table() seems to be quite useless as well. This should cause no behavioral change. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Acked-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
11edf116e3
commit
e5afdf9dd5
7 changed files with 37 additions and 17 deletions
|
@ -119,6 +119,7 @@ struct iommu_table {
|
|||
struct list_head it_group_list;/* List of iommu_table_group_link */
|
||||
unsigned long *it_userspace; /* userspace view of the table */
|
||||
struct iommu_table_ops *it_ops;
|
||||
struct kref it_kref;
|
||||
};
|
||||
|
||||
#define IOMMU_TABLE_USERSPACE_ENTRY(tbl, entry) \
|
||||
|
@ -151,8 +152,8 @@ static inline void *get_iommu_table_base(struct device *dev)
|
|||
|
||||
extern int dma_iommu_dma_supported(struct device *dev, u64 mask);
|
||||
|
||||
/* Frees table for an individual device node */
|
||||
extern void iommu_free_table(struct iommu_table *tbl, const char *node_name);
|
||||
extern struct iommu_table *iommu_tce_table_get(struct iommu_table *tbl);
|
||||
extern int iommu_tce_table_put(struct iommu_table *tbl);
|
||||
|
||||
/* Initializes an iommu_table based in values set in the passed-in
|
||||
* structure
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue