Skip to content

Commit

Permalink
iommu/tegra: gart: Set aperture at domain initialization time
Browse files Browse the repository at this point in the history
The aperture of the domain should always be available, otherwise drivers
need to attach first before they can use the aperture geometry.

Cc: Hiroshi Doyu <hdoyu@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
  • Loading branch information
Thierry Reding authored and Joerg Roedel committed Mar 31, 2015
1 parent 471d914 commit 836a8ac
Showing 1 changed file with 14 additions and 11 deletions.
25 changes: 14 additions & 11 deletions drivers/iommu/tegra-gart.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,20 +156,10 @@ static inline bool gart_iova_range_valid(struct gart_device *gart,
static int gart_iommu_attach_dev(struct iommu_domain *domain,
struct device *dev)
{
struct gart_device *gart;
struct gart_device *gart = domain->priv;
struct gart_client *client, *c;
int err = 0;

gart = gart_handle;
if (!gart)
return -EINVAL;
domain->priv = gart;

domain->geometry.aperture_start = gart->iovmm_base;
domain->geometry.aperture_end = gart->iovmm_base +
gart->page_count * GART_PAGE_SIZE - 1;
domain->geometry.force_aperture = true;

client = devm_kzalloc(gart->dev, sizeof(*c), GFP_KERNEL);
if (!client)
return -ENOMEM;
Expand Down Expand Up @@ -218,6 +208,19 @@ static void gart_iommu_detach_dev(struct iommu_domain *domain,

static int gart_iommu_domain_init(struct iommu_domain *domain)
{
struct gart_device *gart;

gart = gart_handle;
if (!gart)
return -EINVAL;

domain->priv = gart;

domain->geometry.aperture_start = gart->iovmm_base;
domain->geometry.aperture_end = gart->iovmm_base +
gart->page_count * GART_PAGE_SIZE - 1;
domain->geometry.force_aperture = true;

return 0;
}

Expand Down

0 comments on commit 836a8ac

Please sign in to comment.