From: Lu Baolu <baolu.lu@linux.intel.com>
To: "Raj, Ashok" <ashok.raj@intel.com>,
Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: kevin.tian@intel.com, kvm@vger.kernel.org,
sanjay.k.kumar@intel.com, yi.y.sun@intel.com,
iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
Alex Williamson <alex.williamson@redhat.com>,
David Woodhouse <dwmw2@infradead.org>
Subject: Re: [RFC PATCH 0/4] Use 1st-level for DMA remapping in guest
Date: Tue, 24 Sep 2019 12:40:29 +0800 [thread overview]
Message-ID: <da9513dc-dd46-f2ba-1ed5-e207b6fe07f0@linux.intel.com> (raw)
In-Reply-To: <20190923202552.GA21816@araj-mobl1.jf.intel.com>
Hi,
On 9/24/19 4:25 AM, Raj, Ashok wrote:
> Hi Jacob
>
> On Mon, Sep 23, 2019 at 12:27:15PM -0700, Jacob Pan wrote:
>>>
>>> In VT-d 3.0, scalable mode is introduced, which offers two level
>>> translation page tables and nested translation mode. Regards to
>>> GIOVA support, it can be simplified by 1) moving the GIOVA support
>>> over 1st-level page table to store GIOVA->GPA mapping in vIOMMU,
>>> 2) binding vIOMMU 1st level page table to the pIOMMU, 3) using pIOMMU
>>> second level for GPA->HPA translation, and 4) enable nested (a.k.a.
>>> dual stage) translation in host. Compared with current shadow GIOVA
>>> support, the new approach is more secure and software is simplified
>>> as we only need to flush the pIOMMU IOTLB and possible device-IOTLB
>>> when an IOVA mapping in vIOMMU is torn down.
>>>
>>> .-----------.
>>> | vIOMMU |
>>> |-----------| .-----------.
>>> | |IOTLB flush trap | QEMU |
>>> .-----------. (unmap) |-----------|
>>> | GVA->GPA |---------------->| |
>>> '-----------' '-----------'
>>> | | |
>>> '-----------' |
>>> <------------------------------
>>> | VFIO/IOMMU
>>> | cache invalidation and
>>> | guest gpd bind interfaces
>>> v
>> For vSVA, the guest PGD bind interface will mark the PASID as guest
>> PASID and will inject page request into the guest. In FL gIOVA case, I
>> guess we are assuming there is no page fault for GIOVA. I will need to
>> add a flag in the gpgd bind such that any PRS will be auto responded
>> with invalid.
>
> Is there real need to enforce this? I'm not sure if there is any
> limitation in the spec, and if so, can the guest check that instead?
For FL gIOVA case, gPASID is always 0. If a physical device is passed
through, hPASID is also 0; If an mdev device (representing an ADI)
instead, hPASID would be the PASID corresponding to the ADI. The
simulation software (i.e. QEMU) maintains a map between gPASID and
hPASID.
I second Ashok's idea. We don't need to distinguish these two cases in
the api and handle page request interrupt in guest as an unrecoverable
one.
>
> Also i believe the idea is to overcommit PASID#0 such uses. Thought
> we had a capability to expose this to the vIOMMU as well. Not sure if this
> is already documented, if not should be up in the next rev.
>
>
>>
>> Also, native use of IOVA FL map is not to be supported? i.e. IOMMU API
>> and DMA API for native usage will continue to be SL only?
>>> .-----------.
>>> | pIOMMU |
>>> |-----------|
>>> .-----------.
>>> | GVA->GPA |<---First level
>>> '-----------'
>>> | GPA->HPA |<---Scond level
>
> s/Scond/Second
Yes. Thanks!
Best regards,
Baolu
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Lu Baolu <baolu.lu@linux.intel.com>
To: "Raj, Ashok" <ashok.raj@intel.com>,
Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: baolu.lu@linux.intel.com, Joerg Roedel <joro@8bytes.org>,
David Woodhouse <dwmw2@infradead.org>,
Alex Williamson <alex.williamson@redhat.com>,
sanjay.k.kumar@intel.com, kevin.tian@intel.com,
yi.l.liu@intel.com, yi.y.sun@intel.com,
iommu@lists.linux-foundation.org, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 0/4] Use 1st-level for DMA remapping in guest
Date: Tue, 24 Sep 2019 12:40:29 +0800 [thread overview]
Message-ID: <da9513dc-dd46-f2ba-1ed5-e207b6fe07f0@linux.intel.com> (raw)
In-Reply-To: <20190923202552.GA21816@araj-mobl1.jf.intel.com>
Hi,
On 9/24/19 4:25 AM, Raj, Ashok wrote:
> Hi Jacob
>
> On Mon, Sep 23, 2019 at 12:27:15PM -0700, Jacob Pan wrote:
>>>
>>> In VT-d 3.0, scalable mode is introduced, which offers two level
>>> translation page tables and nested translation mode. Regards to
>>> GIOVA support, it can be simplified by 1) moving the GIOVA support
>>> over 1st-level page table to store GIOVA->GPA mapping in vIOMMU,
>>> 2) binding vIOMMU 1st level page table to the pIOMMU, 3) using pIOMMU
>>> second level for GPA->HPA translation, and 4) enable nested (a.k.a.
>>> dual stage) translation in host. Compared with current shadow GIOVA
>>> support, the new approach is more secure and software is simplified
>>> as we only need to flush the pIOMMU IOTLB and possible device-IOTLB
>>> when an IOVA mapping in vIOMMU is torn down.
>>>
>>> .-----------.
>>> | vIOMMU |
>>> |-----------| .-----------.
>>> | |IOTLB flush trap | QEMU |
>>> .-----------. (unmap) |-----------|
>>> | GVA->GPA |---------------->| |
>>> '-----------' '-----------'
>>> | | |
>>> '-----------' |
>>> <------------------------------
>>> | VFIO/IOMMU
>>> | cache invalidation and
>>> | guest gpd bind interfaces
>>> v
>> For vSVA, the guest PGD bind interface will mark the PASID as guest
>> PASID and will inject page request into the guest. In FL gIOVA case, I
>> guess we are assuming there is no page fault for GIOVA. I will need to
>> add a flag in the gpgd bind such that any PRS will be auto responded
>> with invalid.
>
> Is there real need to enforce this? I'm not sure if there is any
> limitation in the spec, and if so, can the guest check that instead?
For FL gIOVA case, gPASID is always 0. If a physical device is passed
through, hPASID is also 0; If an mdev device (representing an ADI)
instead, hPASID would be the PASID corresponding to the ADI. The
simulation software (i.e. QEMU) maintains a map between gPASID and
hPASID.
I second Ashok's idea. We don't need to distinguish these two cases in
the api and handle page request interrupt in guest as an unrecoverable
one.
>
> Also i believe the idea is to overcommit PASID#0 such uses. Thought
> we had a capability to expose this to the vIOMMU as well. Not sure if this
> is already documented, if not should be up in the next rev.
>
>
>>
>> Also, native use of IOVA FL map is not to be supported? i.e. IOMMU API
>> and DMA API for native usage will continue to be SL only?
>>> .-----------.
>>> | pIOMMU |
>>> |-----------|
>>> .-----------.
>>> | GVA->GPA |<---First level
>>> '-----------'
>>> | GPA->HPA |<---Scond level
>
> s/Scond/Second
Yes. Thanks!
Best regards,
Baolu
next prev parent reply other threads:[~2019-09-24 4:42 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-23 12:24 [RFC PATCH 0/4] Use 1st-level for DMA remapping in guest Lu Baolu
2019-09-23 12:24 ` Lu Baolu
2019-09-23 12:24 ` [RFC PATCH 1/4] iommu/vt-d: Move domain_flush_cache helper into header Lu Baolu
2019-09-23 12:24 ` Lu Baolu
2019-09-23 12:24 ` [RFC PATCH 2/4] iommu/vt-d: Add first level page table interfaces Lu Baolu
2019-09-23 12:24 ` Lu Baolu
2019-09-23 20:31 ` Raj, Ashok
2019-09-23 20:31 ` Raj, Ashok
2019-09-24 1:38 ` Lu Baolu
2019-09-24 1:38 ` Lu Baolu
2019-09-25 4:30 ` Peter Xu
2019-09-25 4:30 ` Peter Xu
2019-09-25 4:38 ` Tian, Kevin
2019-09-25 4:38 ` Tian, Kevin
2019-09-25 5:24 ` Peter Xu
2019-09-25 5:24 ` Peter Xu
2019-09-25 6:52 ` Lu Baolu
2019-09-25 6:52 ` Lu Baolu
2019-09-25 7:32 ` Tian, Kevin
2019-09-25 7:32 ` Tian, Kevin
2019-09-25 8:35 ` Peter Xu
2019-09-25 8:35 ` Peter Xu
2019-09-26 1:42 ` Lu Baolu
2019-09-26 1:42 ` Lu Baolu
2019-09-25 5:21 ` Peter Xu
2019-09-25 5:21 ` Peter Xu
2019-09-26 2:35 ` Lu Baolu
2019-09-26 2:35 ` Lu Baolu
2019-09-26 3:49 ` Peter Xu
2019-09-26 3:49 ` Peter Xu
2019-09-27 2:27 ` Lu Baolu
2019-09-27 2:27 ` Lu Baolu
2019-09-27 5:34 ` Peter Xu
2019-09-27 5:34 ` Peter Xu
2019-09-28 8:23 ` Lu Baolu
2019-09-28 8:23 ` Lu Baolu
2019-09-29 5:25 ` Peter Xu
2019-09-29 5:25 ` Peter Xu
2019-10-08 2:20 ` Lu Baolu
2019-10-08 2:20 ` Lu Baolu
2019-09-23 12:24 ` [RFC PATCH 3/4] iommu/vt-d: Map/unmap domain with mmmap/mmunmap Lu Baolu
2019-09-23 12:24 ` Lu Baolu
2019-09-25 5:00 ` Tian, Kevin
2019-09-25 5:00 ` Tian, Kevin
2019-09-25 7:06 ` Lu Baolu
2019-09-25 7:06 ` Lu Baolu
2019-09-23 12:24 ` [RFC PATCH 4/4] iommu/vt-d: Identify domains using first level page table Lu Baolu
2019-09-23 12:24 ` Lu Baolu
2019-09-25 6:50 ` Peter Xu
2019-09-25 6:50 ` Peter Xu
2019-09-25 7:35 ` Tian, Kevin
2019-09-25 7:35 ` Tian, Kevin
2019-09-23 19:27 ` [RFC PATCH 0/4] Use 1st-level for DMA remapping in guest Jacob Pan
2019-09-23 19:27 ` Jacob Pan
2019-09-23 20:25 ` Raj, Ashok
2019-09-23 20:25 ` Raj, Ashok
2019-09-24 4:40 ` Lu Baolu [this message]
2019-09-24 4:40 ` Lu Baolu
2019-09-24 7:00 ` Tian, Kevin
2019-09-24 7:00 ` Tian, Kevin
2019-09-25 2:48 ` Lu Baolu
2019-09-25 2:48 ` Lu Baolu
2019-09-25 6:56 ` Peter Xu
2019-09-25 6:56 ` Peter Xu
2019-09-25 7:21 ` Tian, Kevin
2019-09-25 7:21 ` Tian, Kevin
2019-09-25 7:45 ` Peter Xu
2019-09-25 7:45 ` Peter Xu
2019-09-25 8:02 ` Tian, Kevin
2019-09-25 8:02 ` Tian, Kevin
2019-09-25 8:52 ` Peter Xu
2019-09-25 8:52 ` Peter Xu
2019-09-26 1:37 ` Lu Baolu
2019-09-26 1:37 ` Lu Baolu
2019-09-24 4:27 ` Lu Baolu
2019-09-24 4:27 ` Lu Baolu
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=da9513dc-dd46-f2ba-1ed5-e207b6fe07f0@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=alex.williamson@redhat.com \
--cc=ashok.raj@intel.com \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux-foundation.org \
--cc=jacob.jun.pan@linux.intel.com \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sanjay.k.kumar@intel.com \
--cc=yi.y.sun@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 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.