From: Jacob Pan <jacob.jun.pan@intel.com>
To: Lu Baolu <baolu.lu@linux.intel.com>
Cc: Kevin Tian <kevin.tian@intel.com>,
Ashok Raj <ashok.raj@intel.com>,
Robin Murphy <robin.murphy@arm.com>,
linux-kernel@vger.kernel.org,
Christoph Hellwig <hch@infradead.org>,
Jean-Philippe Brucker <jean-philippe@linaro.com>,
iommu@lists.linux-foundation.org, jacob.jun.pan@intel.com,
Jason Gunthorpe <jgg@nvidia.com>, Will Deacon <will@kernel.org>
Subject: Re: [PATCH RFC v2 03/11] iommu/sva: Add iommu_domain type for SVA
Date: Tue, 29 Mar 2022 14:38:48 -0700 [thread overview]
Message-ID: <20220329143848.2e763727@jacob-builder> (raw)
In-Reply-To: <20220329053800.3049561-4-baolu.lu@linux.intel.com>
Hi BaoLu,
On Tue, 29 Mar 2022 13:37:52 +0800, Lu Baolu <baolu.lu@linux.intel.com>
wrote:
> Add a new iommu domain type IOMMU_DOMAIN_SVA to represent an I/O page
> table which is shared from CPU host VA. Add some helpers to get and
> put an SVA domain and implement SVA domain life cycle management.
>
> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
> ---
> include/linux/iommu.h | 7 +++
> drivers/iommu/iommu-sva-lib.h | 10 ++++
> drivers/iommu/iommu-sva-lib.c | 89 +++++++++++++++++++++++++++++++++++
> 3 files changed, 106 insertions(+)
>
> diff --git a/include/linux/iommu.h b/include/linux/iommu.h
> index 36f43af0af53..29c4c2edd706 100644
> --- a/include/linux/iommu.h
> +++ b/include/linux/iommu.h
> @@ -42,6 +42,7 @@ struct notifier_block;
> struct iommu_sva;
> struct iommu_fault_event;
> struct iommu_dma_cookie;
> +struct iommu_sva_cookie;
>
> /* iommu fault flags */
> #define IOMMU_FAULT_READ 0x0
> @@ -64,6 +65,9 @@ struct iommu_domain_geometry {
> #define __IOMMU_DOMAIN_PT (1U << 2) /* Domain is identity mapped
> */ #define __IOMMU_DOMAIN_DMA_FQ (1U << 3) /* DMA-API uses
> flush queue */
> +#define __IOMMU_DOMAIN_SHARED (1U << 4) /* Page table shared
> from CPU */ +#define __IOMMU_DOMAIN_HOST_VA (1U << 5) /* Host
> CPU virtual address */ +
> /*
> * This are the possible domain-types
> *
> @@ -86,6 +90,8 @@ struct iommu_domain_geometry {
> #define IOMMU_DOMAIN_DMA_FQ (__IOMMU_DOMAIN_PAGING | \
> __IOMMU_DOMAIN_DMA_API | \
> __IOMMU_DOMAIN_DMA_FQ)
> +#define IOMMU_DOMAIN_SVA (__IOMMU_DOMAIN_SHARED | \
> + __IOMMU_DOMAIN_HOST_VA)
>
> struct iommu_domain {
> unsigned type;
> @@ -95,6 +101,7 @@ struct iommu_domain {
> void *handler_token;
> struct iommu_domain_geometry geometry;
> struct iommu_dma_cookie *iova_cookie;
> + struct iommu_sva_cookie *sva_cookie;
> };
>
> static inline bool iommu_is_dma_domain(struct iommu_domain *domain)
> diff --git a/drivers/iommu/iommu-sva-lib.h b/drivers/iommu/iommu-sva-lib.h
> index 8909ea1094e3..1a71218b07f5 100644
> --- a/drivers/iommu/iommu-sva-lib.h
> +++ b/drivers/iommu/iommu-sva-lib.h
> @@ -10,6 +10,7 @@
>
> int iommu_sva_alloc_pasid(struct mm_struct *mm, ioasid_t min, ioasid_t
> max); struct mm_struct *iommu_sva_find(ioasid_t pasid);
> +struct mm_struct *iommu_sva_domain_mm(struct iommu_domain *domain);
>
> /* I/O Page fault */
> struct device;
> @@ -26,6 +27,8 @@ int iopf_queue_flush_dev(struct device *dev);
> struct iopf_queue *iopf_queue_alloc(const char *name);
> void iopf_queue_free(struct iopf_queue *queue);
> int iopf_queue_discard_partial(struct iopf_queue *queue);
> +bool iommu_sva_domain_get_user(struct iommu_domain *domain);
> +void iommu_sva_domain_put_user(struct iommu_domain *domain);
>
> #else /* CONFIG_IOMMU_SVA */
> static inline int iommu_queue_iopf(struct iommu_fault *fault, void
> *cookie) @@ -63,5 +66,12 @@ static inline int
> iopf_queue_discard_partial(struct iopf_queue *queue) {
> return -ENODEV;
> }
> +
> +static inline bool iommu_sva_domain_get_user(struct iommu_domain *domain)
> +{
> + return false;
> +}
> +
> +static inline void iommu_sva_domain_put_user(struct iommu_domain
> *domain) { } #endif /* CONFIG_IOMMU_SVA */
> #endif /* _IOMMU_SVA_LIB_H */
> diff --git a/drivers/iommu/iommu-sva-lib.c b/drivers/iommu/iommu-sva-lib.c
> index 106506143896..78820be23f15 100644
> --- a/drivers/iommu/iommu-sva-lib.c
> +++ b/drivers/iommu/iommu-sva-lib.c
> @@ -3,12 +3,21 @@
> * Helpers for IOMMU drivers implementing SVA
> */
> #include <linux/mutex.h>
> +#include <linux/iommu.h>
> +#include <linux/slab.h>
> #include <linux/sched/mm.h>
>
> #include "iommu-sva-lib.h"
>
> static DEFINE_MUTEX(iommu_sva_lock);
> static DECLARE_IOASID_SET(iommu_sva_pasid);
> +static DEFINE_XARRAY_ALLOC(sva_domain_array);
> +
> +struct iommu_sva_cookie {
> + struct mm_struct *mm;
> + ioasid_t pasid;
> + refcount_t users;
> +};
>
> /**
> * iommu_sva_alloc_pasid - Allocate a PASID for the mm
> @@ -69,3 +78,83 @@ struct mm_struct *iommu_sva_find(ioasid_t pasid)
> return ioasid_find(&iommu_sva_pasid, pasid, __mmget_not_zero);
> }
> EXPORT_SYMBOL_GPL(iommu_sva_find);
> +
> +static struct iommu_domain *
> +iommu_sva_alloc_domain(struct device *dev, struct mm_struct *mm)
> +{
> + struct bus_type *bus = dev->bus;
> + struct iommu_sva_cookie *cookie;
> + struct iommu_domain *domain;
> + void *curr;
> +
> + if (!bus || !bus->iommu_ops)
> + return NULL;
> +
> + cookie = kzalloc(sizeof(*cookie), GFP_KERNEL);
> + if (!cookie)
> + return NULL;
> +
> + domain = bus->iommu_ops->domain_alloc(IOMMU_DOMAIN_SVA);
> + if (!domain)
> + goto err_domain_alloc;
> +
> + cookie->mm = mm;
> + cookie->pasid = mm->pasid;
How do you manage the mm life cycle? do you require caller take mm reference?
Or this should be limited to the current mm?
> + refcount_set(&cookie->users, 1);
> + domain->type = IOMMU_DOMAIN_SVA;
> + domain->sva_cookie = cookie;
> + curr = xa_store(&sva_domain_array, mm->pasid, domain,
> GFP_KERNEL);
> + if (xa_err(curr))
> + goto err_xa_store;
> +
> + return domain;
> +err_xa_store:
> + domain->ops->free(domain);
> +err_domain_alloc:
> + kfree(cookie);
> + return NULL;
> +}
> +
> +static void iommu_sva_free_domain(struct iommu_domain *domain)
> +{
> + xa_erase(&sva_domain_array, domain->sva_cookie->pasid);
> + kfree(domain->sva_cookie);
> + domain->ops->free(domain);
> +}
> +
> +bool iommu_sva_domain_get_user(struct iommu_domain *domain)
> +{
> + struct iommu_sva_cookie *cookie = domain->sva_cookie;
> +
> + return refcount_inc_not_zero(&cookie->users);
> +}
> +
> +void iommu_sva_domain_put_user(struct iommu_domain *domain)
> +{
> + struct iommu_sva_cookie *cookie = domain->sva_cookie;
> +
> + if (refcount_dec_and_test(&cookie->users))
> + iommu_sva_free_domain(domain);
> +}
> +
> +static __maybe_unused struct iommu_domain *
> +iommu_sva_get_domain(struct device *dev, struct mm_struct *mm)
> +{
> + struct iommu_domain *domain;
> + ioasid_t pasid = mm->pasid;
> +
> + if (pasid == INVALID_IOASID)
> + return NULL;
> +
> + domain = xa_load(&sva_domain_array, pasid);
> + if (!domain)
> + return iommu_sva_alloc_domain(dev, mm);
> + iommu_sva_domain_get_user(domain);
> +
> + return domain;
> +}
> +
> +struct mm_struct *iommu_sva_domain_mm(struct iommu_domain *domain)
> +{
> + return domain->sva_cookie->mm;
> +}
Thanks,
Jacob
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Jacob Pan <jacob.jun.pan@intel.com>
To: Lu Baolu <baolu.lu@linux.intel.com>
Cc: 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>,
linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
jacob.jun.pan@intel.com
Subject: Re: [PATCH RFC v2 03/11] iommu/sva: Add iommu_domain type for SVA
Date: Tue, 29 Mar 2022 14:38:48 -0700 [thread overview]
Message-ID: <20220329143848.2e763727@jacob-builder> (raw)
In-Reply-To: <20220329053800.3049561-4-baolu.lu@linux.intel.com>
Hi BaoLu,
On Tue, 29 Mar 2022 13:37:52 +0800, Lu Baolu <baolu.lu@linux.intel.com>
wrote:
> Add a new iommu domain type IOMMU_DOMAIN_SVA to represent an I/O page
> table which is shared from CPU host VA. Add some helpers to get and
> put an SVA domain and implement SVA domain life cycle management.
>
> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
> ---
> include/linux/iommu.h | 7 +++
> drivers/iommu/iommu-sva-lib.h | 10 ++++
> drivers/iommu/iommu-sva-lib.c | 89 +++++++++++++++++++++++++++++++++++
> 3 files changed, 106 insertions(+)
>
> diff --git a/include/linux/iommu.h b/include/linux/iommu.h
> index 36f43af0af53..29c4c2edd706 100644
> --- a/include/linux/iommu.h
> +++ b/include/linux/iommu.h
> @@ -42,6 +42,7 @@ struct notifier_block;
> struct iommu_sva;
> struct iommu_fault_event;
> struct iommu_dma_cookie;
> +struct iommu_sva_cookie;
>
> /* iommu fault flags */
> #define IOMMU_FAULT_READ 0x0
> @@ -64,6 +65,9 @@ struct iommu_domain_geometry {
> #define __IOMMU_DOMAIN_PT (1U << 2) /* Domain is identity mapped
> */ #define __IOMMU_DOMAIN_DMA_FQ (1U << 3) /* DMA-API uses
> flush queue */
> +#define __IOMMU_DOMAIN_SHARED (1U << 4) /* Page table shared
> from CPU */ +#define __IOMMU_DOMAIN_HOST_VA (1U << 5) /* Host
> CPU virtual address */ +
> /*
> * This are the possible domain-types
> *
> @@ -86,6 +90,8 @@ struct iommu_domain_geometry {
> #define IOMMU_DOMAIN_DMA_FQ (__IOMMU_DOMAIN_PAGING | \
> __IOMMU_DOMAIN_DMA_API | \
> __IOMMU_DOMAIN_DMA_FQ)
> +#define IOMMU_DOMAIN_SVA (__IOMMU_DOMAIN_SHARED | \
> + __IOMMU_DOMAIN_HOST_VA)
>
> struct iommu_domain {
> unsigned type;
> @@ -95,6 +101,7 @@ struct iommu_domain {
> void *handler_token;
> struct iommu_domain_geometry geometry;
> struct iommu_dma_cookie *iova_cookie;
> + struct iommu_sva_cookie *sva_cookie;
> };
>
> static inline bool iommu_is_dma_domain(struct iommu_domain *domain)
> diff --git a/drivers/iommu/iommu-sva-lib.h b/drivers/iommu/iommu-sva-lib.h
> index 8909ea1094e3..1a71218b07f5 100644
> --- a/drivers/iommu/iommu-sva-lib.h
> +++ b/drivers/iommu/iommu-sva-lib.h
> @@ -10,6 +10,7 @@
>
> int iommu_sva_alloc_pasid(struct mm_struct *mm, ioasid_t min, ioasid_t
> max); struct mm_struct *iommu_sva_find(ioasid_t pasid);
> +struct mm_struct *iommu_sva_domain_mm(struct iommu_domain *domain);
>
> /* I/O Page fault */
> struct device;
> @@ -26,6 +27,8 @@ int iopf_queue_flush_dev(struct device *dev);
> struct iopf_queue *iopf_queue_alloc(const char *name);
> void iopf_queue_free(struct iopf_queue *queue);
> int iopf_queue_discard_partial(struct iopf_queue *queue);
> +bool iommu_sva_domain_get_user(struct iommu_domain *domain);
> +void iommu_sva_domain_put_user(struct iommu_domain *domain);
>
> #else /* CONFIG_IOMMU_SVA */
> static inline int iommu_queue_iopf(struct iommu_fault *fault, void
> *cookie) @@ -63,5 +66,12 @@ static inline int
> iopf_queue_discard_partial(struct iopf_queue *queue) {
> return -ENODEV;
> }
> +
> +static inline bool iommu_sva_domain_get_user(struct iommu_domain *domain)
> +{
> + return false;
> +}
> +
> +static inline void iommu_sva_domain_put_user(struct iommu_domain
> *domain) { } #endif /* CONFIG_IOMMU_SVA */
> #endif /* _IOMMU_SVA_LIB_H */
> diff --git a/drivers/iommu/iommu-sva-lib.c b/drivers/iommu/iommu-sva-lib.c
> index 106506143896..78820be23f15 100644
> --- a/drivers/iommu/iommu-sva-lib.c
> +++ b/drivers/iommu/iommu-sva-lib.c
> @@ -3,12 +3,21 @@
> * Helpers for IOMMU drivers implementing SVA
> */
> #include <linux/mutex.h>
> +#include <linux/iommu.h>
> +#include <linux/slab.h>
> #include <linux/sched/mm.h>
>
> #include "iommu-sva-lib.h"
>
> static DEFINE_MUTEX(iommu_sva_lock);
> static DECLARE_IOASID_SET(iommu_sva_pasid);
> +static DEFINE_XARRAY_ALLOC(sva_domain_array);
> +
> +struct iommu_sva_cookie {
> + struct mm_struct *mm;
> + ioasid_t pasid;
> + refcount_t users;
> +};
>
> /**
> * iommu_sva_alloc_pasid - Allocate a PASID for the mm
> @@ -69,3 +78,83 @@ struct mm_struct *iommu_sva_find(ioasid_t pasid)
> return ioasid_find(&iommu_sva_pasid, pasid, __mmget_not_zero);
> }
> EXPORT_SYMBOL_GPL(iommu_sva_find);
> +
> +static struct iommu_domain *
> +iommu_sva_alloc_domain(struct device *dev, struct mm_struct *mm)
> +{
> + struct bus_type *bus = dev->bus;
> + struct iommu_sva_cookie *cookie;
> + struct iommu_domain *domain;
> + void *curr;
> +
> + if (!bus || !bus->iommu_ops)
> + return NULL;
> +
> + cookie = kzalloc(sizeof(*cookie), GFP_KERNEL);
> + if (!cookie)
> + return NULL;
> +
> + domain = bus->iommu_ops->domain_alloc(IOMMU_DOMAIN_SVA);
> + if (!domain)
> + goto err_domain_alloc;
> +
> + cookie->mm = mm;
> + cookie->pasid = mm->pasid;
How do you manage the mm life cycle? do you require caller take mm reference?
Or this should be limited to the current mm?
> + refcount_set(&cookie->users, 1);
> + domain->type = IOMMU_DOMAIN_SVA;
> + domain->sva_cookie = cookie;
> + curr = xa_store(&sva_domain_array, mm->pasid, domain,
> GFP_KERNEL);
> + if (xa_err(curr))
> + goto err_xa_store;
> +
> + return domain;
> +err_xa_store:
> + domain->ops->free(domain);
> +err_domain_alloc:
> + kfree(cookie);
> + return NULL;
> +}
> +
> +static void iommu_sva_free_domain(struct iommu_domain *domain)
> +{
> + xa_erase(&sva_domain_array, domain->sva_cookie->pasid);
> + kfree(domain->sva_cookie);
> + domain->ops->free(domain);
> +}
> +
> +bool iommu_sva_domain_get_user(struct iommu_domain *domain)
> +{
> + struct iommu_sva_cookie *cookie = domain->sva_cookie;
> +
> + return refcount_inc_not_zero(&cookie->users);
> +}
> +
> +void iommu_sva_domain_put_user(struct iommu_domain *domain)
> +{
> + struct iommu_sva_cookie *cookie = domain->sva_cookie;
> +
> + if (refcount_dec_and_test(&cookie->users))
> + iommu_sva_free_domain(domain);
> +}
> +
> +static __maybe_unused struct iommu_domain *
> +iommu_sva_get_domain(struct device *dev, struct mm_struct *mm)
> +{
> + struct iommu_domain *domain;
> + ioasid_t pasid = mm->pasid;
> +
> + if (pasid == INVALID_IOASID)
> + return NULL;
> +
> + domain = xa_load(&sva_domain_array, pasid);
> + if (!domain)
> + return iommu_sva_alloc_domain(dev, mm);
> + iommu_sva_domain_get_user(domain);
> +
> + return domain;
> +}
> +
> +struct mm_struct *iommu_sva_domain_mm(struct iommu_domain *domain)
> +{
> + return domain->sva_cookie->mm;
> +}
Thanks,
Jacob
next prev parent reply other threads:[~2022-03-29 21:35 UTC|newest]
Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-29 5:37 [PATCH RFC v2 00/11] iommu: SVA and IOPF refactoring Lu Baolu
2022-03-29 5:37 ` 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 via iommu
2022-03-29 11:42 ` Jason Gunthorpe
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 via iommu
2022-03-30 14:30 ` Jason Gunthorpe
2022-04-02 7:12 ` Tian, Kevin
2022-04-02 7:12 ` Tian, Kevin
2022-04-02 23:29 ` Jason Gunthorpe via iommu
2022-04-02 23:29 ` Jason Gunthorpe
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 via iommu
2022-04-01 11:52 ` Jason Gunthorpe
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 [this message]
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 via iommu
2022-03-30 19:02 ` Jason Gunthorpe
2022-04-02 8:43 ` Tian, Kevin
2022-04-02 8:43 ` Tian, Kevin
2022-04-02 23:32 ` Jason Gunthorpe via iommu
2022-04-02 23:32 ` Jason Gunthorpe
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 via iommu
2022-03-30 19:08 ` Jason Gunthorpe
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 via iommu
2022-03-30 19:09 ` Jason Gunthorpe
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 via iommu
2022-03-31 22:26 ` Jason Gunthorpe
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=20220329143848.2e763727@jacob-builder \
--to=jacob.jun.pan@intel.com \
--cc=ashok.raj@intel.com \
--cc=baolu.lu@linux.intel.com \
--cc=hch@infradead.org \
--cc=iommu@lists.linux-foundation.org \
--cc=jean-philippe@linaro.com \
--cc=jgg@nvidia.com \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robin.murphy@arm.com \
--cc=will@kernel.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.