Path: csiph.com!news.mixmin.net!aioe.org!gothmog.csi.it!bofh.it!news.nic.it!robomod From: Joerg Roedel Newsgroups: linux.kernel Subject: [PATCH 05/20] iommu/amd: Implement apply_dm_region call-back Date: Fri, 08 Jul 2016 13:50:01 +0200 Message-ID: References: X-Original-To: iommu@lists.linux-foundation.org Dkim-Signature: v=1; a=rsa-sha256; c=simple/simple; d=8bytes.org; s=mail-1; t=1467978324; bh=2dllm+f4X5ND93jdKWwrSN3RLuHhEuRrqFqg96mQypw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GUaqBrsV2ltpbtSRKxy3C4yGLbH6w4y+C2jJwW0WgxITYoldh/6b5srHg+Ex/XWez m+0MaF5HB5eYfbKjNYWyj4m4PqTqUsTZRg26bi66gXkKLM0HmQADxsunMNpEvCkDXW Ml14kXX/by6mO1KFMWEjj81Eg+1oFqdRVn6OML33Zr6G31DbT0ueTGcaWxf86HbGBA KPfD53pgFu1NjrJwEeFbxYnyrgR4jPsbew5HnRshletEiMQ/7J/r/dGnKCobbbDx97 CIqXfSyPLUVX1HI9hXcB6D1EwORILkgYvjdHSkA1P1DMscEdt5/pk8FWhEOvUi0fBN CmbCXp5cweZRw== X-Mailer: git-send-email 1.9.1 Sender: robomod@news.nic.it List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Approved: robomod@news.nic.it Lines: 44 Organization: linux.* mail to news gateway X-Original-Cc: linux-kernel@vger.kernel.org, Suravee Suthikulpanit , Vincent.Wan@amd.com, Joerg Roedel X-Original-Date: Fri, 8 Jul 2016 13:44:56 +0200 X-Original-Message-ID: <1467978311-28322-6-git-send-email-joro@8bytes.org> X-Original-References: <1467978311-28322-1-git-send-email-joro@8bytes.org> X-Original-Sender: linux-kernel-owner@vger.kernel.org Xref: csiph.com linux.kernel:1439344 From: Joerg Roedel It is used to reserve the dm-regions in the iova-tree. Signed-off-by: Joerg Roedel --- drivers/iommu/amd_iommu.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 4b8b9ee..5ea5679 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -3379,6 +3379,20 @@ static void amd_iommu_put_dm_regions(struct device *dev, 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 = { .capable = amd_iommu_capable, .domain_alloc = amd_iommu_domain_alloc, @@ -3394,6 +3408,7 @@ static const struct iommu_ops amd_iommu_ops = { .device_group = amd_iommu_device_group, .get_dm_regions = amd_iommu_get_dm_regions, .put_dm_regions = amd_iommu_put_dm_regions, + .apply_dm_region = amd_iommu_apply_dm_region, .pgsize_bitmap = AMD_IOMMU_PGSIZES, }; -- 1.9.1