[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200106215750.GA4341@jcrouse1-lnx.qualcomm.com>
Date: Mon, 6 Jan 2020 14:57:51 -0700
From: Jordan Crouse <jcrouse@...eaurora.org>
To: smasetty@...eaurora.org
Cc: iommu@...ts.linux-foundation.org, freedreno@...ts.freedesktop.org,
David Airlie <airlied@...ux.ie>, will@...nel.org,
robin.murphy@....com, dri-devel@...ts.freedesktop.org,
linux-kernel@...r.kernel.org, linux-arm-msm@...r.kernel.org,
Sean Paul <sean@...rly.run>,
linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH v3 5/5] drm/msm/a6xx: Support split pagetables
On Tue, Dec 24, 2019 at 08:27:28AM +0530, smasetty@...eaurora.org wrote:
> On 2019-12-16 22:07, Jordan Crouse wrote:
> >Attempt to enable split pagetables if the arm-smmu driver supports it.
> >This will move the default address space from the default region to
> >the address range assigned to TTBR1. The behavior should be transparent
> >to the driver for now but it gets the default buffers out of the way
> >when we want to start swapping TTBR0 for context-specific pagetables.
> >
> >Signed-off-by: Jordan Crouse <jcrouse@...eaurora.org>
> >---
> >
> > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 52
> >++++++++++++++++++++++++++++++++++-
> > 1 file changed, 51 insertions(+), 1 deletion(-)
> >
> >diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
> >b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
> >index 5dc0b2c..1c6da93 100644
> >--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
> >+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
> >@@ -811,6 +811,56 @@ static unsigned long a6xx_gpu_busy(struct msm_gpu
> >*gpu)
> > return (unsigned long)busy_time;
> > }
> >
> >+static struct msm_gem_address_space *
> >+a6xx_create_address_space(struct msm_gpu *gpu, struct platform_device
> >*pdev)
> >+{
> >+ struct iommu_domain *iommu = iommu_domain_alloc(&platform_bus_type);
> >+ struct msm_gem_address_space *aspace;
> >+ struct msm_mmu *mmu;
> >+ u64 start, size;
> >+ u32 val = 1;
> >+ int ret;
> >+
> >+ if (!iommu)
> >+ return ERR_PTR(-ENOMEM);
> >+
> >+ /*
> >+ * Try to request split pagetables - the request has to be made before
> >+ * the domian is attached
> >+ */
> >+ iommu_domain_set_attr(iommu, DOMAIN_ATTR_SPLIT_TABLES, &val);
> >+
> >+ mmu = msm_iommu_new(&pdev->dev, iommu);
> >+ if (IS_ERR(mmu)) {
> >+ iommu_domain_free(iommu);
> >+ return ERR_CAST(mmu);
> >+ }
> >+
> >+ /*
> >+ * After the domain is attached, see if the split tables were actually
> >+ * successful.
> >+ */
> >+ ret = iommu_domain_get_attr(iommu, DOMAIN_ATTR_SPLIT_TABLES, &val);
> >+ if (!ret && val) {
> >+ /*
> >+ * The aperture start will be at the beginning of the TTBR1
> >+ * space so use that as a base
> >+ */
> >+ start = iommu->geometry.aperture_start;
> >+ size = 0xffffffff;
> This should be the va_end and not the size
This is a bug in msm_gem_address_space_create - I intended the parameter to be
the size.
Jordan
--
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
Powered by blists - more mailing lists