From: markz <markz-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: Peer Chen <pchen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Wei Ni <wni-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Emily Jiang <ejiang-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Alex Courbot <acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
"thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org"
<thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>,
Ken Adams <KAdams-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: Tegra-DRM: Tegra30: DMA mapping API (was: About dma mapping apis)
Date: Tue, 10 Jul 2012 16:14:01 +0800 [thread overview]
Message-ID: <1341908041.9360.6.camel@markz-desktop> (raw)
In-Reply-To: <20120709.182828.1247752887335819184.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
On Mon, 2012-07-09 at 23:28 +0800, Hiroshi Doyu wrote:
> Hi Mark, adding linux-tegra on Cc:....
>
> Mark Zhang <markz-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> wrote @ Mon, 9 Jul 2012 14:13:13 +0200:
>
> > > Hi Mark, Cc: Thierry & Ken,
> > >
> > > Can GEM allow DRM to use contigious memory? That could be easier.
> > >
> > > Otherwise, I think that you need to make drv->dev iommu'able before
> > > calling DMA API if you want to use IOMMU. To make drv->dev iommu'able,
> > > you need to call arm_iommu_create_mapping() and arm_iommu_attach_device().
> >
> > Thank you. Yes, we need to call these functions otherwise iommu will not be enabled at all.
> > So my question is:
> > 1. in arm_iommu_create_mapping, we need to specify the base address
> > of the iova. Is these an API which can get this base address? I
> > mean, SMMU serves a lot of clients and maybe every client will
> > specify a range of iova which it needs. So as the center point of
> > these clients, does SMMU module has a function which can be used by
> > client to get this base address?
>
> The SMMU patch was sent but it depends on the following framework.
>
> [PATCH 0/5] IOMMU: Make IOMMU-API ready for GART-like hardware
> https://lkml.org/lkml/2012/1/19/170
>
Got it. Seems this patch hasn't been integrated yet. Besides, SMMU
module should do some implementations for this set/get attribute
functions as well, right?
> > 2. I took a quick glance of tegra-smmu.c, I noticed that there is a
> > dts property named dma-window, which it's value is: <0x0
> > 0x40000000>. Does this means the iova which SMMU handles is from 0 -
> > 1G? IIRC, SMMU handles 4G address space...
>
> It tries to avoid overwrapping 1-1 iovirt-phys mapping, which is
> necessary for some drivers right now.
>
Sorry I didn't get it. What is overwrapping 1-1 iovirt-phys mapping?
> > 3. Right now in my drm driver, arm_iommu_attach_device failed with
> > an error code: -22(Invalid Argument). I think this is caused by
> > these codes in function smmu_iommu_attach_dev:
> >
> > map = (unsigned long)dev->platform_data;
> > if (!map)
> > return -EINVAL;
> >
> > So, does this mean the drm_device should have a "platform_data"(right now it is NULL so -EINVAL returned)?
> > I skimmed the codes of tegra-smmu.c, seems this "platform_data" has specific usage and should be composed in some rules.
> > Could you explain a little bit about this?
>
> You can skip that check with the following patch.
>
Yes, it works. Right now the framebuffer works on my T30.
Thank you!
> From 42a03ff88ed133db613389d2cc4c4ad33cd5d7e3 Mon Sep 17 00:00:00 2001
> From: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> Date: Tue, 28 Feb 2012 15:33:17 +0200
> Subject: [PATCH 1/1] iommu/tegra: smmu: Enable all SWGRP by default
>
> This should be revisited along with successors, which would
> introduce different configurations.
>
> Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> ---
> drivers/iommu/tegra-smmu.c | 12 ++++++++++++
> 1 files changed, 12 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c
> index bf33c03..3bc5c91 100644
> --- a/drivers/iommu/tegra-smmu.c
> +++ b/drivers/iommu/tegra-smmu.c
> @@ -38,6 +38,8 @@
> #include <mach/smmu.h>
> #include <mach/tegra_smmu.h>
>
> +#define SKIP_SWGRP_CHECK /* FIXME: SWGRP should be passed from DT. */
> +
> /* bitmap of the page sizes currently supported */
> #define SMMU_IOMMU_PGSIZES (SZ_4K)
>
> @@ -316,11 +318,15 @@ static int __smmu_client_set_hwgrp(struct smmu_client *c,
> offs = HWGRP_ASID_REG(i);
> val = smmu_read(smmu, offs);
> if (on) {
> +#if !defined(SKIP_SWGRP_CHECK)
> if (WARN_ON(val & mask))
> goto err_hw_busy;
> +#endif
> val |= mask;
> } else {
> +#if !defined(SKIP_SWGRP_CHECK)
> WARN_ON((val & mask) == mask);
> +#endif
> val &= ~mask;
> }
> smmu_write(smmu, val, offs);
> @@ -701,9 +707,15 @@ static int smmu_iommu_attach_dev(struct iommu_domain *domain,
> return -ENOMEM;
> client->dev = dev;
> client->as = as;
> +
> +#ifdef SKIP_SWGRP_CHECK
> + /* Enable all SWGRP blindly by default */
> + map = (1 << HWGRP_COUNT) - 1;
> +#else
> map = (unsigned long)dev->platform_data;
> if (!map)
> return -EINVAL;
> +#endif
>
> err = smmu_client_enable_hwgrp(client, map);
> if (err)
next prev parent reply other threads:[~2012-07-10 8:14 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <23B010BBA481A74B98487467C29BA57BF2366A1010@HKMAIL01.nvidia.com>
[not found] ` <20120706.092417.916278591811517036.hdoyu@nvidia.com>
[not found] ` <23B010BBA481A74B98487467C29BA57BF2366A1012@HKMAIL01.nvidia.com>
[not found] ` <23B010BBA481A74B98487467C29BA57BF2366A1012-Q4EWCATADntDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-07-09 15:28 ` Tegra-DRM: Tegra30: DMA mapping API (was: About dma mapping apis) Hiroshi Doyu
[not found] ` <20120709.182828.1247752887335819184.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-07-10 0:47 ` markz
2012-07-10 8:14 ` markz [this message]
2012-07-10 10:24 ` Hiroshi Doyu
[not found] ` <20120710132417.b52fbc05847cabec7e16cebd-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-07-10 10:26 ` Tegra-DRM: Tegra30: DMA mapping API Hiroshi Doyu
[not found] ` <20120710132639.a65ce779fcfabe74435dd6bc-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-07-11 10:58 ` Joerg Roedel
[not found] ` <20120711105827.GE25282-5C7GfCeVMHo@public.gmane.org>
2012-07-11 11:42 ` Hiroshi Doyu
[not found] ` <20120711144254.8f119872445e95713b467448-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-07-12 3:04 ` markz
2012-07-12 3:33 ` Hiroshi Doyu
[not found] ` <20120712063322.df310d0b459d7d7d74511d8e-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-07-12 6:49 ` markz
2012-07-12 7:11 ` Hiroshi Doyu
[not found] ` <20120712101125.427c920559044d550f0c64b7-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-07-12 7:19 ` markz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1341908041.9360.6.camel@markz-desktop \
--to=markz-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \
--cc=KAdams-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=ejiang-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=pchen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org \
--cc=wni-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).