2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-16 17:23:55 +08:00

iommu/amd: Implement apply_dm_region call-back

It is used to reserve the dm-regions in the iova-tree.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
Joerg Roedel 2016-07-05 13:32:20 +02:00
parent 81cd07b9c9
commit 8d54d6c8b8

View File

@ -3385,6 +3385,20 @@ static void amd_iommu_put_dm_regions(struct device *dev,
kfree(entry); kfree(entry);
} }
static void amd_iommu_apply_dm_region(struct device *dev,
struct iommu_domain *domain,
struct iommu_dm_region *region)
{
struct protection_domain *pdomain = to_pdomain(domain);
struct dma_ops_domain *dma_dom = pdomain->priv;
unsigned long start, end;
start = IOVA_PFN(region->start);
end = IOVA_PFN(region->start + region->length);
WARN_ON_ONCE(reserve_iova(&dma_dom->iovad, start, end) == NULL);
}
static const struct iommu_ops amd_iommu_ops = { static const struct iommu_ops amd_iommu_ops = {
.capable = amd_iommu_capable, .capable = amd_iommu_capable,
.domain_alloc = amd_iommu_domain_alloc, .domain_alloc = amd_iommu_domain_alloc,
@ -3400,6 +3414,7 @@ static const struct iommu_ops amd_iommu_ops = {
.device_group = amd_iommu_device_group, .device_group = amd_iommu_device_group,
.get_dm_regions = amd_iommu_get_dm_regions, .get_dm_regions = amd_iommu_get_dm_regions,
.put_dm_regions = amd_iommu_put_dm_regions, .put_dm_regions = amd_iommu_put_dm_regions,
.apply_dm_region = amd_iommu_apply_dm_region,
.pgsize_bitmap = AMD_IOMMU_PGSIZES, .pgsize_bitmap = AMD_IOMMU_PGSIZES,
}; };