All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jacob Pan <jacob.jun.pan@linux.intel.com>
To: LKML <linux-kernel@vger.kernel.org>,
	Joerg Roedel <joro@8bytes.org>,
	"Lu Baolu" <baolu.lu@linux.intel.com>,
	David Woodhouse <dwmw2@infradead.org>,
	iommu@lists.linux-foundation.org, cgroups@vger.kernel.org,
	Tejun Heo <tj@kernel.org>, Li Zefan <lizefan@huawei.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Jean-Philippe Brucker <jean-philippe@linaro.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
	Eric Auger <eric.auger@redhat.com>,
	Jason Gunthorpe <jgg@nvidia.com>,
	Jonathan Corbet <corbet@lwn.net>, Raj Ashok <ashok.raj@intel.com>,
	"Tian, Kevin" <kevin.tian@intel.com>, Yi Liu <yi.l.liu@intel.com>,
	Wu Hao <hao.wu@intel.com>, Dave Jiang <dave.jiang@intel.com>,
	Jacob Pan <jacob.jun.pan@linux.intel.com>
Subject: [PATCH V4 09/18] iommu/ioasid: Introduce notification APIs
Date: Sat, 27 Feb 2021 14:01:17 -0800	[thread overview]
Message-ID: <1614463286-97618-10-git-send-email-jacob.jun.pan@linux.intel.com> (raw)
In-Reply-To: <1614463286-97618-1-git-send-email-jacob.jun.pan@linux.intel.com>

Relations among IOASID users largely follow a publisher-subscriber
pattern. E.g. to support guest SVA on Intel Scalable I/O Virtualization
(SIOV) enabled platforms, VFIO, IOMMU, device drivers, KVM are all users
of IOASIDs. When a state change occurs, VFIO publishes the change event
that needs to be processed by other users/subscribers.

This patch introduced two types of notifications: global and per
ioasid_set. The latter is intended for users who only needs to handle
events related to the IOASID of a given set.
For more information, refer to the kernel documentation at
Documentation/ioasid.rst.

Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
Signed-off-by: Wu Hao <hao.wu@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
---
 drivers/iommu/ioasid.c | 111 +++++++++++++++++++++++++++++++++++++++--
 include/linux/ioasid.h |  54 ++++++++++++++++++++
 2 files changed, 161 insertions(+), 4 deletions(-)

diff --git a/drivers/iommu/ioasid.c b/drivers/iommu/ioasid.c
index 7707bb608bdd..56577e745c4b 100644
--- a/drivers/iommu/ioasid.c
+++ b/drivers/iommu/ioasid.c
@@ -10,12 +10,33 @@
 #include <linux/spinlock.h>
 #include <linux/xarray.h>
 
+/*
+ * An IOASID can have multiple consumers where each consumer may have
+ * hardware contexts associated with the IOASID.
+ * When a status change occurs, like on IOASID deallocation, notifier chains
+ * are used to keep the consumers in sync.
+ * This is a publisher-subscriber pattern where publisher can change the
+ * state of each IOASID, e.g. alloc/free, bind IOASID to a device and mm.
+ * On the other hand, subscribers get notified for the state change and
+ * keep local states in sync.
+ */
+static ATOMIC_NOTIFIER_HEAD(ioasid_notifier);
+static DEFINE_SPINLOCK(ioasid_nb_lock);
+
 /* Default to PCIe standard 20 bit PASID */
 #define PCI_PASID_MAX 0x100000
 static ioasid_t ioasid_capacity = PCI_PASID_MAX;
 static ioasid_t ioasid_capacity_avail = PCI_PASID_MAX;
 static DEFINE_XARRAY_ALLOC(ioasid_sets);
 
+struct ioasid_set_nb {
+	struct list_head	list;
+	struct notifier_block	*nb;
+	void			*token;
+	struct ioasid_set	*set;
+	bool			active;
+};
+
 enum ioasid_state {
 	IOASID_STATE_IDLE,
 	IOASID_STATE_ACTIVE,
@@ -415,6 +436,38 @@ void ioasid_detach_data(ioasid_t ioasid)
 }
 EXPORT_SYMBOL_GPL(ioasid_detach_data);
 
+/**
+ * ioasid_notify - Send notification on a given IOASID for status change.
+ *
+ * @data:	The IOASID data to which the notification will send
+ * @cmd:	Notification event sent by IOASID external users, can be
+ *		IOASID_BIND or IOASID_UNBIND.
+ *
+ * @flags:	Special instructions, e.g. notify within a set or global by
+ *		IOASID_NOTIFY_FLAG_SET or IOASID_NOTIFY_FLAG_ALL flags
+ * Caller must hold ioasid_allocator_lock and reference to the IOASID
+ */
+static int ioasid_notify(struct ioasid_data *data,
+			 enum ioasid_notify_val cmd, unsigned int flags)
+{
+	struct ioasid_nb_args args = { 0 };
+	int ret = 0;
+
+	if (flags & ~(IOASID_NOTIFY_FLAG_ALL | IOASID_NOTIFY_FLAG_SET))
+		return -EINVAL;
+
+	args.id = data->id;
+	args.set = data->set;
+	args.pdata = data->private;
+	args.spid = data->spid;
+	if (flags & IOASID_NOTIFY_FLAG_ALL)
+		ret = atomic_notifier_call_chain(&ioasid_notifier, cmd, &args);
+	if (flags & IOASID_NOTIFY_FLAG_SET)
+		ret = atomic_notifier_call_chain(&data->set->nh, cmd, &args);
+
+	return ret;
+}
+
 static ioasid_t ioasid_find_by_spid_locked(struct ioasid_set *set, ioasid_t spid, bool get)
 {
 	ioasid_t ioasid = INVALID_IOASID;
@@ -468,7 +521,7 @@ int ioasid_attach_spid(ioasid_t ioasid, ioasid_t spid)
 		goto done_unlock;
 	}
 	data->spid = spid;
-
+	ioasid_notify(data, IOASID_NOTIFY_BIND, IOASID_NOTIFY_FLAG_SET);
 done_unlock:
 	spin_unlock(&ioasid_allocator_lock);
 	return ret;
@@ -486,8 +539,8 @@ void ioasid_detach_spid(ioasid_t ioasid)
 		pr_err("Invalid IOASID entry %d to detach\n", ioasid);
 		goto done_unlock;
 	}
+	ioasid_notify(data, IOASID_NOTIFY_UNBIND, IOASID_NOTIFY_FLAG_SET);
 	data->spid = INVALID_IOASID;
-
 done_unlock:
 	spin_unlock(&ioasid_allocator_lock);
 }
@@ -603,6 +656,8 @@ struct ioasid_set *ioasid_set_alloc(void *token, ioasid_t quota, int type)
 	set->quota = quota;
 	set->id = id;
 	atomic_set(&set->nr_ioasids, 0);
+	ATOMIC_INIT_NOTIFIER_HEAD(&set->nh);
+
 	/*
 	 * Per set XA is used to store private IDs within the set, get ready
 	 * for ioasid_set private ID and system-wide IOASID allocation
@@ -655,7 +710,9 @@ int ioasid_set_free(struct ioasid_set *set)
 	int ret = 0;
 
 	spin_lock(&ioasid_allocator_lock);
+	spin_lock(&ioasid_nb_lock);
 	ret = ioasid_set_free_locked(set);
+	spin_unlock(&ioasid_nb_lock);
 	spin_unlock(&ioasid_allocator_lock);
 	return ret;
 }
@@ -728,6 +785,7 @@ ioasid_t ioasid_alloc(struct ioasid_set *set, ioasid_t min, ioasid_t max,
 		goto exit_free;
 	}
 	atomic_inc(&set->nr_ioasids);
+	ioasid_notify(data, IOASID_NOTIFY_ALLOC, IOASID_NOTIFY_FLAG_SET);
 	goto done_unlock;
 exit_free:
 	kfree(data);
@@ -780,9 +838,11 @@ static void ioasid_free_locked(struct ioasid_set *set, ioasid_t ioasid)
 	 * If the refcount is 1, it means there is no other users of the IOASID
 	 * other than IOASID core itself. There is no need to notify anyone.
 	 */
-	if (!refcount_dec_and_test(&data->refs))
+	if (!refcount_dec_and_test(&data->refs)) {
+		ioasid_notify(data, IOASID_NOTIFY_FREE,
+			IOASID_NOTIFY_FLAG_SET | IOASID_NOTIFY_FLAG_ALL);
 		return;
-
+	}
 	ioasid_do_free_locked(data);
 }
 
@@ -833,15 +893,39 @@ void ioasid_free_all_in_set(struct ioasid_set *set)
 	if (!atomic_read(&set->nr_ioasids))
 		return;
 	spin_lock(&ioasid_allocator_lock);
+	spin_lock(&ioasid_nb_lock);
 	xa_for_each(&set->xa, index, entry) {
 		ioasid_free_locked(set, index);
 		/* Free from per set private pool */
 		xa_erase(&set->xa, index);
 	}
+	spin_unlock(&ioasid_nb_lock);
 	spin_unlock(&ioasid_allocator_lock);
 }
 EXPORT_SYMBOL_GPL(ioasid_free_all_in_set);
 
+/*
+ * ioasid_find_mm_set - Retrieve IOASID set with mm token
+ * Take a reference of the set if found.
+ */
+struct ioasid_set *ioasid_find_mm_set(struct mm_struct *token)
+{
+	struct ioasid_set *set;
+	unsigned long index;
+
+	spin_lock(&ioasid_allocator_lock);
+
+	xa_for_each(&ioasid_sets, index, set) {
+		if (set->type == IOASID_SET_TYPE_MM && set->token == token)
+			goto exit_unlock;
+	}
+	set = NULL;
+exit_unlock:
+	spin_unlock(&ioasid_allocator_lock);
+	return set;
+}
+EXPORT_SYMBOL_GPL(ioasid_find_mm_set);
+
 /**
  * ioasid_set_for_each_ioasid
  * @brief
@@ -1021,6 +1105,25 @@ void *ioasid_find(struct ioasid_set *set, ioasid_t ioasid,
 }
 EXPORT_SYMBOL_GPL(ioasid_find);
 
+int ioasid_register_notifier(struct ioasid_set *set, struct notifier_block *nb)
+{
+	if (set)
+		return atomic_notifier_chain_register(&set->nh, nb);
+	else
+		return atomic_notifier_chain_register(&ioasid_notifier, nb);
+}
+EXPORT_SYMBOL_GPL(ioasid_register_notifier);
+
+void ioasid_unregister_notifier(struct ioasid_set *set,
+				struct notifier_block *nb)
+{
+	if (set)
+		atomic_notifier_chain_unregister(&set->nh, nb);
+	else
+		atomic_notifier_chain_unregister(&ioasid_notifier, nb);
+}
+EXPORT_SYMBOL_GPL(ioasid_unregister_notifier);
+
 MODULE_AUTHOR("Jean-Philippe Brucker <jean-philippe.brucker@arm.com>");
 MODULE_AUTHOR("Jacob Pan <jacob.jun.pan@linux.intel.com>");
 MODULE_DESCRIPTION("IO Address Space ID (IOASID) allocator");
diff --git a/include/linux/ioasid.h b/include/linux/ioasid.h
index dcab02886cb5..d8b85a04214f 100644
--- a/include/linux/ioasid.h
+++ b/include/linux/ioasid.h
@@ -58,6 +58,47 @@ struct ioasid_allocator_ops {
 	void *pdata;
 };
 
+/* Notification data when IOASID status changed */
+enum ioasid_notify_val {
+	IOASID_NOTIFY_ALLOC = 1,
+	IOASID_NOTIFY_FREE,
+	IOASID_NOTIFY_BIND,
+	IOASID_NOTIFY_UNBIND,
+};
+
+#define IOASID_NOTIFY_FLAG_ALL BIT(0)
+#define IOASID_NOTIFY_FLAG_SET BIT(1)
+/**
+ * enum ioasid_notifier_prios - IOASID event notification order
+ *
+ * When status of an IOASID changes, users might need to take actions to
+ * reflect the new state. For example, when an IOASID is freed due to
+ * exception, the hardware context in virtual CPU, DMA device, and IOMMU
+ * shall be cleared and drained. Order is required to prevent life cycle
+ * problems.
+ */
+enum ioasid_notifier_prios {
+	IOASID_PRIO_LAST,
+	IOASID_PRIO_DEVICE,
+	IOASID_PRIO_IOMMU,
+	IOASID_PRIO_CPU,
+};
+
+/**
+ * struct ioasid_nb_args - Argument provided by IOASID core when notifier
+ * is called.
+ * @id:		The IOASID being notified
+ * @spid:	The set private ID associated with the IOASID
+ * @set:	The IOASID set of @id
+ * @pdata:	The private data attached to the IOASID
+ */
+struct ioasid_nb_args {
+	ioasid_t id;
+	ioasid_t spid;
+	struct ioasid_set *set;
+	void *pdata;
+};
+
 #if IS_ENABLED(CONFIG_IOASID)
 void ioasid_install_capacity(ioasid_t total);
 int ioasid_reserve_capacity(ioasid_t nr_ioasid);
@@ -84,6 +125,10 @@ void ioasid_detach_data(ioasid_t ioasid);
 int ioasid_attach_spid(ioasid_t ioasid, ioasid_t spid);
 void ioasid_detach_spid(ioasid_t ioasid);
 ioasid_t ioasid_find_by_spid(struct ioasid_set *set, ioasid_t spid, bool get);
+int ioasid_register_notifier(struct ioasid_set *set,
+			struct notifier_block *nb);
+void ioasid_unregister_notifier(struct ioasid_set *set,
+				struct notifier_block *nb);
 void ioasid_set_for_each_ioasid(struct ioasid_set *sdata,
 				void (*fn)(ioasid_t id, void *data),
 				void *data);
@@ -149,6 +194,15 @@ static inline void *ioasid_find(struct ioasid_set *set, ioasid_t ioasid,
 	return NULL;
 }
 
+static inline int ioasid_register_notifier(struct notifier_block *nb)
+{
+	return -ENOTSUPP;
+}
+
+static inline void ioasid_unregister_notifier(struct notifier_block *nb)
+{
+}
+
 static inline int ioasid_register_allocator(struct ioasid_allocator_ops *allocator)
 {
 	return -ENOTSUPP;
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: Jacob Pan <jacob.jun.pan@linux.intel.com>
To: LKML <linux-kernel@vger.kernel.org>,
	Joerg Roedel <joro@8bytes.org>,
	"Lu Baolu" <baolu.lu@linux.intel.com>,
	David Woodhouse <dwmw2@infradead.org>,
	iommu@lists.linux-foundation.org, cgroups@vger.kernel.org,
	Tejun Heo <tj@kernel.org>, Li Zefan <lizefan@huawei.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Jean-Philippe Brucker <jean-philippe@linaro.com>
Cc: "Tian, Kevin" <kevin.tian@intel.com>,
	Dave Jiang <dave.jiang@intel.com>,
	Raj Ashok <ashok.raj@intel.com>, Jonathan Corbet <corbet@lwn.net>,
	Alex Williamson <alex.williamson@redhat.com>,
	Jason Gunthorpe <jgg@nvidia.com>, Wu Hao <hao.wu@intel.com>
Subject: [PATCH V4 09/18] iommu/ioasid: Introduce notification APIs
Date: Sat, 27 Feb 2021 14:01:17 -0800	[thread overview]
Message-ID: <1614463286-97618-10-git-send-email-jacob.jun.pan@linux.intel.com> (raw)
In-Reply-To: <1614463286-97618-1-git-send-email-jacob.jun.pan@linux.intel.com>

Relations among IOASID users largely follow a publisher-subscriber
pattern. E.g. to support guest SVA on Intel Scalable I/O Virtualization
(SIOV) enabled platforms, VFIO, IOMMU, device drivers, KVM are all users
of IOASIDs. When a state change occurs, VFIO publishes the change event
that needs to be processed by other users/subscribers.

This patch introduced two types of notifications: global and per
ioasid_set. The latter is intended for users who only needs to handle
events related to the IOASID of a given set.
For more information, refer to the kernel documentation at
Documentation/ioasid.rst.

Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
Signed-off-by: Wu Hao <hao.wu@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
---
 drivers/iommu/ioasid.c | 111 +++++++++++++++++++++++++++++++++++++++--
 include/linux/ioasid.h |  54 ++++++++++++++++++++
 2 files changed, 161 insertions(+), 4 deletions(-)

diff --git a/drivers/iommu/ioasid.c b/drivers/iommu/ioasid.c
index 7707bb608bdd..56577e745c4b 100644
--- a/drivers/iommu/ioasid.c
+++ b/drivers/iommu/ioasid.c
@@ -10,12 +10,33 @@
 #include <linux/spinlock.h>
 #include <linux/xarray.h>
 
+/*
+ * An IOASID can have multiple consumers where each consumer may have
+ * hardware contexts associated with the IOASID.
+ * When a status change occurs, like on IOASID deallocation, notifier chains
+ * are used to keep the consumers in sync.
+ * This is a publisher-subscriber pattern where publisher can change the
+ * state of each IOASID, e.g. alloc/free, bind IOASID to a device and mm.
+ * On the other hand, subscribers get notified for the state change and
+ * keep local states in sync.
+ */
+static ATOMIC_NOTIFIER_HEAD(ioasid_notifier);
+static DEFINE_SPINLOCK(ioasid_nb_lock);
+
 /* Default to PCIe standard 20 bit PASID */
 #define PCI_PASID_MAX 0x100000
 static ioasid_t ioasid_capacity = PCI_PASID_MAX;
 static ioasid_t ioasid_capacity_avail = PCI_PASID_MAX;
 static DEFINE_XARRAY_ALLOC(ioasid_sets);
 
+struct ioasid_set_nb {
+	struct list_head	list;
+	struct notifier_block	*nb;
+	void			*token;
+	struct ioasid_set	*set;
+	bool			active;
+};
+
 enum ioasid_state {
 	IOASID_STATE_IDLE,
 	IOASID_STATE_ACTIVE,
@@ -415,6 +436,38 @@ void ioasid_detach_data(ioasid_t ioasid)
 }
 EXPORT_SYMBOL_GPL(ioasid_detach_data);
 
+/**
+ * ioasid_notify - Send notification on a given IOASID for status change.
+ *
+ * @data:	The IOASID data to which the notification will send
+ * @cmd:	Notification event sent by IOASID external users, can be
+ *		IOASID_BIND or IOASID_UNBIND.
+ *
+ * @flags:	Special instructions, e.g. notify within a set or global by
+ *		IOASID_NOTIFY_FLAG_SET or IOASID_NOTIFY_FLAG_ALL flags
+ * Caller must hold ioasid_allocator_lock and reference to the IOASID
+ */
+static int ioasid_notify(struct ioasid_data *data,
+			 enum ioasid_notify_val cmd, unsigned int flags)
+{
+	struct ioasid_nb_args args = { 0 };
+	int ret = 0;
+
+	if (flags & ~(IOASID_NOTIFY_FLAG_ALL | IOASID_NOTIFY_FLAG_SET))
+		return -EINVAL;
+
+	args.id = data->id;
+	args.set = data->set;
+	args.pdata = data->private;
+	args.spid = data->spid;
+	if (flags & IOASID_NOTIFY_FLAG_ALL)
+		ret = atomic_notifier_call_chain(&ioasid_notifier, cmd, &args);
+	if (flags & IOASID_NOTIFY_FLAG_SET)
+		ret = atomic_notifier_call_chain(&data->set->nh, cmd, &args);
+
+	return ret;
+}
+
 static ioasid_t ioasid_find_by_spid_locked(struct ioasid_set *set, ioasid_t spid, bool get)
 {
 	ioasid_t ioasid = INVALID_IOASID;
@@ -468,7 +521,7 @@ int ioasid_attach_spid(ioasid_t ioasid, ioasid_t spid)
 		goto done_unlock;
 	}
 	data->spid = spid;
-
+	ioasid_notify(data, IOASID_NOTIFY_BIND, IOASID_NOTIFY_FLAG_SET);
 done_unlock:
 	spin_unlock(&ioasid_allocator_lock);
 	return ret;
@@ -486,8 +539,8 @@ void ioasid_detach_spid(ioasid_t ioasid)
 		pr_err("Invalid IOASID entry %d to detach\n", ioasid);
 		goto done_unlock;
 	}
+	ioasid_notify(data, IOASID_NOTIFY_UNBIND, IOASID_NOTIFY_FLAG_SET);
 	data->spid = INVALID_IOASID;
-
 done_unlock:
 	spin_unlock(&ioasid_allocator_lock);
 }
@@ -603,6 +656,8 @@ struct ioasid_set *ioasid_set_alloc(void *token, ioasid_t quota, int type)
 	set->quota = quota;
 	set->id = id;
 	atomic_set(&set->nr_ioasids, 0);
+	ATOMIC_INIT_NOTIFIER_HEAD(&set->nh);
+
 	/*
 	 * Per set XA is used to store private IDs within the set, get ready
 	 * for ioasid_set private ID and system-wide IOASID allocation
@@ -655,7 +710,9 @@ int ioasid_set_free(struct ioasid_set *set)
 	int ret = 0;
 
 	spin_lock(&ioasid_allocator_lock);
+	spin_lock(&ioasid_nb_lock);
 	ret = ioasid_set_free_locked(set);
+	spin_unlock(&ioasid_nb_lock);
 	spin_unlock(&ioasid_allocator_lock);
 	return ret;
 }
@@ -728,6 +785,7 @@ ioasid_t ioasid_alloc(struct ioasid_set *set, ioasid_t min, ioasid_t max,
 		goto exit_free;
 	}
 	atomic_inc(&set->nr_ioasids);
+	ioasid_notify(data, IOASID_NOTIFY_ALLOC, IOASID_NOTIFY_FLAG_SET);
 	goto done_unlock;
 exit_free:
 	kfree(data);
@@ -780,9 +838,11 @@ static void ioasid_free_locked(struct ioasid_set *set, ioasid_t ioasid)
 	 * If the refcount is 1, it means there is no other users of the IOASID
 	 * other than IOASID core itself. There is no need to notify anyone.
 	 */
-	if (!refcount_dec_and_test(&data->refs))
+	if (!refcount_dec_and_test(&data->refs)) {
+		ioasid_notify(data, IOASID_NOTIFY_FREE,
+			IOASID_NOTIFY_FLAG_SET | IOASID_NOTIFY_FLAG_ALL);
 		return;
-
+	}
 	ioasid_do_free_locked(data);
 }
 
@@ -833,15 +893,39 @@ void ioasid_free_all_in_set(struct ioasid_set *set)
 	if (!atomic_read(&set->nr_ioasids))
 		return;
 	spin_lock(&ioasid_allocator_lock);
+	spin_lock(&ioasid_nb_lock);
 	xa_for_each(&set->xa, index, entry) {
 		ioasid_free_locked(set, index);
 		/* Free from per set private pool */
 		xa_erase(&set->xa, index);
 	}
+	spin_unlock(&ioasid_nb_lock);
 	spin_unlock(&ioasid_allocator_lock);
 }
 EXPORT_SYMBOL_GPL(ioasid_free_all_in_set);
 
+/*
+ * ioasid_find_mm_set - Retrieve IOASID set with mm token
+ * Take a reference of the set if found.
+ */
+struct ioasid_set *ioasid_find_mm_set(struct mm_struct *token)
+{
+	struct ioasid_set *set;
+	unsigned long index;
+
+	spin_lock(&ioasid_allocator_lock);
+
+	xa_for_each(&ioasid_sets, index, set) {
+		if (set->type == IOASID_SET_TYPE_MM && set->token == token)
+			goto exit_unlock;
+	}
+	set = NULL;
+exit_unlock:
+	spin_unlock(&ioasid_allocator_lock);
+	return set;
+}
+EXPORT_SYMBOL_GPL(ioasid_find_mm_set);
+
 /**
  * ioasid_set_for_each_ioasid
  * @brief
@@ -1021,6 +1105,25 @@ void *ioasid_find(struct ioasid_set *set, ioasid_t ioasid,
 }
 EXPORT_SYMBOL_GPL(ioasid_find);
 
+int ioasid_register_notifier(struct ioasid_set *set, struct notifier_block *nb)
+{
+	if (set)
+		return atomic_notifier_chain_register(&set->nh, nb);
+	else
+		return atomic_notifier_chain_register(&ioasid_notifier, nb);
+}
+EXPORT_SYMBOL_GPL(ioasid_register_notifier);
+
+void ioasid_unregister_notifier(struct ioasid_set *set,
+				struct notifier_block *nb)
+{
+	if (set)
+		atomic_notifier_chain_unregister(&set->nh, nb);
+	else
+		atomic_notifier_chain_unregister(&ioasid_notifier, nb);
+}
+EXPORT_SYMBOL_GPL(ioasid_unregister_notifier);
+
 MODULE_AUTHOR("Jean-Philippe Brucker <jean-philippe.brucker@arm.com>");
 MODULE_AUTHOR("Jacob Pan <jacob.jun.pan@linux.intel.com>");
 MODULE_DESCRIPTION("IO Address Space ID (IOASID) allocator");
diff --git a/include/linux/ioasid.h b/include/linux/ioasid.h
index dcab02886cb5..d8b85a04214f 100644
--- a/include/linux/ioasid.h
+++ b/include/linux/ioasid.h
@@ -58,6 +58,47 @@ struct ioasid_allocator_ops {
 	void *pdata;
 };
 
+/* Notification data when IOASID status changed */
+enum ioasid_notify_val {
+	IOASID_NOTIFY_ALLOC = 1,
+	IOASID_NOTIFY_FREE,
+	IOASID_NOTIFY_BIND,
+	IOASID_NOTIFY_UNBIND,
+};
+
+#define IOASID_NOTIFY_FLAG_ALL BIT(0)
+#define IOASID_NOTIFY_FLAG_SET BIT(1)
+/**
+ * enum ioasid_notifier_prios - IOASID event notification order
+ *
+ * When status of an IOASID changes, users might need to take actions to
+ * reflect the new state. For example, when an IOASID is freed due to
+ * exception, the hardware context in virtual CPU, DMA device, and IOMMU
+ * shall be cleared and drained. Order is required to prevent life cycle
+ * problems.
+ */
+enum ioasid_notifier_prios {
+	IOASID_PRIO_LAST,
+	IOASID_PRIO_DEVICE,
+	IOASID_PRIO_IOMMU,
+	IOASID_PRIO_CPU,
+};
+
+/**
+ * struct ioasid_nb_args - Argument provided by IOASID core when notifier
+ * is called.
+ * @id:		The IOASID being notified
+ * @spid:	The set private ID associated with the IOASID
+ * @set:	The IOASID set of @id
+ * @pdata:	The private data attached to the IOASID
+ */
+struct ioasid_nb_args {
+	ioasid_t id;
+	ioasid_t spid;
+	struct ioasid_set *set;
+	void *pdata;
+};
+
 #if IS_ENABLED(CONFIG_IOASID)
 void ioasid_install_capacity(ioasid_t total);
 int ioasid_reserve_capacity(ioasid_t nr_ioasid);
@@ -84,6 +125,10 @@ void ioasid_detach_data(ioasid_t ioasid);
 int ioasid_attach_spid(ioasid_t ioasid, ioasid_t spid);
 void ioasid_detach_spid(ioasid_t ioasid);
 ioasid_t ioasid_find_by_spid(struct ioasid_set *set, ioasid_t spid, bool get);
+int ioasid_register_notifier(struct ioasid_set *set,
+			struct notifier_block *nb);
+void ioasid_unregister_notifier(struct ioasid_set *set,
+				struct notifier_block *nb);
 void ioasid_set_for_each_ioasid(struct ioasid_set *sdata,
 				void (*fn)(ioasid_t id, void *data),
 				void *data);
@@ -149,6 +194,15 @@ static inline void *ioasid_find(struct ioasid_set *set, ioasid_t ioasid,
 	return NULL;
 }
 
+static inline int ioasid_register_notifier(struct notifier_block *nb)
+{
+	return -ENOTSUPP;
+}
+
+static inline void ioasid_unregister_notifier(struct notifier_block *nb)
+{
+}
+
 static inline int ioasid_register_allocator(struct ioasid_allocator_ops *allocator)
 {
 	return -ENOTSUPP;
-- 
2.25.1

_______________________________________________
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-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Joerg Roedel <joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>,
	Lu Baolu <baolu.lu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Li Zefan <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>,
	Jean-Philippe Brucker
	<jean-philippe-68IGFXMjmZ7QT0dZR+AlfA@public.gmane.org>
Cc: "Tian,
	Kevin" <kevin.tian-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Dave Jiang <dave.jiang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Raj Ashok <ashok.raj-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Jonathan Corbet <corbet-T1hC0tSOHrs@public.gmane.org>,
	Alex Williamson
	<alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Jason Gunthorpe <jgg-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	Wu Hao <hao.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Subject: [PATCH V4 09/18] iommu/ioasid: Introduce notification APIs
Date: Sat, 27 Feb 2021 14:01:17 -0800	[thread overview]
Message-ID: <1614463286-97618-10-git-send-email-jacob.jun.pan@linux.intel.com> (raw)
In-Reply-To: <1614463286-97618-1-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>

Relations among IOASID users largely follow a publisher-subscriber
pattern. E.g. to support guest SVA on Intel Scalable I/O Virtualization
(SIOV) enabled platforms, VFIO, IOMMU, device drivers, KVM are all users
of IOASIDs. When a state change occurs, VFIO publishes the change event
that needs to be processed by other users/subscribers.

This patch introduced two types of notifications: global and per
ioasid_set. The latter is intended for users who only needs to handle
events related to the IOASID of a given set.
For more information, refer to the kernel documentation at
Documentation/ioasid.rst.

Signed-off-by: Liu Yi L <yi.l.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Signed-off-by: Wu Hao <hao.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Signed-off-by: Jacob Pan <jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
---
 drivers/iommu/ioasid.c | 111 +++++++++++++++++++++++++++++++++++++++--
 include/linux/ioasid.h |  54 ++++++++++++++++++++
 2 files changed, 161 insertions(+), 4 deletions(-)

diff --git a/drivers/iommu/ioasid.c b/drivers/iommu/ioasid.c
index 7707bb608bdd..56577e745c4b 100644
--- a/drivers/iommu/ioasid.c
+++ b/drivers/iommu/ioasid.c
@@ -10,12 +10,33 @@
 #include <linux/spinlock.h>
 #include <linux/xarray.h>
 
+/*
+ * An IOASID can have multiple consumers where each consumer may have
+ * hardware contexts associated with the IOASID.
+ * When a status change occurs, like on IOASID deallocation, notifier chains
+ * are used to keep the consumers in sync.
+ * This is a publisher-subscriber pattern where publisher can change the
+ * state of each IOASID, e.g. alloc/free, bind IOASID to a device and mm.
+ * On the other hand, subscribers get notified for the state change and
+ * keep local states in sync.
+ */
+static ATOMIC_NOTIFIER_HEAD(ioasid_notifier);
+static DEFINE_SPINLOCK(ioasid_nb_lock);
+
 /* Default to PCIe standard 20 bit PASID */
 #define PCI_PASID_MAX 0x100000
 static ioasid_t ioasid_capacity = PCI_PASID_MAX;
 static ioasid_t ioasid_capacity_avail = PCI_PASID_MAX;
 static DEFINE_XARRAY_ALLOC(ioasid_sets);
 
+struct ioasid_set_nb {
+	struct list_head	list;
+	struct notifier_block	*nb;
+	void			*token;
+	struct ioasid_set	*set;
+	bool			active;
+};
+
 enum ioasid_state {
 	IOASID_STATE_IDLE,
 	IOASID_STATE_ACTIVE,
@@ -415,6 +436,38 @@ void ioasid_detach_data(ioasid_t ioasid)
 }
 EXPORT_SYMBOL_GPL(ioasid_detach_data);
 
+/**
+ * ioasid_notify - Send notification on a given IOASID for status change.
+ *
+ * @data:	The IOASID data to which the notification will send
+ * @cmd:	Notification event sent by IOASID external users, can be
+ *		IOASID_BIND or IOASID_UNBIND.
+ *
+ * @flags:	Special instructions, e.g. notify within a set or global by
+ *		IOASID_NOTIFY_FLAG_SET or IOASID_NOTIFY_FLAG_ALL flags
+ * Caller must hold ioasid_allocator_lock and reference to the IOASID
+ */
+static int ioasid_notify(struct ioasid_data *data,
+			 enum ioasid_notify_val cmd, unsigned int flags)
+{
+	struct ioasid_nb_args args = { 0 };
+	int ret = 0;
+
+	if (flags & ~(IOASID_NOTIFY_FLAG_ALL | IOASID_NOTIFY_FLAG_SET))
+		return -EINVAL;
+
+	args.id = data->id;
+	args.set = data->set;
+	args.pdata = data->private;
+	args.spid = data->spid;
+	if (flags & IOASID_NOTIFY_FLAG_ALL)
+		ret = atomic_notifier_call_chain(&ioasid_notifier, cmd, &args);
+	if (flags & IOASID_NOTIFY_FLAG_SET)
+		ret = atomic_notifier_call_chain(&data->set->nh, cmd, &args);
+
+	return ret;
+}
+
 static ioasid_t ioasid_find_by_spid_locked(struct ioasid_set *set, ioasid_t spid, bool get)
 {
 	ioasid_t ioasid = INVALID_IOASID;
@@ -468,7 +521,7 @@ int ioasid_attach_spid(ioasid_t ioasid, ioasid_t spid)
 		goto done_unlock;
 	}
 	data->spid = spid;
-
+	ioasid_notify(data, IOASID_NOTIFY_BIND, IOASID_NOTIFY_FLAG_SET);
 done_unlock:
 	spin_unlock(&ioasid_allocator_lock);
 	return ret;
@@ -486,8 +539,8 @@ void ioasid_detach_spid(ioasid_t ioasid)
 		pr_err("Invalid IOASID entry %d to detach\n", ioasid);
 		goto done_unlock;
 	}
+	ioasid_notify(data, IOASID_NOTIFY_UNBIND, IOASID_NOTIFY_FLAG_SET);
 	data->spid = INVALID_IOASID;
-
 done_unlock:
 	spin_unlock(&ioasid_allocator_lock);
 }
@@ -603,6 +656,8 @@ struct ioasid_set *ioasid_set_alloc(void *token, ioasid_t quota, int type)
 	set->quota = quota;
 	set->id = id;
 	atomic_set(&set->nr_ioasids, 0);
+	ATOMIC_INIT_NOTIFIER_HEAD(&set->nh);
+
 	/*
 	 * Per set XA is used to store private IDs within the set, get ready
 	 * for ioasid_set private ID and system-wide IOASID allocation
@@ -655,7 +710,9 @@ int ioasid_set_free(struct ioasid_set *set)
 	int ret = 0;
 
 	spin_lock(&ioasid_allocator_lock);
+	spin_lock(&ioasid_nb_lock);
 	ret = ioasid_set_free_locked(set);
+	spin_unlock(&ioasid_nb_lock);
 	spin_unlock(&ioasid_allocator_lock);
 	return ret;
 }
@@ -728,6 +785,7 @@ ioasid_t ioasid_alloc(struct ioasid_set *set, ioasid_t min, ioasid_t max,
 		goto exit_free;
 	}
 	atomic_inc(&set->nr_ioasids);
+	ioasid_notify(data, IOASID_NOTIFY_ALLOC, IOASID_NOTIFY_FLAG_SET);
 	goto done_unlock;
 exit_free:
 	kfree(data);
@@ -780,9 +838,11 @@ static void ioasid_free_locked(struct ioasid_set *set, ioasid_t ioasid)
 	 * If the refcount is 1, it means there is no other users of the IOASID
 	 * other than IOASID core itself. There is no need to notify anyone.
 	 */
-	if (!refcount_dec_and_test(&data->refs))
+	if (!refcount_dec_and_test(&data->refs)) {
+		ioasid_notify(data, IOASID_NOTIFY_FREE,
+			IOASID_NOTIFY_FLAG_SET | IOASID_NOTIFY_FLAG_ALL);
 		return;
-
+	}
 	ioasid_do_free_locked(data);
 }
 
@@ -833,15 +893,39 @@ void ioasid_free_all_in_set(struct ioasid_set *set)
 	if (!atomic_read(&set->nr_ioasids))
 		return;
 	spin_lock(&ioasid_allocator_lock);
+	spin_lock(&ioasid_nb_lock);
 	xa_for_each(&set->xa, index, entry) {
 		ioasid_free_locked(set, index);
 		/* Free from per set private pool */
 		xa_erase(&set->xa, index);
 	}
+	spin_unlock(&ioasid_nb_lock);
 	spin_unlock(&ioasid_allocator_lock);
 }
 EXPORT_SYMBOL_GPL(ioasid_free_all_in_set);
 
+/*
+ * ioasid_find_mm_set - Retrieve IOASID set with mm token
+ * Take a reference of the set if found.
+ */
+struct ioasid_set *ioasid_find_mm_set(struct mm_struct *token)
+{
+	struct ioasid_set *set;
+	unsigned long index;
+
+	spin_lock(&ioasid_allocator_lock);
+
+	xa_for_each(&ioasid_sets, index, set) {
+		if (set->type == IOASID_SET_TYPE_MM && set->token == token)
+			goto exit_unlock;
+	}
+	set = NULL;
+exit_unlock:
+	spin_unlock(&ioasid_allocator_lock);
+	return set;
+}
+EXPORT_SYMBOL_GPL(ioasid_find_mm_set);
+
 /**
  * ioasid_set_for_each_ioasid
  * @brief
@@ -1021,6 +1105,25 @@ void *ioasid_find(struct ioasid_set *set, ioasid_t ioasid,
 }
 EXPORT_SYMBOL_GPL(ioasid_find);
 
+int ioasid_register_notifier(struct ioasid_set *set, struct notifier_block *nb)
+{
+	if (set)
+		return atomic_notifier_chain_register(&set->nh, nb);
+	else
+		return atomic_notifier_chain_register(&ioasid_notifier, nb);
+}
+EXPORT_SYMBOL_GPL(ioasid_register_notifier);
+
+void ioasid_unregister_notifier(struct ioasid_set *set,
+				struct notifier_block *nb)
+{
+	if (set)
+		atomic_notifier_chain_unregister(&set->nh, nb);
+	else
+		atomic_notifier_chain_unregister(&ioasid_notifier, nb);
+}
+EXPORT_SYMBOL_GPL(ioasid_unregister_notifier);
+
 MODULE_AUTHOR("Jean-Philippe Brucker <jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>");
 MODULE_AUTHOR("Jacob Pan <jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>");
 MODULE_DESCRIPTION("IO Address Space ID (IOASID) allocator");
diff --git a/include/linux/ioasid.h b/include/linux/ioasid.h
index dcab02886cb5..d8b85a04214f 100644
--- a/include/linux/ioasid.h
+++ b/include/linux/ioasid.h
@@ -58,6 +58,47 @@ struct ioasid_allocator_ops {
 	void *pdata;
 };
 
+/* Notification data when IOASID status changed */
+enum ioasid_notify_val {
+	IOASID_NOTIFY_ALLOC = 1,
+	IOASID_NOTIFY_FREE,
+	IOASID_NOTIFY_BIND,
+	IOASID_NOTIFY_UNBIND,
+};
+
+#define IOASID_NOTIFY_FLAG_ALL BIT(0)
+#define IOASID_NOTIFY_FLAG_SET BIT(1)
+/**
+ * enum ioasid_notifier_prios - IOASID event notification order
+ *
+ * When status of an IOASID changes, users might need to take actions to
+ * reflect the new state. For example, when an IOASID is freed due to
+ * exception, the hardware context in virtual CPU, DMA device, and IOMMU
+ * shall be cleared and drained. Order is required to prevent life cycle
+ * problems.
+ */
+enum ioasid_notifier_prios {
+	IOASID_PRIO_LAST,
+	IOASID_PRIO_DEVICE,
+	IOASID_PRIO_IOMMU,
+	IOASID_PRIO_CPU,
+};
+
+/**
+ * struct ioasid_nb_args - Argument provided by IOASID core when notifier
+ * is called.
+ * @id:		The IOASID being notified
+ * @spid:	The set private ID associated with the IOASID
+ * @set:	The IOASID set of @id
+ * @pdata:	The private data attached to the IOASID
+ */
+struct ioasid_nb_args {
+	ioasid_t id;
+	ioasid_t spid;
+	struct ioasid_set *set;
+	void *pdata;
+};
+
 #if IS_ENABLED(CONFIG_IOASID)
 void ioasid_install_capacity(ioasid_t total);
 int ioasid_reserve_capacity(ioasid_t nr_ioasid);
@@ -84,6 +125,10 @@ void ioasid_detach_data(ioasid_t ioasid);
 int ioasid_attach_spid(ioasid_t ioasid, ioasid_t spid);
 void ioasid_detach_spid(ioasid_t ioasid);
 ioasid_t ioasid_find_by_spid(struct ioasid_set *set, ioasid_t spid, bool get);
+int ioasid_register_notifier(struct ioasid_set *set,
+			struct notifier_block *nb);
+void ioasid_unregister_notifier(struct ioasid_set *set,
+				struct notifier_block *nb);
 void ioasid_set_for_each_ioasid(struct ioasid_set *sdata,
 				void (*fn)(ioasid_t id, void *data),
 				void *data);
@@ -149,6 +194,15 @@ static inline void *ioasid_find(struct ioasid_set *set, ioasid_t ioasid,
 	return NULL;
 }
 
+static inline int ioasid_register_notifier(struct notifier_block *nb)
+{
+	return -ENOTSUPP;
+}
+
+static inline void ioasid_unregister_notifier(struct notifier_block *nb)
+{
+}
+
 static inline int ioasid_register_allocator(struct ioasid_allocator_ops *allocator)
 {
 	return -ENOTSUPP;
-- 
2.25.1

  parent reply	other threads:[~2021-02-28  6:39 UTC|newest]

Thread overview: 794+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-27 22:01 [PATCH V4 00/18] IOASID extensions for guest SVA Jacob Pan
2021-02-27 22:01 ` Jacob Pan
2021-02-27 22:01 ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 01/18] docs: Document IO Address Space ID (IOASID) APIs Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 02/18] iommu/ioasid: Rename ioasid_set_data() Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 03/18] iommu/ioasid: Add a separate function for detach data Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 04/18] iommu/ioasid: Support setting system-wide capacity Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 05/18] iommu/ioasid: Redefine IOASID set and allocation APIs Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-03-19  0:22   ` Jacob Pan
2021-03-19  0:22     ` Jacob Pan
2021-03-19  0:22     ` Jacob Pan
2021-03-19  9:58     ` Jean-Philippe Brucker
2021-03-19  9:58       ` Jean-Philippe Brucker
2021-03-19  9:58       ` Jean-Philippe Brucker
2021-03-19 12:46       ` Jason Gunthorpe
2021-03-19 12:46         ` Jason Gunthorpe
2021-03-19 12:46         ` Jason Gunthorpe
2021-03-19 13:41         ` Jean-Philippe Brucker
2021-03-19 13:41           ` Jean-Philippe Brucker
2021-03-19 13:41           ` Jean-Philippe Brucker
2021-03-19 13:54           ` Jason Gunthorpe
2021-03-19 13:54             ` Jason Gunthorpe
2021-03-19 13:54             ` Jason Gunthorpe
2021-03-19 18:22             ` Jacob Pan
2021-03-19 18:22               ` Jacob Pan
2021-03-19 18:22               ` Jacob Pan
2021-03-22  9:24               ` Jean-Philippe Brucker
2021-03-22  9:24                 ` Jean-Philippe Brucker
2021-03-22  9:24                 ` Jean-Philippe Brucker
2021-03-24 17:02                 ` Jacob Pan
2021-03-24 17:02                   ` Jacob Pan
2021-03-24 17:02                   ` Jacob Pan
2021-03-24 17:03                   ` Jason Gunthorpe
2021-03-24 17:03                     ` Jason Gunthorpe
2021-03-24 17:03                     ` Jason Gunthorpe
2021-03-24 22:12                     ` Jacob Pan
2021-03-24 22:12                       ` Jacob Pan
2021-03-24 22:12                       ` Jacob Pan
2021-03-25 10:21                       ` Jean-Philippe Brucker
2021-03-25 10:21                         ` Jean-Philippe Brucker
2021-03-25 10:21                         ` Jean-Philippe Brucker
2021-03-25 17:02                         ` Jacob Pan
2021-03-25 17:02                           ` Jacob Pan
2021-03-25 17:02                           ` Jacob Pan
2021-03-25 17:16                           ` Jason Gunthorpe
2021-03-25 17:16                             ` Jason Gunthorpe
2021-03-25 17:16                             ` Jason Gunthorpe
2021-03-25 18:23                             ` Jacob Pan
2021-03-25 18:23                               ` Jacob Pan
2021-03-25 18:23                               ` Jacob Pan
2021-03-26  8:06                             ` Jean-Philippe Brucker
2021-03-26  8:06                               ` Jean-Philippe Brucker
2021-03-26  8:06                               ` Jean-Philippe Brucker
2021-03-30 13:07                               ` Jason Gunthorpe
2021-03-30 13:07                                 ` Jason Gunthorpe
2021-03-30 13:07                                 ` Jason Gunthorpe
2021-03-30 13:42                                 ` Jean-Philippe Brucker
2021-03-30 13:42                                   ` Jean-Philippe Brucker
2021-03-30 13:42                                   ` Jean-Philippe Brucker
2021-03-30 13:46                                   ` Jason Gunthorpe
2021-03-30 13:46                                     ` Jason Gunthorpe
2021-03-30 13:46                                     ` Jason Gunthorpe
2021-03-25 10:26                   ` Jean-Philippe Brucker
2021-03-25 10:26                     ` Jean-Philippe Brucker
2021-03-25 10:26                     ` Jean-Philippe Brucker
2021-03-22 12:03               ` Jason Gunthorpe
2021-03-22 12:03                 ` Jason Gunthorpe
2021-03-22 12:03                 ` Jason Gunthorpe
2021-03-24 19:05                 ` Jacob Pan
2021-03-24 19:05                   ` Jacob Pan
2021-03-24 19:05                   ` Jacob Pan
2021-03-29 16:31                   ` Jason Gunthorpe
2021-03-29 16:31                     ` Jason Gunthorpe
2021-03-29 16:31                     ` Jason Gunthorpe
2021-03-29 22:55                     ` Jacob Pan
2021-03-29 22:55                       ` Jacob Pan
2021-03-29 22:55                       ` Jacob Pan
2021-03-30 13:43                       ` Jason Gunthorpe
2021-03-30 13:43                         ` Jason Gunthorpe
2021-03-30 13:43                         ` Jason Gunthorpe
2021-03-31  0:10                         ` Jacob Pan
2021-03-31  0:10                           ` Jacob Pan
2021-03-31  0:10                           ` Jacob Pan
2021-03-31 12:28                           ` Jason Gunthorpe
2021-03-31 12:28                             ` Jason Gunthorpe
2021-03-31 12:28                             ` Jason Gunthorpe
2021-03-31 16:34                             ` Jacob Pan
2021-03-31 16:34                               ` Jacob Pan
2021-03-31 16:34                               ` Jacob Pan
2021-03-31 17:31                               ` Jason Gunthorpe
2021-03-31 17:31                                 ` Jason Gunthorpe
2021-03-31 17:31                                 ` Jason Gunthorpe
2021-03-31 18:20                                 ` Jacob Pan
2021-03-31 18:20                                   ` Jacob Pan
2021-03-31 18:20                                   ` Jacob Pan
2021-03-31 18:33                                   ` Jason Gunthorpe
2021-03-31 18:33                                     ` Jason Gunthorpe
2021-03-31 18:33                                     ` Jason Gunthorpe
2021-03-31 21:50                                     ` Jacob Pan
2021-03-31 21:50                                       ` Jacob Pan
2021-03-31 21:50                                       ` Jacob Pan
2021-03-31  8:38                         ` Liu, Yi L
2021-03-31  8:38                           ` Liu, Yi L
2021-03-31  8:38                           ` Liu, Yi L
2021-03-30  1:37                     ` Tian, Kevin
2021-03-30  1:37                       ` Tian, Kevin
2021-03-30  1:37                       ` Tian, Kevin
2021-03-30 13:28                       ` Jason Gunthorpe
2021-03-30 13:28                         ` Jason Gunthorpe
2021-03-30 13:28                         ` Jason Gunthorpe
2021-03-31  7:38                         ` Liu, Yi L
2021-03-31  7:38                           ` Liu, Yi L
2021-03-31  7:38                           ` Liu, Yi L
2021-03-31 12:40                           ` Jason Gunthorpe
2021-03-31 12:40                             ` Jason Gunthorpe
2021-03-31 12:40                             ` Jason Gunthorpe
2021-04-01  4:38                             ` Liu, Yi L
2021-04-01  4:38                               ` Liu, Yi L
2021-04-01  4:38                               ` Liu, Yi L
2021-04-01  7:04                               ` Liu, Yi L
2021-04-01  7:04                                 ` Liu, Yi L
2021-04-01  7:04                                 ` Liu, Yi L
2021-04-01 11:54                                 ` Jason Gunthorpe
2021-04-01 11:54                                   ` Jason Gunthorpe
2021-04-01 11:54                                   ` Jason Gunthorpe
2021-04-02 12:46                                   ` Liu, Yi L
2021-04-02 12:46                                     ` Liu, Yi L
2021-04-02 12:46                                     ` Liu, Yi L
2021-04-01 12:05                                 ` Jean-Philippe Brucker
2021-04-01 12:05                                   ` Jean-Philippe Brucker
2021-04-01 12:05                                   ` Jean-Philippe Brucker
2021-04-01 12:12                                   ` Jason Gunthorpe
2021-04-01 12:12                                     ` Jason Gunthorpe
2021-04-01 12:12                                     ` Jason Gunthorpe
2021-04-01 13:38                                   ` Liu, Yi L
2021-04-01 13:38                                     ` Liu, Yi L
2021-04-01 13:38                                     ` Liu, Yi L
2021-04-01 13:42                                     ` Jason Gunthorpe
2021-04-01 13:42                                       ` Jason Gunthorpe
2021-04-01 13:42                                       ` Jason Gunthorpe
2021-04-01 14:08                                       ` Liu, Yi L
2021-04-01 14:08                                         ` Liu, Yi L
2021-04-01 14:08                                         ` Liu, Yi L
2021-04-01 16:03                                         ` Jason Gunthorpe
2021-04-01 16:03                                           ` Jason Gunthorpe
2021-04-01 16:03                                           ` Jason Gunthorpe
2021-04-02  7:30                                           ` Tian, Kevin
2021-04-02  7:30                                             ` Tian, Kevin
2021-04-02  7:30                                             ` Tian, Kevin
2021-04-05 23:35                                             ` Jason Gunthorpe
2021-04-05 23:35                                               ` Jason Gunthorpe
2021-04-05 23:35                                               ` Jason Gunthorpe
2021-04-06  0:37                                               ` Tian, Kevin
2021-04-06  0:37                                                 ` Tian, Kevin
2021-04-06  0:37                                                 ` Tian, Kevin
2021-04-06 12:15                                                 ` Jason Gunthorpe
2021-04-06 12:15                                                   ` Jason Gunthorpe
2021-04-06 12:15                                                   ` Jason Gunthorpe
2021-04-15 13:11                                           ` Auger Eric
2021-04-15 13:11                                             ` Auger Eric
2021-04-15 23:07                                             ` Jason Gunthorpe
2021-04-15 23:07                                               ` Jason Gunthorpe
2021-04-15 23:07                                               ` Jason Gunthorpe
2021-04-16 13:12                                               ` Jacob Pan
2021-04-16 13:12                                                 ` Jacob Pan
2021-04-16 13:12                                                 ` Jacob Pan
2021-04-16 15:45                                                 ` Alex Williamson
2021-04-16 15:45                                                   ` Alex Williamson
2021-04-16 17:23                                                   ` Jacob Pan
2021-04-16 17:23                                                     ` Jacob Pan
2021-04-16 17:23                                                     ` Jacob Pan
2021-04-16 17:54                                                     ` Jason Gunthorpe
2021-04-16 17:54                                                       ` Jason Gunthorpe
2021-04-16 17:54                                                       ` Jason Gunthorpe
2021-04-21 13:18                                                   ` Liu, Yi L
2021-04-21 13:18                                                     ` Liu, Yi L
2021-04-21 13:18                                                     ` Liu, Yi L
2021-04-21 16:23                                                     ` Jason Gunthorpe
2021-04-21 16:23                                                       ` Jason Gunthorpe
2021-04-21 16:23                                                       ` Jason Gunthorpe
2021-04-21 16:54                                                       ` Alex Williamson
2021-04-21 16:54                                                         ` Alex Williamson
2021-04-21 17:52                                                         ` Jason Gunthorpe
2021-04-21 17:52                                                           ` Jason Gunthorpe
2021-04-21 17:52                                                           ` Jason Gunthorpe
2021-04-21 19:33                                                           ` Alex Williamson
2021-04-21 19:33                                                             ` Alex Williamson
2021-04-21 19:33                                                             ` Alex Williamson
2021-04-21 23:03                                                             ` Jason Gunthorpe
2021-04-21 23:03                                                               ` Jason Gunthorpe
2021-04-21 23:03                                                               ` Jason Gunthorpe
2021-04-22  8:34                                                               ` Tian, Kevin
2021-04-22  8:34                                                                 ` Tian, Kevin
2021-04-22  8:34                                                                 ` Tian, Kevin
2021-04-22 12:10                                                                 ` Jason Gunthorpe
2021-04-22 12:10                                                                   ` Jason Gunthorpe
2021-04-23  9:06                                                                   ` Tian, Kevin
2021-04-23  9:06                                                                     ` Tian, Kevin
2021-04-23  9:06                                                                     ` Tian, Kevin
2021-04-23 11:49                                                                     ` Jason Gunthorpe
2021-04-23 11:49                                                                       ` Jason Gunthorpe
2021-04-25  9:24                                                                       ` Tian, Kevin
2021-04-25  9:24                                                                         ` Tian, Kevin
2021-04-25  9:24                                                                         ` Tian, Kevin
2021-04-26 12:38                                                                         ` Jason Gunthorpe
2021-04-26 12:38                                                                           ` Jason Gunthorpe
2021-04-26 12:38                                                                           ` Jason Gunthorpe
2021-04-28  6:34                                                                           ` Tian, Kevin
2021-04-28  6:34                                                                             ` Tian, Kevin
2021-04-28  6:34                                                                             ` Tian, Kevin
2021-04-28 15:06                                                                             ` Alex Williamson
2021-04-28 15:06                                                                               ` Alex Williamson
2021-05-07  7:36                                                                               ` Tian, Kevin
2021-05-07  7:36                                                                                 ` Tian, Kevin
2021-05-07  7:36                                                                                 ` Tian, Kevin
2021-05-07 11:56                                                                                 ` Jason Gunthorpe
2021-05-07 11:56                                                                                   ` Jason Gunthorpe
2021-05-07 11:56                                                                                   ` Jason Gunthorpe
2021-05-07 17:06                                                                                 ` Alex Williamson
2021-05-07 17:06                                                                                   ` Alex Williamson
2021-05-07 17:06                                                                                   ` Alex Williamson
2021-05-07 17:10                                                                                   ` Jason Gunthorpe
2021-05-07 17:10                                                                                     ` Jason Gunthorpe
2021-05-07 17:10                                                                                     ` Jason Gunthorpe
2021-05-08  6:08                                                                                     ` Tian, Kevin
2021-05-08  6:08                                                                                       ` Tian, Kevin
2021-05-08  7:31                                                                                   ` Tian, Kevin
2021-05-08  7:31                                                                                     ` Tian, Kevin
2021-05-08  7:31                                                                                     ` Tian, Kevin
2021-05-10  2:56                                                                                     ` Lu Baolu
2021-05-10  2:56                                                                                       ` Lu Baolu
2021-05-10  2:56                                                                                       ` Lu Baolu
2021-04-28 20:46                                                                             ` Jason Gunthorpe
2021-04-28 20:46                                                                               ` Jason Gunthorpe
2021-04-28 20:46                                                                               ` Jason Gunthorpe
2021-05-04 16:22                                                                               ` Jacob Pan
2021-05-04 16:22                                                                                 ` Jacob Pan
2021-05-04 16:22                                                                                 ` Jacob Pan
2021-05-04 16:31                                                                                 ` Jason Gunthorpe
2021-05-04 16:31                                                                                   ` Jason Gunthorpe
2021-05-04 16:31                                                                                   ` Jason Gunthorpe
2021-05-08  5:46                                                                               ` Tian, Kevin
2021-05-08  5:46                                                                                 ` Tian, Kevin
2021-05-08  5:46                                                                                 ` Tian, Kevin
2021-05-04 15:41                                                                             ` Jacob Pan
2021-05-04 15:41                                                                               ` Jacob Pan
2021-05-04 15:41                                                                               ` Jacob Pan
2021-05-04 18:00                                                                               ` Jason Gunthorpe
2021-05-04 18:00                                                                                 ` Jason Gunthorpe
2021-05-04 18:00                                                                                 ` Jason Gunthorpe
2021-05-04 22:11                                                                                 ` Jacob Pan
2021-05-04 22:11                                                                                   ` Jacob Pan
2021-05-04 22:11                                                                                   ` Jacob Pan
2021-05-04 23:15                                                                                   ` Jason Gunthorpe
2021-05-04 23:15                                                                                     ` Jason Gunthorpe
2021-05-04 23:15                                                                                     ` Jason Gunthorpe
2021-05-05 17:22                                                                                     ` Jacob Pan
2021-05-05 17:22                                                                                       ` Jacob Pan
2021-05-05 17:22                                                                                       ` Jacob Pan
2021-05-05 18:00                                                                                       ` Jason Gunthorpe
2021-05-05 18:00                                                                                         ` Jason Gunthorpe
2021-05-05 18:00                                                                                         ` Jason Gunthorpe
2021-05-05 20:04                                                                                         ` Jacob Pan
2021-05-05 20:04                                                                                           ` Jacob Pan
2021-05-05 20:04                                                                                           ` Jacob Pan
2021-05-05 22:21                                                                                           ` Jason Gunthorpe
2021-05-05 22:21                                                                                             ` Jason Gunthorpe
2021-05-05 22:21                                                                                             ` Jason Gunthorpe
2021-05-05 23:23                                                                                             ` Raj, Ashok
2021-05-05 23:23                                                                                               ` Raj, Ashok
2021-05-05 23:23                                                                                               ` Raj, Ashok
2021-05-06 12:22                                                                                               ` Jason Gunthorpe
2021-05-06 12:22                                                                                                 ` Jason Gunthorpe
2021-05-06 12:22                                                                                                 ` Jason Gunthorpe
2021-05-08  7:06                                                                                             ` Liu Yi L
2021-05-08  7:06                                                                                               ` Liu Yi L
2021-05-08  7:06                                                                                               ` Liu Yi L
2021-05-06  7:23                                                                                           ` Jean-Philippe Brucker
2021-05-06  7:23                                                                                             ` Jean-Philippe Brucker
2021-05-06  7:23                                                                                             ` Jean-Philippe Brucker
2021-05-06 12:27                                                                                             ` Jason Gunthorpe
2021-05-06 12:27                                                                                               ` Jason Gunthorpe
2021-05-06 12:27                                                                                               ` Jason Gunthorpe
2021-05-06 16:32                                                                                               ` Raj, Ashok
2021-05-06 16:32                                                                                                 ` Raj, Ashok
2021-05-06 16:32                                                                                                 ` Raj, Ashok
2021-05-07 17:20                                                                                                 ` Jason Gunthorpe
2021-05-07 17:20                                                                                                   ` Jason Gunthorpe
2021-05-07 17:20                                                                                                   ` Jason Gunthorpe
2021-05-07 18:14                                                                                                   ` Raj, Ashok
2021-05-07 18:14                                                                                                     ` Raj, Ashok
2021-05-07 18:14                                                                                                     ` Raj, Ashok
2021-05-07 18:20                                                                                                     ` Jason Gunthorpe
2021-05-07 18:20                                                                                                       ` Jason Gunthorpe
2021-05-07 18:20                                                                                                       ` Jason Gunthorpe
2021-05-07 19:23                                                                                                       ` Raj, Ashok
2021-05-07 19:23                                                                                                         ` Raj, Ashok
2021-05-07 19:23                                                                                                         ` Raj, Ashok
2021-05-07 19:28                                                                                                         ` Jason Gunthorpe
2021-05-07 19:28                                                                                                           ` Jason Gunthorpe
2021-05-07 19:28                                                                                                           ` Jason Gunthorpe
2021-05-07 22:15                                                                                                           ` Jacob Pan
2021-05-07 22:15                                                                                                             ` Jacob Pan
2021-05-07 22:15                                                                                                             ` Jacob Pan
2021-05-08  9:56                                                                                                 ` Tian, Kevin
2021-05-08  9:56                                                                                                   ` Tian, Kevin
2021-05-08  9:56                                                                                                   ` Tian, Kevin
2021-05-10 12:37                                                                                                   ` Jason Gunthorpe
2021-05-10 12:37                                                                                                     ` Jason Gunthorpe
2021-05-10 12:37                                                                                                     ` Jason Gunthorpe
2021-05-10 15:25                                                                                                     ` Raj, Ashok
2021-05-10 15:25                                                                                                       ` Raj, Ashok
2021-05-10 15:25                                                                                                       ` Raj, Ashok
2021-05-10 15:31                                                                                                       ` Jason Gunthorpe
2021-05-10 15:31                                                                                                         ` Jason Gunthorpe
2021-05-10 15:31                                                                                                         ` Jason Gunthorpe
2021-05-10 16:22                                                                                                         ` Raj, Ashok
2021-05-10 16:22                                                                                                           ` Raj, Ashok
2021-05-10 16:22                                                                                                           ` Raj, Ashok
2021-05-10 16:39                                                                                                           ` Jason Gunthorpe
2021-05-10 16:39                                                                                                             ` Jason Gunthorpe
2021-05-10 16:39                                                                                                             ` Jason Gunthorpe
2021-05-10 22:28                                                                                                             ` Jacob Pan
2021-05-10 22:28                                                                                                               ` Jacob Pan
2021-05-10 22:28                                                                                                               ` Jacob Pan
2021-05-10 23:45                                                                                                               ` Jason Gunthorpe
2021-05-10 23:45                                                                                                                 ` Jason Gunthorpe
2021-05-10 23:45                                                                                                                 ` Jason Gunthorpe
2021-05-11  3:56                                                                                                                 ` Jacob Pan
2021-05-11  3:56                                                                                                                   ` Jacob Pan
2021-05-11  3:56                                                                                                                   ` Jacob Pan
2021-05-11  9:10                                                                                                     ` Tian, Kevin
2021-05-11  9:10                                                                                                       ` Tian, Kevin
2021-05-11  9:10                                                                                                       ` Tian, Kevin
2021-05-11 13:24                                                                                                       ` Liu Yi L
2021-05-11 13:24                                                                                                         ` Liu Yi L
2021-05-11 13:24                                                                                                         ` Liu Yi L
2021-05-11 22:52                                                                                                         ` Tian, Kevin
2021-05-11 22:52                                                                                                           ` Tian, Kevin
2021-05-11 22:52                                                                                                           ` Tian, Kevin
2021-05-11 14:38                                                                                                       ` Jason Gunthorpe
2021-05-11 14:38                                                                                                         ` Jason Gunthorpe
2021-05-11 14:38                                                                                                         ` Jason Gunthorpe
2021-05-11 22:51                                                                                                         ` Tian, Kevin
2021-05-11 22:51                                                                                                           ` Tian, Kevin
2021-05-11 22:51                                                                                                           ` Tian, Kevin
2021-05-11 23:39                                                                                                           ` Jason Gunthorpe
2021-05-11 23:39                                                                                                             ` Jason Gunthorpe
2021-05-12  0:21                                                                                                             ` Tian, Kevin
2021-05-12  0:21                                                                                                               ` Tian, Kevin
2021-05-12  0:21                                                                                                               ` Tian, Kevin
2021-05-12  0:25                                                                                                               ` Jason Gunthorpe
2021-05-12  0:25                                                                                                                 ` Jason Gunthorpe
2021-05-12  0:40                                                                                                                 ` Tian, Kevin
2021-05-12  0:40                                                                                                                   ` Tian, Kevin
2021-05-12  0:40                                                                                                                   ` Tian, Kevin
2021-04-29  8:54                                                                       ` Auger Eric
2021-04-29  8:54                                                                         ` Auger Eric
2021-04-29  8:54                                                                         ` Auger Eric
2021-04-29  8:55                                                                   ` Auger Eric
2021-04-29  8:55                                                                     ` Auger Eric
2021-04-29  8:55                                                                     ` Auger Eric
2021-04-29 13:26                                                                   ` Auger Eric
2021-04-29 13:26                                                                     ` Auger Eric
2021-04-29 13:26                                                                     ` Auger Eric
2021-04-29 20:04                                                                     ` Jason Gunthorpe
2021-04-29 20:04                                                                       ` Jason Gunthorpe
2021-04-29 20:04                                                                       ` Jason Gunthorpe
2021-05-05  9:10                                                                       ` Auger Eric
2021-05-05  9:10                                                                         ` Auger Eric
2021-05-05  9:10                                                                         ` Auger Eric
2021-04-22 17:13                                                               ` Alex Williamson
2021-04-22 17:13                                                                 ` Alex Williamson
2021-04-22 17:13                                                                 ` Alex Williamson
2021-04-22 17:57                                                                 ` Jason Gunthorpe
2021-04-22 17:57                                                                   ` Jason Gunthorpe
2021-04-22 17:57                                                                   ` Jason Gunthorpe
2021-04-22 19:37                                                                   ` Alex Williamson
2021-04-22 19:37                                                                     ` Alex Williamson
2021-04-22 19:37                                                                     ` Alex Williamson
2021-04-22 20:00                                                                     ` Jason Gunthorpe
2021-04-22 20:00                                                                       ` Jason Gunthorpe
2021-04-22 20:00                                                                       ` Jason Gunthorpe
2021-04-22 22:38                                                                       ` Alex Williamson
2021-04-22 22:38                                                                         ` Alex Williamson
2021-04-22 22:38                                                                         ` Alex Williamson
2021-04-22 23:39                                                                         ` Jason Gunthorpe
2021-04-22 23:39                                                                           ` Jason Gunthorpe
2021-04-22 23:39                                                                           ` Jason Gunthorpe
2021-04-23 10:31                                                                           ` Tian, Kevin
2021-04-23 10:31                                                                             ` Tian, Kevin
2021-04-23 10:31                                                                             ` Tian, Kevin
2021-04-23 11:57                                                                             ` Jason Gunthorpe
2021-04-23 11:57                                                                               ` Jason Gunthorpe
2021-04-23 11:57                                                                               ` Jason Gunthorpe
2021-04-27  5:11                                                                             ` David Gibson
2021-04-27  5:11                                                                               ` David Gibson
2021-04-27  5:11                                                                               ` David Gibson
2021-04-27 16:39                                                                               ` Jason Gunthorpe
2021-04-27 16:39                                                                                 ` Jason Gunthorpe
2021-04-27 16:39                                                                                 ` Jason Gunthorpe
2021-04-28  0:49                                                                                 ` David Gibson
2021-04-28  0:49                                                                                   ` David Gibson
2021-04-28  0:49                                                                                   ` David Gibson
2021-04-23 16:38                                                                           ` Alex Williamson
2021-04-23 16:38                                                                             ` Alex Williamson
2021-04-23 16:38                                                                             ` Alex Williamson
2021-04-23 22:28                                                                             ` Jason Gunthorpe
2021-04-23 22:28                                                                               ` Jason Gunthorpe
2021-04-23 22:28                                                                               ` Jason Gunthorpe
2021-04-27  5:15                                                                               ` David Gibson
2021-04-27  5:15                                                                                 ` David Gibson
2021-04-27  5:15                                                                                 ` David Gibson
2021-04-27  5:08                                                                           ` David Gibson
2021-04-27  5:08                                                                             ` David Gibson
2021-04-27  5:08                                                                             ` David Gibson
2021-04-27 17:12                                                                             ` Jason Gunthorpe
2021-04-27 17:12                                                                               ` Jason Gunthorpe
2021-04-27 17:12                                                                               ` Jason Gunthorpe
2021-04-28  0:58                                                                               ` David Gibson
2021-04-28  0:58                                                                                 ` David Gibson
2021-04-28  0:58                                                                                 ` David Gibson
2021-04-28 14:56                                                                                 ` Jason Gunthorpe
2021-04-28 14:56                                                                                   ` Jason Gunthorpe
2021-04-28 14:56                                                                                   ` Jason Gunthorpe
2021-04-29  3:04                                                                                   ` David Gibson
2021-04-29  3:04                                                                                     ` David Gibson
2021-04-29  3:04                                                                                     ` David Gibson
2021-05-03 16:15                                                                                     ` Jason Gunthorpe
2021-05-03 16:15                                                                                       ` Jason Gunthorpe
2021-05-03 16:15                                                                                       ` Jason Gunthorpe
2021-05-13  5:48                                                                                       ` David Gibson
2021-05-13  5:48                                                                                         ` David Gibson
2021-05-13  5:48                                                                                         ` David Gibson
2021-05-13 13:59                                                                                         ` Jason Gunthorpe
2021-05-13 13:59                                                                                           ` Jason Gunthorpe
2021-05-13 13:59                                                                                           ` Jason Gunthorpe
2021-05-24  7:52                                                                                           ` David Gibson
2021-05-24  7:52                                                                                             ` David Gibson
2021-05-24  7:52                                                                                             ` David Gibson
2021-05-24 23:37                                                                                             ` Jason Gunthorpe
2021-05-24 23:37                                                                                               ` Jason Gunthorpe
2021-05-24 23:37                                                                                               ` Jason Gunthorpe
2021-05-25 19:26                                                                                               ` Kirti Wankhede
2021-05-25 19:26                                                                                                 ` Kirti Wankhede
2021-05-25 19:26                                                                                                 ` Kirti Wankhede
2021-05-25 19:52                                                                                                 ` Jason Gunthorpe
2021-05-25 19:52                                                                                                   ` Jason Gunthorpe
2021-05-25 19:52                                                                                                   ` Jason Gunthorpe
2021-05-25 21:18                                                                                                   ` Kirti Wankhede
2021-05-25 21:18                                                                                                     ` Kirti Wankhede
2021-05-25 21:18                                                                                                     ` Kirti Wankhede
2021-05-27  5:00                                                                                                     ` David Gibson
2021-05-27  5:00                                                                                                       ` David Gibson
2021-05-27  5:00                                                                                                       ` David Gibson
2021-05-27 18:25                                                                                                       ` Kirti Wankhede
2021-05-27 18:25                                                                                                         ` Kirti Wankhede
2021-05-27 18:25                                                                                                         ` Kirti Wankhede
2021-06-01  3:45                                                                                                         ` David Gibson
2021-06-01  3:45                                                                                                           ` David Gibson
2021-06-01  3:45                                                                                                           ` David Gibson
2021-05-27  4:58                                                                                                   ` David Gibson
2021-05-27  4:58                                                                                                     ` David Gibson
2021-05-27  4:58                                                                                                     ` David Gibson
2021-05-27 18:48                                                                                                     ` Jason Gunthorpe
2021-05-27 18:48                                                                                                       ` Jason Gunthorpe
2021-05-27 18:48                                                                                                       ` Jason Gunthorpe
2021-06-01  4:03                                                                                                       ` David Gibson
2021-06-01  4:03                                                                                                         ` David Gibson
2021-06-01  4:03                                                                                                         ` David Gibson
2021-06-01 12:57                                                                                                         ` Jason Gunthorpe
2021-06-01 12:57                                                                                                           ` Jason Gunthorpe
2021-06-01 12:57                                                                                                           ` Jason Gunthorpe
2021-06-08  0:44                                                                                                           ` David Gibson
2021-06-08  0:44                                                                                                             ` David Gibson
2021-06-08  0:44                                                                                                             ` David Gibson
2021-06-08 18:34                                                                                                             ` Jason Gunthorpe
2021-06-08 18:34                                                                                                               ` Jason Gunthorpe
2021-06-08 18:34                                                                                                               ` Jason Gunthorpe
2021-05-25 22:52                                                                                                 ` Alex Williamson
2021-05-25 22:52                                                                                                   ` Alex Williamson
2021-05-25 22:52                                                                                                   ` Alex Williamson
2021-05-26 18:10                                                                                                   ` Kirti Wankhede
2021-05-26 18:10                                                                                                     ` Kirti Wankhede
2021-05-26 18:10                                                                                                     ` Kirti Wankhede
2021-05-26 18:59                                                                                                     ` Alex Williamson
2021-05-26 18:59                                                                                                       ` Alex Williamson
2021-05-26 18:59                                                                                                       ` Alex Williamson
2021-05-26 19:13                                                                                                       ` Jason Gunthorpe
2021-05-26 19:13                                                                                                         ` Jason Gunthorpe
2021-05-26 19:13                                                                                                         ` Jason Gunthorpe
2021-05-27  4:53                                                                                               ` David Gibson
2021-05-27  4:53                                                                                                 ` David Gibson
2021-05-27  4:53                                                                                                 ` David Gibson
2021-05-27 19:06                                                                                                 ` Jason Gunthorpe
2021-05-27 19:06                                                                                                   ` Jason Gunthorpe
2021-05-27 19:06                                                                                                   ` Jason Gunthorpe
2021-06-01  4:27                                                                                                   ` David Gibson
2021-06-01  4:27                                                                                                     ` David Gibson
2021-06-01  4:27                                                                                                     ` David Gibson
2021-04-28  6:58                                                                               ` Tian, Kevin
2021-04-28  6:58                                                                                 ` Tian, Kevin
2021-04-28  6:58                                                                                 ` Tian, Kevin
2021-05-04 17:12                                                                                 ` Jason Gunthorpe
2021-05-04 17:12                                                                                   ` Jason Gunthorpe
2021-05-04 17:12                                                                                   ` Jason Gunthorpe
2021-05-07  8:09                                                                                   ` Tian, Kevin
2021-05-07  8:09                                                                                     ` Tian, Kevin
2021-05-07  8:09                                                                                     ` Tian, Kevin
2021-04-28  7:47                                                                               ` Tian, Kevin
2021-04-28  7:47                                                                                 ` Tian, Kevin
2021-04-28  7:47                                                                                 ` Tian, Kevin
2021-04-28 18:41                                                                                 ` Jason Gunthorpe
2021-04-28 18:41                                                                                   ` Jason Gunthorpe
2021-04-28 18:41                                                                                   ` Jason Gunthorpe
2021-04-27  4:50                                                                 ` David Gibson
2021-04-27  4:50                                                                   ` David Gibson
2021-04-27  4:50                                                                   ` David Gibson
2021-04-27 17:24                                                                   ` Jason Gunthorpe
2021-04-27 17:24                                                                     ` Jason Gunthorpe
2021-04-27 17:24                                                                     ` Jason Gunthorpe
2021-04-28  1:23                                                                     ` David Gibson
2021-04-28  1:23                                                                       ` David Gibson
2021-04-28  1:23                                                                       ` David Gibson
2021-04-29  0:21                                                                       ` Jason Gunthorpe
2021-04-29  0:21                                                                         ` Jason Gunthorpe
2021-04-29  0:21                                                                         ` Jason Gunthorpe
2021-04-29  3:20                                                                         ` David Gibson
2021-04-29  3:20                                                                           ` David Gibson
2021-04-29  3:20                                                                           ` David Gibson
2021-05-03 16:05                                                                           ` Jason Gunthorpe
2021-05-03 16:05                                                                             ` Jason Gunthorpe
2021-05-03 16:05                                                                             ` Jason Gunthorpe
2021-05-04  3:54                                                                             ` David Gibson
2021-05-04  3:54                                                                               ` David Gibson
2021-05-04  3:54                                                                               ` David Gibson
2021-05-04 18:15                                                                               ` Jason Gunthorpe
2021-05-04 18:15                                                                                 ` Jason Gunthorpe
2021-05-04 18:15                                                                                 ` Jason Gunthorpe
2021-05-05  4:28                                                                                 ` Alexey Kardashevskiy
2021-05-05  4:28                                                                                   ` Alexey Kardashevskiy
2021-05-05  4:28                                                                                   ` Alexey Kardashevskiy
2021-05-05 16:39                                                                                   ` Jason Gunthorpe
2021-05-05 16:39                                                                                     ` Jason Gunthorpe
2021-05-05 16:39                                                                                     ` Jason Gunthorpe
2021-05-13  6:07                                                                                     ` David Gibson
2021-05-13  6:07                                                                                       ` David Gibson
2021-05-13  6:07                                                                                       ` David Gibson
2021-05-13 13:50                                                                                       ` Jason Gunthorpe
2021-05-13 13:50                                                                                         ` Jason Gunthorpe
2021-05-13 13:50                                                                                         ` Jason Gunthorpe
2021-05-24  7:56                                                                                         ` David Gibson
2021-05-24  7:56                                                                                           ` David Gibson
2021-05-24  7:56                                                                                           ` David Gibson
2021-05-13  6:01                                                                                 ` David Gibson
2021-05-13  6:01                                                                                   ` David Gibson
2021-05-13  6:01                                                                                   ` David Gibson
2021-05-13  6:52                                                                                   ` Tian, Kevin
2021-05-13  6:52                                                                                     ` Tian, Kevin
2021-05-13  6:52                                                                                     ` Tian, Kevin
2021-05-13 13:47                                                                                   ` Jason Gunthorpe
2021-05-13 13:47                                                                                     ` Jason Gunthorpe
2021-05-13 13:47                                                                                     ` Jason Gunthorpe
2021-04-22 12:55                                                             ` Liu Yi L
2021-04-22 12:55                                                               ` Liu Yi L
2021-04-16 13:38                                               ` Auger Eric
2021-04-16 13:38                                                 ` Auger Eric
2021-04-16 13:38                                                 ` Auger Eric
2021-04-16 14:05                                                 ` Jason Gunthorpe
2021-04-16 14:05                                                   ` Jason Gunthorpe
2021-04-16 14:05                                                   ` Jason Gunthorpe
2021-04-16 14:26                                                   ` Auger Eric
2021-04-16 14:26                                                     ` Auger Eric
2021-04-16 14:26                                                     ` Auger Eric
2021-04-16 14:34                                                     ` Jason Gunthorpe
2021-04-16 14:34                                                       ` Jason Gunthorpe
2021-04-16 14:34                                                       ` Jason Gunthorpe
2021-04-16 15:00                                                       ` Auger Eric
2021-04-16 15:00                                                         ` Auger Eric
2021-04-16 15:00                                                         ` Auger Eric
2021-04-01 11:46                               ` Jason Gunthorpe
2021-04-01 11:46                                 ` Jason Gunthorpe
2021-04-01 11:46                                 ` Jason Gunthorpe
2021-04-01 13:10                                 ` Liu, Yi L
2021-04-01 13:10                                   ` Liu, Yi L
2021-04-01 13:10                                   ` Liu, Yi L
2021-04-01 13:15                                   ` Jason Gunthorpe
2021-04-01 13:15                                     ` Jason Gunthorpe
2021-04-01 13:15                                     ` Jason Gunthorpe
2021-04-01 13:43                                     ` Liu, Yi L
2021-04-01 13:43                                       ` Liu, Yi L
2021-04-01 13:43                                       ` Liu, Yi L
2021-04-01 13:46                                       ` Jason Gunthorpe
2021-04-01 13:46                                         ` Jason Gunthorpe
2021-04-01 13:46                                         ` Jason Gunthorpe
2021-04-02  7:58                                         ` Tian, Kevin
2021-04-02  7:58                                           ` Tian, Kevin
2021-04-02  7:58                                           ` Tian, Kevin
2021-04-05 23:39                                           ` Jason Gunthorpe
2021-04-05 23:39                                             ` Jason Gunthorpe
2021-04-05 23:39                                             ` Jason Gunthorpe
2021-04-06  1:02                                             ` Tian, Kevin
2021-04-06  1:02                                               ` Tian, Kevin
2021-04-06  1:02                                               ` Tian, Kevin
2021-04-06 12:21                                               ` Jason Gunthorpe
2021-04-06 12:21                                                 ` Jason Gunthorpe
2021-04-06 12:21                                                 ` Jason Gunthorpe
2021-04-07  2:23                                                 ` Tian, Kevin
2021-04-07  2:23                                                   ` Tian, Kevin
2021-04-07  2:23                                                   ` Tian, Kevin
     [not found]                                             ` <MWHPR11MB188628BDB37A4EE36F3D99338C769@MWHPR11MB1886.namprd11.prod.outlook.com>
2021-04-06  2:08                                               ` Tian, Kevin
2021-04-06  2:08                                                 ` Tian, Kevin
2021-04-06  2:08                                                 ` Tian, Kevin
2021-04-02 10:01                                         ` Tian, Kevin
2021-04-02 10:01                                           ` Tian, Kevin
2021-04-02 10:01                                           ` Tian, Kevin
2021-04-02  8:22                         ` Tian, Kevin
2021-04-02  8:22                           ` Tian, Kevin
2021-04-02  8:22                           ` Tian, Kevin
2021-04-05 23:42                           ` Jason Gunthorpe
2021-04-05 23:42                             ` Jason Gunthorpe
2021-04-05 23:42                             ` Jason Gunthorpe
2021-04-06  1:27                             ` Tian, Kevin
2021-04-06  1:27                               ` Tian, Kevin
2021-04-06  1:27                               ` Tian, Kevin
2021-04-06 12:34                               ` Jason Gunthorpe
2021-04-06 12:34                                 ` Jason Gunthorpe
2021-04-07  2:08                                 ` Tian, Kevin
2021-04-07  2:08                                   ` Tian, Kevin
2021-04-07  2:08                                   ` Tian, Kevin
2021-04-07 12:20                                   ` Jason Gunthorpe
2021-04-07 12:20                                     ` Jason Gunthorpe
2021-04-07 12:20                                     ` Jason Gunthorpe
2021-04-07 23:50                                     ` Tian, Kevin
2021-04-07 23:50                                       ` Tian, Kevin
2021-04-07 23:50                                       ` Tian, Kevin
2021-04-08 11:41                                       ` Jason Gunthorpe
2021-04-08 11:41                                         ` Jason Gunthorpe
2021-04-08 11:41                                         ` Jason Gunthorpe
2021-04-06  1:35                             ` Jason Wang
2021-04-06  1:35                               ` Jason Wang
2021-04-06  1:35                               ` Jason Wang
2021-04-06 12:42                               ` Jason Gunthorpe
2021-04-06 12:42                                 ` Jason Gunthorpe
2021-04-06 12:42                                 ` Jason Gunthorpe
2021-04-07  2:06                                 ` Jason Wang
2021-04-07  2:06                                   ` Jason Wang
2021-04-07  2:06                                   ` Jason Wang
2021-04-07  8:17                                 ` Tian, Kevin
2021-04-07  8:17                                   ` Tian, Kevin
2021-04-07  8:17                                   ` Tian, Kevin
2021-04-07 11:58                                   ` Jason Gunthorpe
2021-04-07 11:58                                     ` Jason Gunthorpe
2021-04-07 11:58                                     ` Jason Gunthorpe
2021-04-07 18:43                                   ` Jean-Philippe Brucker
2021-04-07 18:43                                     ` Jean-Philippe Brucker
2021-04-07 18:43                                     ` Jean-Philippe Brucker
2021-04-07 19:36                                     ` Jason Gunthorpe
2021-04-07 19:36                                       ` Jason Gunthorpe
2021-04-07 19:36                                       ` Jason Gunthorpe
2021-04-08  9:37                                       ` Jean-Philippe Brucker
2021-04-08  9:37                                         ` Jean-Philippe Brucker
2021-03-30  2:24                     ` Tian, Kevin
2021-03-30  2:24                       ` Tian, Kevin
2021-03-30  2:24                       ` Tian, Kevin
2021-03-30 13:24                       ` Jason Gunthorpe
2021-03-30 13:24                         ` Jason Gunthorpe
2021-03-30 13:24                         ` Jason Gunthorpe
2021-03-30  4:14                     ` Tian, Kevin
2021-03-30  4:14                       ` Tian, Kevin
2021-03-30  4:14                       ` Tian, Kevin
2021-03-30 13:27                       ` Jason Gunthorpe
2021-03-30 13:27                         ` Jason Gunthorpe
2021-03-30 13:27                         ` Jason Gunthorpe
2021-03-31  7:41                         ` Liu, Yi L
2021-03-31  7:41                           ` Liu, Yi L
2021-03-31  7:41                           ` Liu, Yi L
2021-03-31 12:38                           ` Jason Gunthorpe
2021-03-31 12:38                             ` Jason Gunthorpe
2021-03-31 12:38                             ` Jason Gunthorpe
2021-03-31 23:46                             ` Jacob Pan
2021-03-31 23:46                               ` Jacob Pan
2021-03-31 23:46                               ` Jacob Pan
2021-04-01  0:37                               ` Jason Gunthorpe
2021-04-01  0:37                                 ` Jason Gunthorpe
2021-04-01  0:37                                 ` Jason Gunthorpe
2021-04-01 17:23                                 ` Jacob Pan
2021-04-01 17:23                                   ` Jacob Pan
2021-04-01 17:23                                   ` Jacob Pan
2021-04-01 17:26                                   ` Jason Gunthorpe
2021-04-01 17:26                                     ` Jason Gunthorpe
2021-04-01 17:26                                     ` Jason Gunthorpe
2021-03-19 17:14       ` Jacob Pan
2021-03-19 17:14         ` Jacob Pan
2021-03-19 17:14         ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 06/18] iommu/ioasid: Add free function and states Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 07/18] iommu/ioasid: Add ioasid_set iterator helper functions Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 08/18] iommu/ioasid: Introduce ioasid_set private ID Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` Jacob Pan [this message]
2021-02-27 22:01   ` [PATCH V4 09/18] iommu/ioasid: Introduce notification APIs Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 10/18] iommu/ioasid: Support mm token type ioasid_set notifications Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 11/18] iommu/ioasid: Add ownership check in guest bind Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 12/18] iommu/vt-d: Remove mm reference for guest SVA Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 13/18] iommu/ioasid: Add a workqueue for cleanup work Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [PATCH V4 14/18] iommu/vt-d: Listen to IOASID notifications Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [RFC PATCH 15/18] cgroup: Introduce ioasids controller Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-03-03 15:44   ` Tejun Heo
2021-03-03 15:44     ` Tejun Heo
2021-03-03 21:17     ` Jacob Pan
2021-03-03 21:17       ` Jacob Pan
2021-03-03 21:17       ` Jacob Pan
2021-03-04  0:02       ` Jacob Pan
2021-03-04  0:02         ` Jacob Pan
2021-03-04  0:02         ` Jacob Pan
2021-03-04  0:23         ` Jason Gunthorpe
2021-03-04  0:23           ` Jason Gunthorpe
2021-03-04  0:23           ` Jason Gunthorpe
2021-03-04  9:49         ` Jean-Philippe Brucker
2021-03-04  9:49           ` Jean-Philippe Brucker
2021-03-04  9:49           ` Jean-Philippe Brucker
2021-03-04 17:46           ` Jacob Pan
2021-03-04 17:46             ` Jacob Pan
2021-03-04 17:46             ` Jacob Pan
2021-03-04 17:54             ` Jason Gunthorpe
2021-03-04 17:54               ` Jason Gunthorpe
2021-03-04 17:54               ` Jason Gunthorpe
2021-03-04 19:01               ` Jacob Pan
2021-03-04 19:01                 ` Jacob Pan
2021-03-04 19:01                 ` Jacob Pan
2021-03-04 19:02                 ` Jason Gunthorpe
2021-03-04 19:02                   ` Jason Gunthorpe
2021-03-04 19:02                   ` Jason Gunthorpe
2021-03-04 21:28                   ` Jacob Pan
2021-03-04 21:28                     ` Jacob Pan
2021-03-04 21:28                     ` Jacob Pan
2021-03-05  8:30             ` Jean-Philippe Brucker
2021-03-05  8:30               ` Jean-Philippe Brucker
2021-03-05  8:30               ` Jean-Philippe Brucker
2021-03-05 17:16               ` Jean-Philippe Brucker
2021-03-05 17:16                 ` Jean-Philippe Brucker
2021-03-05 17:16                 ` Jean-Philippe Brucker
2021-03-05 18:20               ` Jacob Pan
2021-03-05 18:20                 ` Jacob Pan
2021-03-05 18:20                 ` Jacob Pan
2021-02-27 22:01 ` [RFC PATCH 16/18] iommu/ioasid: Consult IOASIDs cgroup for allocation Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [RFC PATCH 17/18] docs: cgroup-v1: Add IOASIDs controller Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01 ` [RFC PATCH 18/18] ioasid: Add /dev/ioasid for userspace Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-02-27 22:01   ` Jacob Pan
2021-03-10 19:23   ` Jason Gunthorpe
2021-03-10 19:23     ` Jason Gunthorpe
2021-03-10 19:23     ` Jason Gunthorpe
2021-03-11 22:55     ` Jacob Pan
2021-03-11 22:55       ` Jacob Pan
2021-03-11 22:55       ` Jacob Pan
2021-03-12 14:54       ` Jason Gunthorpe
2021-03-12 14:54         ` Jason Gunthorpe
2021-03-12 14:54         ` Jason Gunthorpe
2021-03-02 12:58 ` [PATCH V4 00/18] IOASID extensions for guest SVA Liu, Yi L
2021-03-02 12:58   ` Liu, Yi L
2021-03-02 12:58   ` Liu, Yi L

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=1614463286-97618-10-git-send-email-jacob.jun.pan@linux.intel.com \
    --to=jacob.jun.pan@linux.intel.com \
    --cc=alex.williamson@redhat.com \
    --cc=ashok.raj@intel.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=cgroups@vger.kernel.org \
    --cc=corbet@lwn.net \
    --cc=dave.jiang@intel.com \
    --cc=dwmw2@infradead.org \
    --cc=eric.auger@redhat.com \
    --cc=hannes@cmpxchg.org \
    --cc=hao.wu@intel.com \
    --cc=iommu@lists.linux-foundation.org \
    --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=lizefan@huawei.com \
    --cc=tj@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: 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.