Loading arch/x86/kernel/amd_iommu.c +28 −29 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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 /* Loading Loading @@ -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 Loading Loading
arch/x86/kernel/amd_iommu.c +28 −29 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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 /* Loading Loading @@ -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 Loading