linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
To: Lu Baolu <baolu.lu@linux.intel.com>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>
Cc: "joro@8bytes.org" <joro@8bytes.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"jcrouse@codeaurora.org" <jcrouse@codeaurora.org>,
	"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
	"Jonathan.Cameron@huawei.com" <Jonathan.Cameron@huawei.com>,
	"jacob.jun.pan@linux.intel.com" <jacob.jun.pan@linux.intel.com>,
	"christian.koenig@amd.com" <christian.koenig@amd.com>,
	"eric.auger@redhat.com" <eric.auger@redhat.com>,
	"kevin.tian@intel.com" <kevin.tian@intel.com>,
	"yi.l.liu@intel.com" <yi.l.liu@intel.com>,
	Andrew Murray <Andrew.Murray@arm.com>,
	Will Deacon <Will.Deacon@arm.com>,
	Robin Murphy <Robin.Murphy@arm.com>,
	"ashok.raj@intel.com" <ashok.raj@intel.com>,
	"xuzaibo@huawei.com" <xuzaibo@huawei.com>,
	"liguozhu@hisilicon.com" <liguozhu@hisilicon.com>,
	"okaya@codeaurora.org" <okaya@codeaurora.org>,
	"bharatku@xilinx.com" <bharatku@xilinx.com>,
	"ilias.apalodimas@linaro.org" <ilias.apalodimas@linaro.org>,
	"shunyong.yang@hxt-semitech.com" <shunyong.yang@hxt-semitech.com>
Subject: Re: [PATCH v3 03/10] iommu/sva: Manage process address spaces
Date: Tue, 25 Sep 2018 11:32:32 +0100	[thread overview]
Message-ID: <5aff8dc0-9ce7-5018-e78e-770279681cbc@arm.com> (raw)
In-Reply-To: <09933fce-b959-32e1-b1f3-0d4389abf735@linux.intel.com>

On 25/09/2018 04:15, Lu Baolu wrote:
>> +     /* If an io_mm already exists, use it */
>> +     spin_lock(&iommu_sva_lock);
>> +     idr_for_each_entry(&iommu_pasid_idr, io_mm, i) {
> 
> This might be problematic for vt-d (and other possible arch's which use
> PASID other than SVA). When vt-d iommu works in scalable mode, a PASID
> might be allocated for:
> 
> (1) SVA
> (2) Device Assignable Interface (might be a mdev or directly managed
>      within a device driver).
> (3) SVA in VM guest
> (4) Device Assignable Interface in VM guest
> 
> So we can't expect that an io_mm pointer was associated with each PASID.

Yes as discussed on the previous series, we'll need to move the PASID
allocator outside of iommu-sva at some point, and even outside of
drivers/iommu since device driver might want to use the PASID allocator
without an IOMMU.

To be usable by all consumers of PASIDs, that allocator will need the
same interface as IDR, so I don't think we have a problem here. I
haven't had time or need to write such allocator yet (and don't plan to
do it as part of this series), but I drafted an interface, that at least
fulfills the needs of SVA.

* Single system-wide PASID space
* Multiple consumers, each associating their own structure to PASIDs.
  Each consumer gets a token.
* Device drivers might want to use both SVA and private PASIDs for a
  device at the same time.
* In my opinion "pasid" isn't the right name, "ioasid" would be better
  but that's not important.

typedef unsigned int pasid_t;

/* Returns consumer token */
void *pasid_get_consumer();
void pasid_put_consumer(void *consumer);

/* Returns pasid or invalid (pasid_t)(-1) */
pasid_t pasid_alloc(void *consumer, pasid_t min, pasid_t max,
                    void *private);
void pasid_remove(pasid_t pasid);

/* Iterate over PASIDs for this consumer. Func returns non-zero to stop
iterating */
int pasid_for_each(void *consumer, void *iter_data,
		   int (*func)(void *iter_data, pasid_t pasid,
			       void *private));
/* Returns priv data or NULL */
void *pasid_find(void *consumer, pasid_t pasid);

Thanks,
Jean

> And this code might run into problem if the pasid is allocated for
> usages other than SVA.
> 
> Best regards,
> Lu Baolu


  reply	other threads:[~2018-09-25 10:32 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-20 17:00 [PATCH v3 00/10] Shared Virtual Addressing for the IOMMU Jean-Philippe Brucker
2018-09-20 17:00 ` [PATCH v3 01/10] iommu: Introduce Shared Virtual Addressing API Jean-Philippe Brucker
     [not found]   ` <f406bcf7-4e54-9f1b-88eb-03fc642ffede@linux.intel.com>
2018-09-24 12:07     ` Jean-Philippe Brucker
2018-09-25 13:16     ` Joerg Roedel
2018-09-25 22:46       ` Jacob Pan
2018-09-26 10:14         ` Jean-Philippe Brucker
2018-09-26 12:48         ` Joerg Roedel
2018-09-20 17:00 ` [PATCH v3 02/10] iommu/sva: Bind process address spaces to devices Jean-Philippe Brucker
2018-09-23  3:05   ` Lu Baolu
2018-09-24 12:07     ` Jean-Philippe Brucker
2018-09-26 18:01       ` Jacob Pan
2018-09-27 15:06         ` Jean-Philippe Brucker
2018-09-28  1:14           ` Tian, Kevin
2018-09-20 17:00 ` [PATCH v3 03/10] iommu/sva: Manage process address spaces Jean-Philippe Brucker
2018-09-25  3:15   ` Lu Baolu
2018-09-25 10:32     ` Jean-Philippe Brucker [this message]
2018-09-26  3:12       ` Lu Baolu
2018-09-25 13:26     ` Joerg Roedel
2018-09-25 23:33       ` Lu Baolu
2018-09-26 10:20         ` Jean-Philippe Brucker
2018-09-26 12:45           ` Joerg Roedel
2018-09-26 13:50             ` Jean-Philippe Brucker
2018-09-27  3:22               ` Liu, Yi L
2018-09-27 13:37                 ` Jean-Philippe Brucker
2018-10-08  8:29                   ` Liu, Yi L
2018-09-26 22:58             ` Jacob Pan
2018-09-26 22:35   ` Jacob Pan
2018-10-03 17:52     ` Jean-Philippe Brucker
2018-10-15 20:53       ` Jacob Pan
2018-09-20 17:00 ` [PATCH v3 04/10] iommu/sva: Add a mm_exit callback for device drivers Jean-Philippe Brucker
2018-09-20 17:00 ` [PATCH v3 05/10] iommu/sva: Track mm changes with an MMU notifier Jean-Philippe Brucker
2018-09-20 17:00 ` [PATCH v3 06/10] iommu/sva: Search mm by PASID Jean-Philippe Brucker
2018-09-25  4:59   ` Lu Baolu
2018-09-20 17:00 ` [PATCH v3 07/10] iommu: Add a page fault handler Jean-Philippe Brucker
2018-09-27 20:37   ` Jacob Pan
2018-10-03 17:46     ` Jean-Philippe Brucker
2018-09-20 17:00 ` [PATCH v3 08/10] iommu/iopf: Handle mm faults Jean-Philippe Brucker
2018-09-20 17:00 ` [PATCH v3 09/10] iommu/sva: Register page fault handler Jean-Philippe Brucker
2018-09-20 17:00 ` [RFC PATCH v3 10/10] iommu/sva: Add support for private PASIDs Jean-Philippe Brucker
2018-10-12 14:32   ` Jordan Crouse
2018-10-17 14:21     ` Jean-Philippe Brucker
2018-10-17 14:24       ` Jean-Philippe Brucker
2018-10-17 15:07       ` Jordan Crouse

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=5aff8dc0-9ce7-5018-e78e-770279681cbc@arm.com \
    --to=jean-philippe.brucker@arm.com \
    --cc=Andrew.Murray@arm.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=Robin.Murphy@arm.com \
    --cc=Will.Deacon@arm.com \
    --cc=alex.williamson@redhat.com \
    --cc=ashok.raj@intel.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=bharatku@xilinx.com \
    --cc=christian.koenig@amd.com \
    --cc=eric.auger@redhat.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@linux.intel.com \
    --cc=jcrouse@codeaurora.org \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=liguozhu@hisilicon.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=okaya@codeaurora.org \
    --cc=shunyong.yang@hxt-semitech.com \
    --cc=xuzaibo@huawei.com \
    --cc=yi.l.liu@intel.com \
    /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).