Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 836a8ac9 authored by Thierry Reding's avatar Thierry Reding Committed by Joerg Roedel
Browse files

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: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 471d9144
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -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;
@@ -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;
}