From: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
To: Yi Liu <yi.l.liu@intel.com>, "joro@8bytes.org" <joro@8bytes.org>,
"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
"jgg@nvidia.com" <jgg@nvidia.com>,
"kevin.tian@intel.com" <kevin.tian@intel.com>,
"robin.murphy@arm.com" <robin.murphy@arm.com>
Cc: "cohuck@redhat.com" <cohuck@redhat.com>,
"eric.auger@redhat.com" <eric.auger@redhat.com>,
"nicolinc@nvidia.com" <nicolinc@nvidia.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"mjrosato@linux.ibm.com" <mjrosato@linux.ibm.com>,
"chao.p.peng@linux.intel.com" <chao.p.peng@linux.intel.com>,
"yi.y.sun@linux.intel.com" <yi.y.sun@linux.intel.com>,
"peterx@redhat.com" <peterx@redhat.com>,
"jasowang@redhat.com" <jasowang@redhat.com>,
"lulu@redhat.com" <lulu@redhat.com>,
"suravee.suthikulpanit@amd.com" <suravee.suthikulpanit@amd.com>,
"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-kselftest@vger.kernel.org"
<linux-kselftest@vger.kernel.org>,
"baolu.lu@linux.intel.com" <baolu.lu@linux.intel.com>,
"zhangfei.gao@linaro.org" <zhangfei.gao@linaro.org>
Subject: RE: [PATCH 00/17] Add Intel VT-d nested translation
Date: Thu, 9 Feb 2023 10:11:42 +0000 [thread overview]
Message-ID: <0bea6077f0634587b744ec2b421205e1@huawei.com> (raw)
In-Reply-To: <20230209043153.14964-1-yi.l.liu@intel.com>
> -----Original Message-----
> From: Yi Liu [mailto:yi.l.liu@intel.com]
> Sent: 09 February 2023 04:32
> To: joro@8bytes.org; alex.williamson@redhat.com; jgg@nvidia.com;
> kevin.tian@intel.com; robin.murphy@arm.com
> Cc: cohuck@redhat.com; eric.auger@redhat.com; nicolinc@nvidia.com;
> kvm@vger.kernel.org; mjrosato@linux.ibm.com;
> chao.p.peng@linux.intel.com; yi.l.liu@intel.com; yi.y.sun@linux.intel.com;
> peterx@redhat.com; jasowang@redhat.com; Shameerali Kolothum Thodi
> <shameerali.kolothum.thodi@huawei.com>; lulu@redhat.com;
> suravee.suthikulpanit@amd.com; iommu@lists.linux.dev;
> linux-kernel@vger.kernel.org; linux-kselftest@vger.kernel.org;
> baolu.lu@linux.intel.com
> Subject: [PATCH 00/17] Add Intel VT-d nested translation
>
> Nested translation has two stage address translations to get the final
> physical addresses. Take Intel VT-d as an example, the first stage translation
> structure is I/O page table. As the below diagram shows, guest I/O page
> table pointer in GPA (guest physical address) is passed to host to do the
> first stage translation. Along with it, guest modifications to present
> mappings in the first stage page should be followed with an iotlb invalidation
> to sync host iotlb.
>
> .-------------. .---------------------------.
> | vIOMMU | | Guest I/O page table |
> | | '---------------------------'
> .----------------/
> | PASID Entry |--- PASID cache flush --+
> '-------------' |
> | | V
> | | I/O page table pointer in GPA
> '-------------'
> Guest
> ------| Shadow |--------------------------|--------
> v v v
> Host
> .-------------. .------------------------.
> | pIOMMU | | FS for GIOVA->GPA |
> | | '------------------------'
> .----------------/ |
> | PASID Entry | V (Nested xlate)
> '----------------\.----------------------------------.
> | | | SS for GPA->HPA, unmanaged domain|
> | | '----------------------------------'
> '-------------'
> Where:
> - FS = First stage page tables
> - SS = Second stage page tables
> <Intel VT-d Nested translation>
>
> Different platform vendors have different first stage translation formats,
> so userspace should query the underlying iommu capability before setting
> first stage translation structures to host.[1]
>
> In iommufd subsystem, I/O page tables would be tracked by hw_pagetable
> objects.
> First stage page table is owned by userspace (guest), while second stage
> page
> table is owned by kernel for security. So First stage page tables are tracked
> by user-managed hw_pagetable, second stage page tables are tracked by
> kernel-
> managed hw_pagetable.
>
> This series first introduces new iommu op for allocating domains for
> iommufd,
> and op for syncing iotlb for first stage page table modifications, and then
> add the implementation of the new ops in intel-iommu driver. After this
> preparation, adds kernel-managed and user-managed hw_pagetable
> allocation for
> userspace. Last, add self-test for the new ioctls.
>
> This series is based on "[PATCH 0/6] iommufd: Add iommu capability
> reporting"[1]
> and Nicolin's "[PATCH v2 00/10] Add IO page table replacement support"[2].
> Complete
> code can be found in[3]. Draft Qemu code can be found in[4].
>
> Basic test done with DSA device on VT-d. Where the guest has a vIOMMU
> built
> with nested translation.
Hi Yi Liu,
Thanks for sending this out. Will go through this one. As I informed before we keep
an internal branch based on your work and rebase few patches to get the ARM
SMMUv3 nesting support. The recent one is based on your "iommufd-v6.2-rc4-nesting"
branch and is here,
https://github.com/hisilicon/kernel-dev/commits/iommufd-v6.2-rc4-nesting-arm
Just wondering any chance the latest "Add SMMUv3 nesting support" series will
be send out soon? Please let me know if you need any help with that.
Thanks,
Shameer
>
> [1]
> https://lore.kernel.org/linux-iommu/20230209041642.9346-1-yi.l.liu@intel.
> com/
> [2]
> https://lore.kernel.org/linux-iommu/cover.1675802050.git.nicolinc@nvidia.c
> om/
> [3] https://github.com/yiliu1765/iommufd/tree/iommufd_nesting_vtd_v1
> [4] https://github.com/yiliu1765/qemu/tree/wip/iommufd_rfcv3%2Bnesting
>
> Regards,
> Yi Liu
>
> Lu Baolu (5):
> iommu: Add new iommu op to create domains owned by userspace
> iommu: Add nested domain support
> iommu/vt-d: Extend dmar_domain to support nested domain
> iommu/vt-d: Add helper to setup pasid nested translation
> iommu/vt-d: Add nested domain support
>
> Nicolin Chen (6):
> iommufd: Add/del hwpt to IOAS at alloc/destroy()
> iommufd/device: Move IOAS attaching and detaching operations into
> helpers
> iommufd/selftest: Add IOMMU_TEST_OP_MOCK_DOMAIN_REPLACE test
> op
> iommufd/selftest: Add coverage for IOMMU_HWPT_ALLOC ioctl
> iommufd/selftest: Add IOMMU_TEST_OP_MD_CHECK_IOTLB test op
> iommufd/selftest: Add coverage for IOMMU_HWPT_INVALIDATE ioctl
>
> Yi Liu (6):
> iommufd/hw_pagetable: Use domain_alloc_user op for domain allocation
> iommufd: Split iommufd_hw_pagetable_alloc()
> iommufd: Add kernel-managed hw_pagetable allocation for userspace
> iommufd: Add infrastructure for user-managed hw_pagetable allocation
> iommufd: Add user-managed hw_pagetable allocation
> iommufd/device: Report supported stage-1 page table types
>
> drivers/iommu/intel/Makefile | 2 +-
> drivers/iommu/intel/iommu.c | 38 ++-
> drivers/iommu/intel/iommu.h | 50 +++-
> drivers/iommu/intel/nested.c | 143 +++++++++
> drivers/iommu/intel/pasid.c | 142 +++++++++
> drivers/iommu/intel/pasid.h | 2 +
> drivers/iommu/iommufd/device.c | 117 ++++----
> drivers/iommu/iommufd/hw_pagetable.c | 280
> +++++++++++++++++-
> drivers/iommu/iommufd/iommufd_private.h | 23 +-
> drivers/iommu/iommufd/iommufd_test.h | 35 +++
> drivers/iommu/iommufd/main.c | 11 +
> drivers/iommu/iommufd/selftest.c | 149 +++++++++-
> include/linux/iommu.h | 11 +
> include/uapi/linux/iommufd.h | 196 ++++++++++++
> tools/testing/selftests/iommu/iommufd.c | 124 +++++++-
> tools/testing/selftests/iommu/iommufd_utils.h | 106 +++++++
> 16 files changed, 1329 insertions(+), 100 deletions(-)
> create mode 100644 drivers/iommu/intel/nested.c
>
> --
> 2.34.1
>
next prev parent reply other threads:[~2023-02-09 10:11 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-09 4:31 [PATCH 00/17] Add Intel VT-d nested translation Yi Liu
2023-02-09 4:31 ` [PATCH 01/17] iommu: Add new iommu op to create domains owned by userspace Yi Liu
2023-02-10 8:24 ` Tian, Kevin
2023-02-11 3:16 ` Baolu Lu
2023-02-09 4:31 ` [PATCH 02/17] iommu: Add nested domain support Yi Liu
2023-02-14 18:47 ` Nicolin Chen
2023-02-09 4:31 ` [PATCH 03/17] iommu/vt-d: Extend dmar_domain to support nested domain Yi Liu
2023-02-09 4:31 ` [PATCH 04/17] iommu/vt-d: Add helper to setup pasid nested translation Yi Liu
2023-02-09 4:31 ` [PATCH 05/17] iommu/vt-d: Add nested domain support Yi Liu
2023-02-09 4:31 ` [PATCH 06/17] iommufd/hw_pagetable: Use domain_alloc_user op for domain allocation Yi Liu
2023-02-09 17:59 ` Matthew Rosato
2023-02-09 18:36 ` Jason Gunthorpe
2023-02-09 19:51 ` Nicolin Chen
2023-02-09 20:39 ` Jason Gunthorpe
2023-02-09 22:22 ` Nicolin Chen
2023-02-09 23:59 ` Jason Gunthorpe
2023-02-10 10:50 ` Liu, Yi L
2023-02-09 4:31 ` [PATCH 07/17] iommufd: Add/del hwpt to IOAS at alloc/destroy() Yi Liu
2023-02-09 4:31 ` [PATCH 08/17] iommufd: Split iommufd_hw_pagetable_alloc() Yi Liu
2023-02-09 4:31 ` [PATCH 09/17] iommufd: Add kernel-managed hw_pagetable allocation for userspace Yi Liu
2023-02-09 20:45 ` Jason Gunthorpe
2023-02-10 10:52 ` Liu, Yi L
2023-02-09 4:31 ` [PATCH 10/17] iommufd/device: Move IOAS attaching and detaching operations into helpers Yi Liu
2023-02-09 4:31 ` [PATCH 11/17] iommufd: Add infrastructure for user-managed hw_pagetable allocation Yi Liu
2023-02-09 4:31 ` [PATCH 12/17] iommufd: Add " Yi Liu
2023-02-09 4:31 ` [PATCH 13/17] iommufd/device: Report supported stage-1 page table types Yi Liu
2023-02-09 4:31 ` [PATCH 14/17] iommufd/selftest: Add IOMMU_TEST_OP_MOCK_DOMAIN_REPLACE test op Yi Liu
2023-02-14 18:36 ` Nicolin Chen
2023-02-09 4:31 ` [PATCH 15/17] iommufd/selftest: Add coverage for IOMMU_HWPT_ALLOC ioctl Yi Liu
2023-02-09 4:31 ` [PATCH 16/17] iommufd/selftest: Add IOMMU_TEST_OP_MD_CHECK_IOTLB test op Yi Liu
2023-02-09 4:31 ` [PATCH 17/17] iommufd/selftest: Add coverage for IOMMU_HWPT_INVALIDATE ioctl Yi Liu
2023-02-09 10:11 ` Shameerali Kolothum Thodi [this message]
2023-02-09 16:10 ` [PATCH 00/17] Add Intel VT-d nested translation Nicolin Chen
2023-02-09 16:16 ` Shameerali Kolothum Thodi
2023-02-17 18:20 ` Nicolin Chen
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=0bea6077f0634587b744ec2b421205e1@huawei.com \
--to=shameerali.kolothum.thodi@huawei.com \
--cc=alex.williamson@redhat.com \
--cc=baolu.lu@linux.intel.com \
--cc=chao.p.peng@linux.intel.com \
--cc=cohuck@redhat.com \
--cc=eric.auger@redhat.com \
--cc=iommu@lists.linux.dev \
--cc=jasowang@redhat.com \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=lulu@redhat.com \
--cc=mjrosato@linux.ibm.com \
--cc=nicolinc@nvidia.com \
--cc=peterx@redhat.com \
--cc=robin.murphy@arm.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=yi.l.liu@intel.com \
--cc=yi.y.sun@linux.intel.com \
--cc=zhangfei.gao@linaro.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