From: "joerg.roedel@amd.com" <joerg.roedel@amd.com>
To: Hiroshi Doyu <hdoyu@nvidia.com>
Cc: "joro@8bytes.org" <joro@8bytes.org>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
"linaro-mm-sig-bounces@lists.linaro.org"
<linaro-mm-sig-bounces@lists.linaro.org>,
"iommu@lists.linux-foundation.org"
<iommu@lists.linux-foundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 2/2] ARM: IOMMU: Tegra30: Add iommu_ops for SMMU driver
Date: Tue, 24 Jan 2012 12:57:23 +0100 [thread overview]
Message-ID: <20120124115723.GC19255@amd.com> (raw)
In-Reply-To: <20120124.133614.1646093482547685131.hdoyu@nvidia.com>
On Tue, Jan 24, 2012 at 12:36:14PM +0100, Hiroshi Doyu wrote:
> > A domain is, as you said, a virtual address space for IO devices. But
> > the important point is, an arbitrary number of devices can be part of a
> > domain. This also means that the devices can be behind different
> > hardware SMMUs. In this case your driver needs to program the page-table
> > pointer into more than one SMMU to give devices behind different SMMUs
> > the same address space.
>
> Thank you for explaining.
>
> Does the above mean that a buffer can be shared with different devices
> which belong to different IOMMU devices(virtual address spaces)?
>
> For example, assuming the following:
>
> - We have "struct iommu_domain *domain1".
> - "domain1" has iommu device "iommu_dev1" and "iommu_dev2".
> - "iommu_dev1" has "client_dev1" and "client_dev2".
> - "iommu_dev2" has "client_dev3" and "client_dev4".
>
> "iommu_map(domain1, iova, pa, ...)" will create the following mapping
> ___at once___:
>
> - (iova)-(pa) mapping in iommu_dev1(iommmu_dev1's virtual address space)
> - (iova)-(pa) mapping in iommu_dev2(iommmu_dev2's virtual address space)
>
> Is the above correct?
Yes, this is correct.
> It seems that the same (iova) is used for different virtual address
> spaces. What kind of case is this beneficial most in?
It is actually the _same_ virtual address space which is used by
iommu_dev1 and iommu_dev2. Think of it like multiple threads of a single
process. They also share the address space.
This is a requirement of the iommu-api which is beneficial for
virtualization and simplifies the usage of the api in general. The user
does not need to care which devices can be assigned to which domain
because of underlying hardware constraints. The goal of the iommu-api is
to hide such contraints.
Joerg
--
AMD Operating System Research Center
Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach
General Managers: Alberto Bozzo
Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632
next prev parent reply other threads:[~2012-01-24 11:57 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-05 7:11 [PATCH v3 0/2] ARM: IOMMU: tegra: Add iommu_ops for GART/SMMU driver Hiroshi DOYU
2012-01-05 7:11 ` [PATCH 1/2] ARM: IOMMU: Tegra20: Add iommu_ops for GART driver Hiroshi DOYU
2012-01-23 15:00 ` Joerg Roedel
2012-01-25 7:40 ` Hiroshi Doyu
2012-01-26 11:58 ` joro
2012-01-26 14:45 ` Hiroshi Doyu
2012-01-05 7:11 ` [PATCH 2/2] ARM: IOMMU: Tegra30: Add iommu_ops for SMMU driver Hiroshi DOYU
2012-01-23 15:43 ` Joerg Roedel
2012-01-24 9:57 ` Hiroshi Doyu
2012-01-24 11:04 ` Joerg Roedel
2012-01-24 11:36 ` Hiroshi Doyu
2012-01-24 11:57 ` joerg.roedel [this message]
2012-01-24 12:07 ` Hiroshi Doyu
2012-01-24 13:41 ` Hiroshi Doyu
2012-01-24 13:46 ` Felipe Balbi
2012-01-24 14:25 ` joro
2012-01-25 7:39 ` Hiroshi Doyu
2012-01-26 14:59 ` joro
2012-01-05 7:17 ` [PATCH v3 0/2] ARM: IOMMU: tegra: Add iommu_ops for GART/SMMU driver Hiroshi Doyu
2012-01-05 12:53 ` Russell King - ARM Linux
2012-01-05 14:29 ` Hiroshi Doyu
2012-01-05 14:46 ` Russell King - ARM Linux
2012-01-11 14:24 ` Hiroshi Doyu
2012-01-09 0:39 ` KyongHo Cho
2012-01-09 11:45 ` Russell King - ARM Linux
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=20120124115723.GC19255@amd.com \
--to=joerg.roedel@amd.com \
--cc=hdoyu@nvidia.com \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=linaro-mm-sig-bounces@lists.linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.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).