diff options
| author | Joerg Roedel <joerg.roedel@amd.com> | 2010-05-11 11:40:57 -0400 |
|---|---|---|
| committer | Joerg Roedel <joerg.roedel@amd.com> | 2010-05-11 11:40:57 -0400 |
| commit | 795e74f7a69f9c08afa4fa7c86cc4f18a62bd630 (patch) | |
| tree | 8448ece35101d8db945c49df50d0d5889687de9f /drivers/base/iommu.c | |
| parent | a52357259680fe5368c2fabf5949209e231f2aa2 (diff) | |
| parent | 12c7389abe5786349d3ea6da1961cf78d0c1c7cd (diff) | |
Merge branch 'iommu/largepages' into amd-iommu/2.6.35
Conflicts:
arch/x86/kernel/amd_iommu.c
Diffstat (limited to 'drivers/base/iommu.c')
| -rw-r--r-- | drivers/base/iommu.c | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/drivers/base/iommu.c b/drivers/base/iommu.c index 8ad4ffea6920..6e6b6a11b3ce 100644 --- a/drivers/base/iommu.c +++ b/drivers/base/iommu.c | |||
| @@ -80,20 +80,6 @@ void iommu_detach_device(struct iommu_domain *domain, struct device *dev) | |||
| 80 | } | 80 | } |
| 81 | EXPORT_SYMBOL_GPL(iommu_detach_device); | 81 | EXPORT_SYMBOL_GPL(iommu_detach_device); |
| 82 | 82 | ||
| 83 | int iommu_map_range(struct iommu_domain *domain, unsigned long iova, | ||
| 84 | phys_addr_t paddr, size_t size, int prot) | ||
| 85 | { | ||
| 86 | return iommu_ops->map(domain, iova, paddr, size, prot); | ||
| 87 | } | ||
| 88 | EXPORT_SYMBOL_GPL(iommu_map_range); | ||
| 89 | |||
| 90 | void iommu_unmap_range(struct iommu_domain *domain, unsigned long iova, | ||
| 91 | size_t size) | ||
| 92 | { | ||
| 93 | iommu_ops->unmap(domain, iova, size); | ||
| 94 | } | ||
| 95 | EXPORT_SYMBOL_GPL(iommu_unmap_range); | ||
| 96 | |||
| 97 | phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, | 83 | phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, |
| 98 | unsigned long iova) | 84 | unsigned long iova) |
| 99 | { | 85 | { |
| @@ -107,3 +93,32 @@ int iommu_domain_has_cap(struct iommu_domain *domain, | |||
| 107 | return iommu_ops->domain_has_cap(domain, cap); | 93 | return iommu_ops->domain_has_cap(domain, cap); |
| 108 | } | 94 | } |
| 109 | EXPORT_SYMBOL_GPL(iommu_domain_has_cap); | 95 | EXPORT_SYMBOL_GPL(iommu_domain_has_cap); |
| 96 | |||
| 97 | int iommu_map(struct iommu_domain *domain, unsigned long iova, | ||
| 98 | phys_addr_t paddr, int gfp_order, int prot) | ||
| 99 | { | ||
| 100 | unsigned long invalid_mask; | ||
| 101 | size_t size; | ||
| 102 | |||
| 103 | size = 0x1000UL << gfp_order; | ||
| 104 | invalid_mask = size - 1; | ||
| 105 | |||
| 106 | BUG_ON((iova | paddr) & invalid_mask); | ||
| 107 | |||
| 108 | return iommu_ops->map(domain, iova, paddr, gfp_order, prot); | ||
| 109 | } | ||
| 110 | EXPORT_SYMBOL_GPL(iommu_map); | ||
| 111 | |||
| 112 | int iommu_unmap(struct iommu_domain *domain, unsigned long iova, int gfp_order) | ||
| 113 | { | ||
| 114 | unsigned long invalid_mask; | ||
| 115 | size_t size; | ||
| 116 | |||
| 117 | size = 0x1000UL << gfp_order; | ||
| 118 | invalid_mask = size - 1; | ||
| 119 | |||
| 120 | BUG_ON(iova & invalid_mask); | ||
| 121 | |||
| 122 | return iommu_ops->unmap(domain, iova, gfp_order); | ||
| 123 | } | ||
| 124 | EXPORT_SYMBOL_GPL(iommu_unmap); | ||
