From: Lu Baolu <baolu.lu@linux.intel.com> To: Joerg Roedel <joro@8bytes.org>, Jason Gunthorpe <jgg@nvidia.com>, Christoph Hellwig <hch@infradead.org>, Kevin Tian <kevin.tian@intel.com>, Ashok Raj <ashok.raj@intel.com>, Will Deacon <will@kernel.org>, Robin Murphy <robin.murphy@arm.com>, Jean-Philippe Brucker <jean-philippe@linaro.com> Cc: Eric Auger <eric.auger@redhat.com>, Liu Yi L <yi.l.liu@intel.com>, Jacob jun Pan <jacob.jun.pan@intel.com>, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Lu Baolu <baolu.lu@linux.intel.com> Subject: [PATCH RFC v2 00/11] iommu: SVA and IOPF refactoring Date: Tue, 29 Mar 2022 13:37:49 +0800 [thread overview] Message-ID: <20220329053800.3049561-1-baolu.lu@linux.intel.com> (raw) Hi, The former part of this series refactors the IOMMU SVA code by assigning an SVA type of iommu_domain to a shared virtual address and replacing sva_bind/unbind iommu ops with attach/detach_dev_pasid domain ops. The latter part changes the existing I/O page fault handling framework from only serving SVA to a generic one. Any driver or component could handle the I/O page faults for its domain in its own way by installing an I/O page fault handler. This series overlaps with another series posted here [1]. For the convenience of review, I included all relevant patches in this series. We will solve the overlap problem later. This series is also available on github here [2]. [1] https://lore.kernel.org/lkml/20220315050713.2000518-1-jacob.jun.pan@linux.intel.com/ [2] https://github.com/LuBaolu/intel-iommu/commits/iommu-sva-refactoring-v2 Please help review and suggest. Best regards, baolu Change log: v1: - https://lore.kernel.org/linux-iommu/20220320064030.2936936-1-baolu.lu@linux.intel.com/ - Initial post. v2: - Add sva domain life cycle management to avoid race between unbind and page fault handling. - Use a single domain for each mm. - Return a single sva handler for the same binding. - Add a new helper to meet singleton group requirement. - Rework the SVA domain allocation for arm smmu v3 driver and move the pasid_bit initialization to device probe. - Drop the patch "iommu: Handle IO page faults directly". - Add mmget_not_zero(mm) in SVA page fault handler. Lu Baolu (11): iommu: Add pasid_bits field in struct dev_iommu iommu: Add iommu_group_singleton_lockdown() iommu/sva: Add iommu_domain type for SVA iommu: Add attach/detach_dev_pasid domain ops iommu/vt-d: Remove SVM_FLAG_SUPERVISOR_MODE suport iommu/vt-d: Add SVA domain support arm-smmu-v3/sva: Add SVA domain support iommu/sva: Use attach/detach_pasid_dev in SVA interfaces iommu: Remove SVA related callbacks from iommu ops iommu: Per-domain I/O page fault handling iommu: Rename iommu-sva-lib.{c,h} include/linux/intel-iommu.h | 5 +- include/linux/iommu.h | 107 ++++-- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 25 +- .../iommu/{iommu-sva-lib.h => iommu-sva.h} | 12 +- .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 85 ++--- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 28 +- drivers/iommu/intel/iommu.c | 20 +- drivers/iommu/intel/svm.c | 135 +++----- drivers/iommu/io-pgfault.c | 72 +--- drivers/iommu/iommu-sva-lib.c | 71 ---- drivers/iommu/iommu-sva.c | 307 ++++++++++++++++++ drivers/iommu/iommu.c | 208 ++++++------ drivers/iommu/Makefile | 2 +- 13 files changed, 655 insertions(+), 422 deletions(-) rename drivers/iommu/{iommu-sva-lib.h => iommu-sva.h} (80%) delete mode 100644 drivers/iommu/iommu-sva-lib.c create mode 100644 drivers/iommu/iommu-sva.c -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Lu Baolu <baolu.lu@linux.intel.com> To: Joerg Roedel <joro@8bytes.org>, Jason Gunthorpe <jgg@nvidia.com>, Christoph Hellwig <hch@infradead.org>, Kevin Tian <kevin.tian@intel.com>, Ashok Raj <ashok.raj@intel.com>, Will Deacon <will@kernel.org>, Robin Murphy <robin.murphy@arm.com>, Jean-Philippe Brucker <jean-philippe@linaro.com> Cc: linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, Jacob jun Pan <jacob.jun.pan@intel.com> Subject: [PATCH RFC v2 00/11] iommu: SVA and IOPF refactoring Date: Tue, 29 Mar 2022 13:37:49 +0800 [thread overview] Message-ID: <20220329053800.3049561-1-baolu.lu@linux.intel.com> (raw) Hi, The former part of this series refactors the IOMMU SVA code by assigning an SVA type of iommu_domain to a shared virtual address and replacing sva_bind/unbind iommu ops with attach/detach_dev_pasid domain ops. The latter part changes the existing I/O page fault handling framework from only serving SVA to a generic one. Any driver or component could handle the I/O page faults for its domain in its own way by installing an I/O page fault handler. This series overlaps with another series posted here [1]. For the convenience of review, I included all relevant patches in this series. We will solve the overlap problem later. This series is also available on github here [2]. [1] https://lore.kernel.org/lkml/20220315050713.2000518-1-jacob.jun.pan@linux.intel.com/ [2] https://github.com/LuBaolu/intel-iommu/commits/iommu-sva-refactoring-v2 Please help review and suggest. Best regards, baolu Change log: v1: - https://lore.kernel.org/linux-iommu/20220320064030.2936936-1-baolu.lu@linux.intel.com/ - Initial post. v2: - Add sva domain life cycle management to avoid race between unbind and page fault handling. - Use a single domain for each mm. - Return a single sva handler for the same binding. - Add a new helper to meet singleton group requirement. - Rework the SVA domain allocation for arm smmu v3 driver and move the pasid_bit initialization to device probe. - Drop the patch "iommu: Handle IO page faults directly". - Add mmget_not_zero(mm) in SVA page fault handler. Lu Baolu (11): iommu: Add pasid_bits field in struct dev_iommu iommu: Add iommu_group_singleton_lockdown() iommu/sva: Add iommu_domain type for SVA iommu: Add attach/detach_dev_pasid domain ops iommu/vt-d: Remove SVM_FLAG_SUPERVISOR_MODE suport iommu/vt-d: Add SVA domain support arm-smmu-v3/sva: Add SVA domain support iommu/sva: Use attach/detach_pasid_dev in SVA interfaces iommu: Remove SVA related callbacks from iommu ops iommu: Per-domain I/O page fault handling iommu: Rename iommu-sva-lib.{c,h} include/linux/intel-iommu.h | 5 +- include/linux/iommu.h | 107 ++++-- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 25 +- .../iommu/{iommu-sva-lib.h => iommu-sva.h} | 12 +- .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 85 ++--- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 28 +- drivers/iommu/intel/iommu.c | 20 +- drivers/iommu/intel/svm.c | 135 +++----- drivers/iommu/io-pgfault.c | 72 +--- drivers/iommu/iommu-sva-lib.c | 71 ---- drivers/iommu/iommu-sva.c | 307 ++++++++++++++++++ drivers/iommu/iommu.c | 208 ++++++------ drivers/iommu/Makefile | 2 +- 13 files changed, 655 insertions(+), 422 deletions(-) rename drivers/iommu/{iommu-sva-lib.h => iommu-sva.h} (80%) delete mode 100644 drivers/iommu/iommu-sva-lib.c create mode 100644 drivers/iommu/iommu-sva.c -- 2.25.1 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
next reply other threads:[~2022-03-29 5:40 UTC|newest] Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-03-29 5:37 Lu Baolu [this message] 2022-03-29 5:37 ` [PATCH RFC v2 00/11] iommu: SVA and IOPF refactoring Lu Baolu 2022-03-29 5:37 ` [PATCH RFC v2 01/11] iommu: Add pasid_bits field in struct dev_iommu Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-29 21:00 ` Jacob Pan 2022-03-29 21:00 ` Jacob Pan 2022-03-30 4:30 ` Lu Baolu 2022-03-30 4:30 ` Lu Baolu 2022-03-30 7:05 ` Tian, Kevin 2022-03-30 7:05 ` Tian, Kevin 2022-03-30 11:58 ` Lu Baolu 2022-03-30 11:58 ` Lu Baolu 2022-03-29 5:37 ` [PATCH RFC v2 02/11] iommu: Add iommu_group_singleton_lockdown() Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-29 8:42 ` Tian, Kevin 2022-03-29 8:42 ` Tian, Kevin 2022-03-29 11:42 ` Jason Gunthorpe 2022-03-29 11:42 ` Jason Gunthorpe via iommu 2022-03-30 6:50 ` Tian, Kevin 2022-03-30 6:50 ` Tian, Kevin 2022-03-30 11:57 ` Lu Baolu 2022-03-30 11:57 ` Lu Baolu 2022-03-30 11:58 ` Jason Gunthorpe via iommu 2022-03-30 11:58 ` Jason Gunthorpe 2022-03-30 14:12 ` Tian, Kevin 2022-03-30 14:12 ` Tian, Kevin 2022-03-30 14:30 ` Jason Gunthorpe 2022-03-30 14:30 ` Jason Gunthorpe via iommu 2022-04-02 7:12 ` Tian, Kevin 2022-04-02 7:12 ` Tian, Kevin 2022-04-02 23:29 ` Jason Gunthorpe 2022-04-02 23:29 ` Jason Gunthorpe via iommu 2022-04-06 10:02 ` Lu Baolu 2022-04-06 10:02 ` Lu Baolu 2022-04-06 10:44 ` Tian, Kevin 2022-04-06 10:44 ` Tian, Kevin 2022-04-06 11:03 ` Lu Baolu 2022-04-06 11:03 ` Lu Baolu 2022-04-06 23:56 ` Tian, Kevin 2022-04-06 23:56 ` Tian, Kevin 2022-03-30 14:18 ` Tian, Kevin 2022-03-30 14:18 ` Tian, Kevin 2022-03-30 15:04 ` Alex Williamson 2022-03-30 15:04 ` Alex Williamson 2022-04-04 5:43 ` Lu Baolu 2022-04-04 5:43 ` Lu Baolu 2022-04-04 17:24 ` Jason Gunthorpe via iommu 2022-04-04 17:24 ` Jason Gunthorpe 2022-04-05 6:12 ` Lu Baolu 2022-04-05 6:12 ` Lu Baolu 2022-04-05 14:10 ` Jason Gunthorpe via iommu 2022-04-05 14:10 ` Jason Gunthorpe 2022-04-06 9:51 ` Lu Baolu 2022-04-06 9:51 ` Lu Baolu 2022-04-01 6:20 ` Yi Liu 2022-04-01 6:20 ` Yi Liu 2022-04-01 11:52 ` Jason Gunthorpe 2022-04-01 11:52 ` Jason Gunthorpe via iommu 2022-03-30 4:59 ` Lu Baolu 2022-03-30 4:59 ` Lu Baolu 2022-03-30 6:55 ` Tian, Kevin 2022-03-30 6:55 ` Tian, Kevin 2022-04-01 5:49 ` Yi Liu 2022-04-01 5:49 ` Yi Liu 2022-03-29 5:37 ` [PATCH RFC v2 03/11] iommu/sva: Add iommu_domain type for SVA Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-29 21:38 ` Jacob Pan 2022-03-29 21:38 ` Jacob Pan 2022-03-30 4:35 ` Lu Baolu 2022-03-30 4:35 ` Lu Baolu 2022-03-30 19:02 ` Jason Gunthorpe 2022-03-30 19:02 ` Jason Gunthorpe via iommu 2022-04-02 8:43 ` Tian, Kevin 2022-04-02 8:43 ` Tian, Kevin 2022-04-02 23:32 ` Jason Gunthorpe 2022-04-02 23:32 ` Jason Gunthorpe via iommu 2022-04-04 6:09 ` Lu Baolu 2022-04-04 6:09 ` Lu Baolu 2022-04-06 1:00 ` Tian, Kevin 2022-04-06 1:00 ` Tian, Kevin 2022-04-06 1:23 ` Jason Gunthorpe via iommu 2022-04-06 1:23 ` Jason Gunthorpe 2022-04-06 5:58 ` Tian, Kevin 2022-04-06 5:58 ` Tian, Kevin 2022-04-06 12:32 ` Robin Murphy 2022-04-06 12:32 ` Robin Murphy 2022-04-06 13:06 ` Jason Gunthorpe via iommu 2022-04-06 13:06 ` Jason Gunthorpe 2022-04-06 13:37 ` Robin Murphy 2022-04-06 13:37 ` Robin Murphy 2022-04-06 14:01 ` Jason Gunthorpe via iommu 2022-04-06 14:01 ` Jason Gunthorpe 2022-04-07 0:11 ` Tian, Kevin 2022-04-07 0:11 ` Tian, Kevin 2022-03-29 5:37 ` [PATCH RFC v2 04/11] iommu: Add attach/detach_dev_pasid domain ops Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-30 19:08 ` Jason Gunthorpe 2022-03-30 19:08 ` Jason Gunthorpe via iommu 2022-04-04 6:47 ` Lu Baolu 2022-04-04 6:47 ` Lu Baolu 2022-03-29 5:37 ` [PATCH RFC v2 05/11] iommu/vt-d: Remove SVM_FLAG_SUPERVISOR_MODE suport Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-29 5:37 ` [PATCH RFC v2 06/11] iommu/vt-d: Add SVA domain support Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-30 19:09 ` Jason Gunthorpe 2022-03-30 19:09 ` Jason Gunthorpe via iommu 2022-04-04 6:52 ` Lu Baolu 2022-04-04 6:52 ` Lu Baolu 2022-03-29 5:37 ` [PATCH RFC v2 07/11] arm-smmu-v3/sva: " Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-29 5:37 ` [PATCH RFC v2 08/11] iommu/sva: Use attach/detach_pasid_dev in SVA interfaces Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-31 20:59 ` Jacob Pan 2022-03-31 20:59 ` Jacob Pan 2022-03-31 22:26 ` Jason Gunthorpe 2022-03-31 22:26 ` Jason Gunthorpe via iommu 2022-04-04 5:55 ` Lu Baolu 2022-04-04 5:55 ` Lu Baolu 2022-03-29 5:37 ` [PATCH RFC v2 09/11] iommu: Remove SVA related callbacks from iommu ops Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-29 5:37 ` [PATCH RFC v2 10/11] iommu: Per-domain I/O page fault handling Lu Baolu 2022-03-29 5:37 ` Lu Baolu 2022-03-29 5:38 ` [PATCH RFC v2 11/11] iommu: Rename iommu-sva-lib.{c,h} Lu Baolu 2022-03-29 5:38 ` 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=20220329053800.3049561-1-baolu.lu@linux.intel.com \ --to=baolu.lu@linux.intel.com \ --cc=ashok.raj@intel.com \ --cc=eric.auger@redhat.com \ --cc=hch@infradead.org \ --cc=iommu@lists.linux-foundation.org \ --cc=jacob.jun.pan@intel.com \ --cc=jean-philippe@linaro.com \ --cc=jgg@nvidia.com \ --cc=joro@8bytes.org \ --cc=kevin.tian@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=robin.murphy@arm.com \ --cc=will@kernel.org \ --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: linkBe 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.