iommu/tegra: gart: Set aperture at domain initialization time

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>
This commit is contained in:
Thierry Reding 2015-03-27 11:07:26 +01:00 committed by Joerg Roedel
parent 471d9144b4
commit 836a8ac9fe
1 changed files with 14 additions and 11 deletions

View File

@ -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, static int gart_iommu_attach_dev(struct iommu_domain *domain,
struct device *dev) struct device *dev)
{ {
struct gart_device *gart; struct gart_device *gart = domain->priv;
struct gart_client *client, *c; struct gart_client *client, *c;
int err = 0; 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); client = devm_kzalloc(gart->dev, sizeof(*c), GFP_KERNEL);
if (!client) if (!client)
return -ENOMEM; return -ENOMEM;
@ -218,6 +208,19 @@ out:
static int gart_iommu_domain_init(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; return 0;
} }