All of lore.kernel.org
 help / color / mirror / Atom feed
From: "joerg.roedel-5C7GfCeVMHo@public.gmane.org" <joerg.roedel-5C7GfCeVMHo@public.gmane.org>
To: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linaro-mm-sig-bounces-cunTk1MwBs8s++Sfvej+rw@public.gmane.org"
	<linaro-mm-sig-bounces-cunTk1MwBs8s++Sfvej+rw@public.gmane.org>,
	"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
	<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
	"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.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-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

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

WARNING: multiple messages have this Message-ID (diff)
From: joerg.roedel@amd.com (joerg.roedel at amd.com)
To: linux-arm-kernel@lists.infradead.org
Subject: [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

WARNING: multiple messages have this Message-ID (diff)
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


  parent reply	other threads:[~2012-01-24 11:57 UTC|newest]

Thread overview: 71+ 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 ` Hiroshi DOYU
2012-01-05  7:11 ` Hiroshi DOYU
2012-01-05  7:11 ` [PATCH 1/2] ARM: IOMMU: Tegra20: Add iommu_ops for GART driver Hiroshi DOYU
2012-01-05  7:11   ` Hiroshi DOYU
     [not found]   ` <1325747509-29665-2-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-23 15:00     ` Joerg Roedel
2012-01-23 15:00       ` Joerg Roedel
2012-01-23 15:00       ` Joerg Roedel
     [not found]       ` <20120123150048.GB6269-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2012-01-25  7:40         ` Hiroshi Doyu
2012-01-25  7:40           ` Hiroshi Doyu
2012-01-25  7:40           ` Hiroshi Doyu
     [not found]           ` <20120125.094020.983282777619146490.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-26 11:58             ` joro-zLv9SwRftAIdnm+yROfE0A
2012-01-26 11:58               ` joro
2012-01-26 11:58               ` joro at 8bytes.org
     [not found]               ` <20120126115813.GF6269-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2012-01-26 14:45                 ` Hiroshi Doyu
2012-01-26 14:45                   ` Hiroshi Doyu
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-05  7:11   ` Hiroshi DOYU
     [not found]   ` <1325747509-29665-3-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-23 15:43     ` Joerg Roedel
2012-01-23 15:43       ` Joerg Roedel
2012-01-23 15:43       ` Joerg Roedel
     [not found]       ` <20120123154310.GC6269-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2012-01-24  9:57         ` Hiroshi Doyu
2012-01-24  9:57           ` Hiroshi Doyu
2012-01-24  9:57           ` Hiroshi Doyu
     [not found]           ` <20120124.115701.2179509760878976509.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-24 11:04             ` Joerg Roedel
2012-01-24 11:04               ` Joerg Roedel
2012-01-24 11:04               ` Joerg Roedel
     [not found]               ` <20120124110444.GB19255-5C7GfCeVMHo@public.gmane.org>
2012-01-24 11:36                 ` Hiroshi Doyu
2012-01-24 11:36                   ` Hiroshi Doyu
2012-01-24 11:36                   ` Hiroshi Doyu
     [not found]                   ` <20120124.133614.1646093482547685131.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-24 11:57                     ` joerg.roedel-5C7GfCeVMHo [this message]
2012-01-24 11:57                       ` joerg.roedel
2012-01-24 11:57                       ` joerg.roedel at amd.com
     [not found]                       ` <20120124115723.GC19255-5C7GfCeVMHo@public.gmane.org>
2012-01-24 12:07                         ` Hiroshi Doyu
2012-01-24 12:07                           ` Hiroshi Doyu
2012-01-24 12:07                           ` Hiroshi Doyu
2012-01-24 13:41         ` Hiroshi Doyu
2012-01-24 13:41           ` Hiroshi Doyu
2012-01-24 13:41           ` Hiroshi Doyu
     [not found]           ` <20120124.154121.1062920821192552748.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-24 13:46             ` Felipe Balbi
2012-01-24 13:46               ` Felipe Balbi
2012-01-24 13:46               ` Felipe Balbi
     [not found]               ` <20120124134601.GT27414-UiBtZHVXSwEVvW8u9ZQWYwjfymiNCTlR@public.gmane.org>
2012-01-24 14:25                 ` joro-zLv9SwRftAIdnm+yROfE0A
2012-01-24 14:25                   ` joro
2012-01-24 14:25                   ` joro at 8bytes.org
     [not found]                   ` <20120124142521.GE6269-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2012-01-25  7:39                     ` Hiroshi Doyu
2012-01-25  7:39                       ` Hiroshi Doyu
2012-01-25  7:39                       ` Hiroshi Doyu
     [not found]                       ` <20120125.093932.783007031082378997.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-26 14:59                         ` joro-zLv9SwRftAIdnm+yROfE0A
2012-01-26 14:59                           ` joro
2012-01-26 14:59                           ` joro at 8bytes.org
     [not found] ` <1325747509-29665-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-05  7:17   ` [PATCH v3 0/2] ARM: IOMMU: tegra: Add iommu_ops for GART/SMMU driver Hiroshi Doyu
2012-01-05  7:17     ` Hiroshi Doyu
2012-01-05  7:17     ` Hiroshi Doyu
     [not found]     ` <20120105091718.3fb378b2a1d390f9dd63c396-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-05 12:53       ` Russell King - ARM Linux
2012-01-05 12:53         ` Russell King - ARM Linux
2012-01-05 12:53         ` Russell King - ARM Linux
     [not found]         ` <20120105125326.GT11810-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2012-01-05 14:29           ` Hiroshi Doyu
2012-01-05 14:29             ` Hiroshi Doyu
2012-01-05 14:29             ` Hiroshi Doyu
     [not found]             ` <20120105.162930.604365154868332443.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-05 14:46               ` Russell King - ARM Linux
2012-01-05 14:46                 ` Russell King - ARM Linux
2012-01-05 14:46                 ` Russell King - ARM Linux
     [not found]                 ` <20120105144631.GV11810-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2012-01-11 14:24                   ` Hiroshi Doyu
2012-01-11 14:24                     ` Hiroshi Doyu
2012-01-11 14:24                     ` Hiroshi Doyu
2012-01-09  0:39         ` KyongHo Cho
2012-01-09  0:39           ` KyongHo Cho
2012-01-09 11:45           ` Russell King - ARM Linux
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-5c7gfcevmho@public.gmane.org \
    --cc=hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=linaro-mm-sig-bounces-cunTk1MwBs8s++Sfvej+rw@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.