Skip to content

Commit

Permalink
x86/amd-iommu: Move find_protection_domain to helper functions
Browse files Browse the repository at this point in the history
This is a helper function and when its placed in the helper
function section we can remove its forward declaration.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
  • Loading branch information
Joerg Roedel committed Nov 27, 2009
1 parent 94f6d19 commit 71c7098
Showing 1 changed file with 28 additions and 29 deletions.
57 changes: 28 additions & 29 deletions arch/x86/kernel/amd_iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ struct iommu_cmd {

static int dma_ops_unity_map(struct dma_ops_domain *dma_dom,
struct unity_map_entry *e);
static struct dma_ops_domain *find_protection_domain(u16 devid);
static u64 *alloc_pte(struct protection_domain *domain,
unsigned long address, int end_lvl,
u64 **pte_page, gfp_t gfp);
Expand All @@ -84,6 +83,34 @@ static inline u16 get_device_id(struct device *dev)
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

/*
Expand Down Expand Up @@ -1455,34 +1482,6 @@ static bool check_device(struct device *dev)
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
* finds the corresponding IOMMU, the protection domain and the
Expand Down

0 comments on commit 71c7098

Please sign in to comment.