mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 00:20:32 +00:00
iommu/ipmmu-vmsa: Drop IOVA cookie management
The core code bakes its own cookies now. Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Robin Murphy <robin.murphy@arm.com> Link: https://lore.kernel.org/r/dc5513293942d81f84edf61b354b236e5ac51dc2.1628682048.git.robin.murphy@arm.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
4a376d4ac1
commit
5d8941824e
1 changed files with 4 additions and 24 deletions
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
#include <linux/bitmap.h>
|
#include <linux/bitmap.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/dma-iommu.h>
|
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
|
@ -564,10 +563,13 @@ static irqreturn_t ipmmu_irq(int irq, void *dev)
|
||||||
* IOMMU Operations
|
* IOMMU Operations
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct iommu_domain *__ipmmu_domain_alloc(unsigned type)
|
static struct iommu_domain *ipmmu_domain_alloc(unsigned type)
|
||||||
{
|
{
|
||||||
struct ipmmu_vmsa_domain *domain;
|
struct ipmmu_vmsa_domain *domain;
|
||||||
|
|
||||||
|
if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_DMA)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
domain = kzalloc(sizeof(*domain), GFP_KERNEL);
|
domain = kzalloc(sizeof(*domain), GFP_KERNEL);
|
||||||
if (!domain)
|
if (!domain)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -577,27 +579,6 @@ static struct iommu_domain *__ipmmu_domain_alloc(unsigned type)
|
||||||
return &domain->io_domain;
|
return &domain->io_domain;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct iommu_domain *ipmmu_domain_alloc(unsigned type)
|
|
||||||
{
|
|
||||||
struct iommu_domain *io_domain = NULL;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case IOMMU_DOMAIN_UNMANAGED:
|
|
||||||
io_domain = __ipmmu_domain_alloc(type);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOMMU_DOMAIN_DMA:
|
|
||||||
io_domain = __ipmmu_domain_alloc(type);
|
|
||||||
if (io_domain && iommu_get_dma_cookie(io_domain)) {
|
|
||||||
kfree(io_domain);
|
|
||||||
io_domain = NULL;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return io_domain;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ipmmu_domain_free(struct iommu_domain *io_domain)
|
static void ipmmu_domain_free(struct iommu_domain *io_domain)
|
||||||
{
|
{
|
||||||
struct ipmmu_vmsa_domain *domain = to_vmsa_domain(io_domain);
|
struct ipmmu_vmsa_domain *domain = to_vmsa_domain(io_domain);
|
||||||
|
@ -606,7 +587,6 @@ static void ipmmu_domain_free(struct iommu_domain *io_domain)
|
||||||
* Free the domain resources. We assume that all devices have already
|
* Free the domain resources. We assume that all devices have already
|
||||||
* been detached.
|
* been detached.
|
||||||
*/
|
*/
|
||||||
iommu_put_dma_cookie(io_domain);
|
|
||||||
ipmmu_domain_destroy_context(domain);
|
ipmmu_domain_destroy_context(domain);
|
||||||
free_io_pgtable_ops(domain->iop);
|
free_io_pgtable_ops(domain->iop);
|
||||||
kfree(domain);
|
kfree(domain);
|
||||||
|
|
Loading…
Reference in a new issue