Commit 71c70984 authored by Joerg Roedel's avatar Joerg Roedel

x86/amd-iommu: Move find_protection_domain to helper functions

This is a helper function and when its placed in the helper
function section we can remove its forward declaration.
Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
parent 94f6d190
...@@ -59,7 +59,6 @@ struct iommu_cmd { ...@@ -59,7 +59,6 @@ struct iommu_cmd {
static int dma_ops_unity_map(struct dma_ops_domain *dma_dom, static int dma_ops_unity_map(struct dma_ops_domain *dma_dom,
struct unity_map_entry *e); struct unity_map_entry *e);
static struct dma_ops_domain *find_protection_domain(u16 devid);
static u64 *alloc_pte(struct protection_domain *domain, static u64 *alloc_pte(struct protection_domain *domain,
unsigned long address, int end_lvl, unsigned long address, int end_lvl,
u64 **pte_page, gfp_t gfp); u64 **pte_page, gfp_t gfp);
...@@ -84,6 +83,34 @@ static inline u16 get_device_id(struct device *dev) ...@@ -84,6 +83,34 @@ static inline u16 get_device_id(struct device *dev)
return calc_devid(pdev->bus->number, pdev->devfn); return calc_devid(pdev->bus->number, pdev->devfn);
} }
/*
* In this function the list of preallocated protection domains is traversed to
* find the domain for a specific device
*/
static struct dma_ops_domain *find_protection_domain(u16 devid)
{
struct dma_ops_domain *entry, *ret = NULL;
unsigned long flags;
u16 alias = amd_iommu_alias_table[devid];
if (list_empty(&iommu_pd_list))
return NULL;
spin_lock_irqsave(&iommu_pd_list_lock, flags);
list_for_each_entry(entry, &iommu_pd_list, list) {
if (entry->target_dev == devid ||
entry->target_dev == alias) {
ret = entry;
break;
}
}
spin_unlock_irqrestore(&iommu_pd_list_lock, flags);
return ret;
}
#ifdef CONFIG_AMD_IOMMU_STATS #ifdef CONFIG_AMD_IOMMU_STATS
/* /*
...@@ -1455,34 +1482,6 @@ static bool check_device(struct device *dev) ...@@ -1455,34 +1482,6 @@ static bool check_device(struct device *dev)
return true; return true;
} }
/*
* In this function the list of preallocated protection domains is traversed to
* find the domain for a specific device
*/
static struct dma_ops_domain *find_protection_domain(u16 devid)
{
struct dma_ops_domain *entry, *ret = NULL;
unsigned long flags;
u16 alias = amd_iommu_alias_table[devid];
if (list_empty(&iommu_pd_list))
return NULL;
spin_lock_irqsave(&iommu_pd_list_lock, flags);
list_for_each_entry(entry, &iommu_pd_list, list) {
if (entry->target_dev == devid ||
entry->target_dev == alias) {
ret = entry;
break;
}
}
spin_unlock_irqrestore(&iommu_pd_list_lock, flags);
return ret;
}
/* /*
* In the dma_ops path we only have the struct device. This function * In the dma_ops path we only have the struct device. This function
* finds the corresponding IOMMU, the protection domain and the * finds the corresponding IOMMU, the protection domain and the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment