From: Xu Zaibo <xuzaibo@huawei.com>
To: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>,
linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org,
linux-acpi@vger.kernel.org, devicetree@vger.kernel.org,
iommu@lists.linux-foundation.org, kvm@vger.kernel.org
Cc: joro@8bytes.org, robh+dt@kernel.org, mark.rutland@arm.com,
catalin.marinas@arm.com, will.deacon@arm.com,
lorenzo.pieralisi@arm.com, hanjun.guo@linaro.org,
sudeep.holla@arm.com, rjw@rjwysocki.net, lenb@kernel.org,
robin.murphy@arm.com, bhelgaas@google.com,
alex.williamson@redhat.com, tn@semihalf.com, liubo95@huawei.com,
thunder.leizhen@huawei.com, xieyisheng1@huawei.com,
ilias.apalodimas@linaro.org, jonathan.cameron@huawei.com,
shunyong.yang@hxt-semitech.com, nwatters@codeaurora.org,
okaya@codeaurora.org, jcrouse@codeaurora.org, rfranz@cavium.com,
dwmw2@infradead.org, jacob.jun.pan@linux.intel.com,
yi.l.liu@intel.com, ashok.raj@intel.com, robdclark@gmail.com,
christian.koenig@amd.com, bharatku@xilinx.com, liguozhu
Subject: Re: [PATCH 29/37] iommu/arm-smmu-v3: Add stall support for platform devices
Date: Tue, 13 Feb 2018 09:46:01 +0800 [thread overview]
Message-ID: <5A824359.1080005@huawei.com> (raw)
In-Reply-To: <20180212183352.22730-30-jean-philippe.brucker@arm.com>
Hi,
On 2018/2/13 2:33, Jean-Philippe Brucker wrote:
> The SMMU provides a Stall model for handling page faults in platform
> devices. It is similar to PCI PRI, but doesn't require devices to have
> their own translation cache. Instead, faulting transactions are parked and
> the OS is given a chance to fix the page tables and retry the transaction.
>
> Enable stall for devices that support it (opt-in by firmware). When an
> event corresponds to a translation error, call the IOMMU fault handler. If
> the fault is recoverable, it will call us back to terminate or continue
> the stall.
>
> Note that this patch tweaks the iommu_fault_event and page_response_msg to
> extend the fault id field. Stall uses 16 bits of IDs whereas PCI PRI only
> uses 9.
For PCIe devices without ATC, can they use this Stall model?
Thanks.
Xu Zaibo
> Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
> ---
> drivers/iommu/arm-smmu-v3.c | 175 +++++++++++++++++++++++++++++++++++++++++++-
> include/linux/iommu.h | 4 +-
> 2 files changed, 173 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
> index 2430b2140f8d..8b9f5dd06be0 100644
> --- a/drivers/iommu/arm-smmu-v3.c
> +++ b/drivers/iommu/arm-smmu-v3.c
> @@ -338,6 +338,15 @@
> #define CMDQ_PRI_1_RESP_FAIL (1UL << CMDQ_PRI_1_RESP_SHIFT)
> #define CMDQ_PRI_1_RESP_SUCC (2UL << CMDQ_PRI_1_RESP_SHIFT)
>
> +#define CMDQ_RESUME_0_SID_SHIFT 32
> +#define CMDQ_RESUME_0_SID_MASK 0xffffffffUL
> +#define CMDQ_RESUME_0_ACTION_SHIFT 12
> +#define CMDQ_RESUME_0_ACTION_TERM (0UL << CMDQ_RESUME_0_ACTION_SHIFT)
> +#define CMDQ_RESUME_0_ACTION_RETRY (1UL << CMDQ_RESUME_0_ACTION_SHIFT)
> +#define CMDQ_RESUME_0_ACTION_ABORT (2UL << CMDQ_RESUME_0_ACTION_SHIFT)
> +#define CMDQ_RESUME_1_STAG_SHIFT 0
> +#define CMDQ_RESUME_1_STAG_MASK 0xffffUL
> +
> #define CMDQ_SYNC_0_CS_SHIFT 12
> #define CMDQ_SYNC_0_CS_NONE (0UL << CMDQ_SYNC_0_CS_SHIFT)
> #define CMDQ_SYNC_0_CS_IRQ (1UL << CMDQ_SYNC_0_CS_SHIFT)
> @@ -358,6 +367,31 @@
> #define EVTQ_0_ID_SHIFT 0
> #define EVTQ_0_ID_MASK 0xffUL
>
> +#define EVT_ID_TRANSLATION_FAULT 0x10
> +#define EVT_ID_ADDR_SIZE_FAULT 0x11
> +#define EVT_ID_ACCESS_FAULT 0x12
> +#define EVT_ID_PERMISSION_FAULT 0x13
> +
> +#define EVTQ_0_SSV (1UL << 11)
> +#define EVTQ_0_SSID_SHIFT 12
> +#define EVTQ_0_SSID_MASK 0xfffffUL
> +#define EVTQ_0_SID_SHIFT 32
> +#define EVTQ_0_SID_MASK 0xffffffffUL
> +#define EVTQ_1_STAG_SHIFT 0
> +#define EVTQ_1_STAG_MASK 0xffffUL
> +#define EVTQ_1_STALL (1UL << 31)
> +#define EVTQ_1_PRIV (1UL << 33)
> +#define EVTQ_1_EXEC (1UL << 34)
> +#define EVTQ_1_READ (1UL << 35)
> +#define EVTQ_1_S2 (1UL << 39)
> +#define EVTQ_1_CLASS_SHIFT 40
> +#define EVTQ_1_CLASS_MASK 0x3UL
> +#define EVTQ_1_TT_READ (1UL << 44)
> +#define EVTQ_2_ADDR_SHIFT 0
> +#define EVTQ_2_ADDR_MASK 0xffffffffffffffffUL
> +#define EVTQ_3_IPA_SHIFT 12
> +#define EVTQ_3_IPA_MASK 0xffffffffffUL
> +
> /* PRI queue */
> #define PRIQ_ENT_DWORDS 2
> #define PRIQ_MAX_SZ_SHIFT 8
> @@ -472,6 +506,13 @@ struct arm_smmu_cmdq_ent {
> enum pri_resp resp;
> } pri;
>
> + #define CMDQ_OP_RESUME 0x44
> + struct {
> + u32 sid;
> + u16 stag;
> + enum page_response_code resp;
> + } resume;
> +
> #define CMDQ_OP_CMD_SYNC 0x46
> struct {
> u32 msidata;
> @@ -545,6 +586,8 @@ struct arm_smmu_strtab_ent {
> bool assigned;
> struct arm_smmu_s1_cfg *s1_cfg;
> struct arm_smmu_s2_cfg *s2_cfg;
> +
> + bool can_stall;
> };
>
> struct arm_smmu_strtab_cfg {
> @@ -904,6 +947,21 @@ static int arm_smmu_cmdq_build_cmd(u64 *cmd, struct arm_smmu_cmdq_ent *ent)
> return -EINVAL;
> }
> break;
> + case CMDQ_OP_RESUME:
> + cmd[0] |= (u64)ent->resume.sid << CMDQ_RESUME_0_SID_SHIFT;
> + cmd[1] |= ent->resume.stag << CMDQ_RESUME_1_STAG_SHIFT;
> + switch (ent->resume.resp) {
> + case IOMMU_PAGE_RESP_INVALID:
> + case IOMMU_PAGE_RESP_FAILURE:
> + cmd[0] |= CMDQ_RESUME_0_ACTION_ABORT;
> + break;
> + case IOMMU_PAGE_RESP_SUCCESS:
> + cmd[0] |= CMDQ_RESUME_0_ACTION_RETRY;
> + break;
> + default:
> + return -EINVAL;
> + }
> + break;
> case CMDQ_OP_CMD_SYNC:
> if (ent->sync.msiaddr)
> cmd[0] |= CMDQ_SYNC_0_CS_IRQ;
> @@ -1065,6 +1123,35 @@ static void arm_smmu_cmdq_issue_sync(struct arm_smmu_device *smmu)
> dev_err_ratelimited(smmu->dev, "CMD_SYNC timeout\n");
> }
>
> +static int arm_smmu_page_response(struct iommu_domain *domain,
> + struct device *dev,
> + struct page_response_msg *resp)
> +{
> + int sid = dev->iommu_fwspec->ids[0];
> + struct arm_smmu_cmdq_ent cmd = {0};
> + struct arm_smmu_master_data *master = dev->iommu_fwspec->iommu_priv;
> +
> + if (master->ste.can_stall) {
> + cmd.opcode = CMDQ_OP_RESUME;
> + cmd.resume.sid = sid;
> + cmd.resume.stag = resp->page_req_group_id;
> + cmd.resume.resp = resp->resp_code;
> + } else {
> + /* TODO: put PRI response here */
> + return -EINVAL;
> + }
> +
> + arm_smmu_cmdq_issue_cmd(master->smmu, &cmd);
> + /*
> + * Don't send a SYNC, it doesn't do anything for RESUME or PRI_RESP.
> + * RESUME consumption guarantees that the stalled transaction will be
> + * terminated... at some point in the future. PRI_RESP is fire and
> + * forget.
> + */
> +
> + return 0;
> +}
> +
> /* Stream table manipulation functions */
> static void
> arm_smmu_write_strtab_l1_desc(__le64 *dst, struct arm_smmu_strtab_l1_desc *desc)
> @@ -1182,7 +1269,8 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_device *smmu, u32 sid,
> STRTAB_STE_1_STRW_SHIFT);
>
> if (smmu->features & ARM_SMMU_FEAT_STALLS &&
> - !(smmu->features & ARM_SMMU_FEAT_STALL_FORCE))
> + !(smmu->features & ARM_SMMU_FEAT_STALL_FORCE) &&
> + !ste->can_stall)
> dst[1] |= cpu_to_le64(STRTAB_STE_1_S1STALLD);
>
> val |= (cfg->base & STRTAB_STE_0_S1CTXPTR_MASK
> @@ -1285,10 +1373,73 @@ arm_smmu_find_master(struct arm_smmu_device *smmu, u32 sid)
> return master;
> }
>
> +static int arm_smmu_handle_evt(struct arm_smmu_device *smmu, u64 *evt)
> +{
> + struct arm_smmu_master_data *master;
> + u8 type = evt[0] >> EVTQ_0_ID_SHIFT & EVTQ_0_ID_MASK;
> + u32 sid = evt[0] >> EVTQ_0_SID_SHIFT & EVTQ_0_SID_MASK;
> +
> + struct iommu_fault_event fault = {
> + .page_req_group_id = evt[1] >> EVTQ_1_STAG_SHIFT & EVTQ_1_STAG_MASK,
> + .addr = evt[2] >> EVTQ_2_ADDR_SHIFT & EVTQ_2_ADDR_MASK,
> + .last_req = true,
> + };
> +
> + switch (type) {
> + case EVT_ID_TRANSLATION_FAULT:
> + case EVT_ID_ADDR_SIZE_FAULT:
> + case EVT_ID_ACCESS_FAULT:
> + fault.reason = IOMMU_FAULT_REASON_PTE_FETCH;
> + break;
> + case EVT_ID_PERMISSION_FAULT:
> + fault.reason = IOMMU_FAULT_REASON_PERMISSION;
> + break;
> + default:
> + /* TODO: report other unrecoverable faults. */
> + return -EFAULT;
> + }
> +
> + /* Stage-2 is always pinned at the moment */
> + if (evt[1] & EVTQ_1_S2)
> + return -EFAULT;
> +
> + master = arm_smmu_find_master(smmu, sid);
> + if (!master)
> + return -EINVAL;
> +
> + /*
> + * The domain is valid until the fault returns, because detach() flushes
> + * the fault queue.
> + */
> + if (evt[1] & EVTQ_1_STALL)
> + fault.type = IOMMU_FAULT_PAGE_REQ;
> + else
> + fault.type = IOMMU_FAULT_DMA_UNRECOV;
> +
> + if (evt[1] & EVTQ_1_READ)
> + fault.prot |= IOMMU_FAULT_READ;
> + else
> + fault.prot |= IOMMU_FAULT_WRITE;
> +
> + if (evt[1] & EVTQ_1_EXEC)
> + fault.prot |= IOMMU_FAULT_EXEC;
> +
> + if (evt[1] & EVTQ_1_PRIV)
> + fault.prot |= IOMMU_FAULT_PRIV;
> +
> + if (evt[0] & EVTQ_0_SSV) {
> + fault.pasid_valid = true;
> + fault.pasid = evt[0] >> EVTQ_0_SSID_SHIFT & EVTQ_0_SSID_MASK;
> + }
> +
> + /* Report to device driver or populate the page tables */
> + return iommu_report_device_fault(master->dev, &fault);
> +}
> +
> /* IRQ and event handlers */
> static irqreturn_t arm_smmu_evtq_thread(int irq, void *dev)
> {
> - int i;
> + int i, ret;
> int num_handled = 0;
> struct arm_smmu_device *smmu = dev;
> struct arm_smmu_queue *q = &smmu->evtq.q;
> @@ -1300,12 +1451,19 @@ static irqreturn_t arm_smmu_evtq_thread(int irq, void *dev)
> while (!queue_remove_raw(q, evt)) {
> u8 id = evt[0] >> EVTQ_0_ID_SHIFT & EVTQ_0_ID_MASK;
>
> + spin_unlock(&q->wq.lock);
> + ret = arm_smmu_handle_evt(smmu, evt);
> + spin_lock(&q->wq.lock);
> +
> if (++num_handled == queue_size) {
> q->batch++;
> wake_up_locked(&q->wq);
> num_handled = 0;
> }
>
> + if (!ret)
> + continue;
> +
> dev_info(smmu->dev, "event 0x%02x received:\n", id);
> for (i = 0; i < ARRAY_SIZE(evt); ++i)
> dev_info(smmu->dev, "\t0x%016llx\n",
> @@ -1442,7 +1600,9 @@ static int arm_smmu_flush_queues(struct notifier_block *nb,
> master = dev->iommu_fwspec->iommu_priv;
>
> if (master) {
> - /* TODO: add support for PRI and Stall */
> + if (master->ste.can_stall)
> + arm_smmu_flush_queue(smmu, &smmu->evtq.q, "evtq");
> + /* TODO: add support for PRI */
> return 0;
> }
>
> @@ -1756,7 +1916,8 @@ static int arm_smmu_domain_finalise_s1(struct arm_smmu_domain *smmu_domain,
> .order = master->ssid_bits,
> .sync = &arm_smmu_ctx_sync,
> .arm_smmu = {
> - .stall = !!(smmu->features & ARM_SMMU_FEAT_STALL_FORCE),
> + .stall = !!(smmu->features & ARM_SMMU_FEAT_STALL_FORCE) ||
> + master->ste.can_stall,
> .asid_bits = smmu->asid_bits,
> .hw_access = !!(smmu->features & ARM_SMMU_FEAT_HA),
> .hw_dirty = !!(smmu->features & ARM_SMMU_FEAT_HD),
> @@ -2296,6 +2457,11 @@ static int arm_smmu_add_device(struct device *dev)
>
> master->ssid_bits = min(smmu->ssid_bits, fwspec->num_pasid_bits);
>
> + if (fwspec->can_stall && smmu->features & ARM_SMMU_FEAT_STALLS) {
> + master->can_fault = true;
> + master->ste.can_stall = true;
> + }
> +
> group = iommu_group_get_for_dev(dev);
> if (!IS_ERR(group)) {
> arm_smmu_insert_master(smmu, master);
> @@ -2435,6 +2601,7 @@ static struct iommu_ops arm_smmu_ops = {
> .mm_attach = arm_smmu_mm_attach,
> .mm_detach = arm_smmu_mm_detach,
> .mm_invalidate = arm_smmu_mm_invalidate,
> + .page_response = arm_smmu_page_response,
> .map = arm_smmu_map,
> .unmap = arm_smmu_unmap,
> .map_sg = default_iommu_map_sg,
> diff --git a/include/linux/iommu.h b/include/linux/iommu.h
> index 37c3b9d087ce..f5c2f4be2b42 100644
> --- a/include/linux/iommu.h
> +++ b/include/linux/iommu.h
> @@ -227,7 +227,7 @@ struct page_response_msg {
> u32 pasid;
> enum page_response_code resp_code;
> u32 pasid_present:1;
> - u32 page_req_group_id : 9;
> + u32 page_req_group_id;
> enum page_response_type type;
> u32 private_data;
> };
> @@ -421,7 +421,7 @@ struct iommu_fault_event {
> enum iommu_fault_reason reason;
> u64 addr;
> u32 pasid;
> - u32 page_req_group_id : 9;
> + u32 page_req_group_id;
> u32 last_req : 1;
> u32 pasid_valid : 1;
> u32 prot;
next prev parent reply other threads:[~2018-02-13 1:46 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-12 18:33 [PATCH 00/37] Shared Virtual Addressing for the IOMMU Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 01/37] iommu: Introduce Shared Virtual Addressing API Jean-Philippe Brucker
[not found] ` <20180212183352.22730-2-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-02-13 7:31 ` Tian, Kevin
[not found] ` <AADFC41AFE54684AB9EE6CBC0274A5D191002823-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2018-02-13 12:40 ` Jean-Philippe Brucker
2018-02-13 23:43 ` Tian, Kevin
[not found] ` <AADFC41AFE54684AB9EE6CBC0274A5D191003B1B-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2018-02-15 12:42 ` Jean-Philippe Brucker
[not found] ` <0b579768-3090-dd50-58b1-3385be92ef21-5wv7dgnIgG8@public.gmane.org>
2018-02-27 6:21 ` Tian, Kevin
[not found] ` <AADFC41AFE54684AB9EE6CBC0274A5D19101C8A7-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2018-02-28 16:20 ` Jean-Philippe Brucker
2018-02-15 9:59 ` Joerg Roedel
[not found] ` <20180215095909.r4nwqjhuijusssuy-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2018-02-15 12:43 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 02/37] iommu/sva: Bind process address spaces to devices Jean-Philippe Brucker
2018-02-13 7:54 ` Tian, Kevin
2018-02-13 12:57 ` Jean-Philippe Brucker
2018-02-13 23:34 ` Tian, Kevin
[not found] ` <AADFC41AFE54684AB9EE6CBC0274A5D191003AD6-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2018-02-15 12:40 ` Jean-Philippe Brucker
[not found] ` <ca4d4992-0c8b-dae6-e443-7c7f7164be60-5wv7dgnIgG8@public.gmane.org>
2018-03-01 3:03 ` Liu, Yi L
[not found] ` <A2975661238FB949B60364EF0F2C257439B829DA-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2018-03-02 16:03 ` Jean-Philippe Brucker
[not found] ` <b9eacb30-817f-9027-bc0a-1f01cf9f13f9-5wv7dgnIgG8@public.gmane.org>
2018-02-15 10:21 ` joro-zLv9SwRftAIdnm+yROfE0A
[not found] ` <20180215102113.c7t7rrnyzgazmdli-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2018-02-15 12:29 ` Christian König
2018-02-15 12:46 ` Jean-Philippe Brucker
[not found] ` <20180212183352.22730-3-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-02-28 20:34 ` Sinan Kaya
[not found] ` <bce32071-4159-3bdd-1e03-77f540ee4509-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-03-02 12:32 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 05/37] iommu/sva: Track mm changes with an MMU notifier Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 06/37] iommu/sva: Search mm by PASID Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 07/37] iommu: Add a page fault handler Jean-Philippe Brucker
2018-02-14 7:18 ` Jacob Pan
2018-02-15 13:49 ` Jean-Philippe Brucker
[not found] ` <20180212183352.22730-8-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-03-05 21:44 ` Sinan Kaya
[not found] ` <b2a3d2a7-7042-aef3-0def-05e64e39d046-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-03-06 10:24 ` Jean-Philippe Brucker
2018-03-05 21:53 ` Sinan Kaya
[not found] ` <77afa195-4842-a112-eba5-409b861b5315-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-03-06 10:46 ` Jean-Philippe Brucker
[not found] ` <430e9754-4cf7-0aa8-7899-fc13e6a2e079-5wv7dgnIgG8@public.gmane.org>
2018-03-06 12:52 ` okaya-sgV2jX0FEOL9JmXXK+q4OQ
2018-03-08 15:40 ` Jonathan Cameron
[not found] ` <20180308164035.000065c2-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2018-03-14 13:08 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 08/37] iommu/fault: Handle mm faults Jean-Philippe Brucker
[not found] ` <20180212183352.22730-9-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-02-14 18:46 ` Jacob Pan
2018-02-15 13:51 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 09/37] iommu/fault: Let handler return a fault response Jean-Philippe Brucker
[not found] ` <20180212183352.22730-10-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-02-20 23:19 ` Jacob Pan
2018-02-21 10:28 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 11/37] dt-bindings: document stall and PASID properties for IOMMU masters Jean-Philippe Brucker
[not found] ` <20180212183352.22730-12-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-02-19 2:51 ` Rob Herring
2018-02-20 11:28 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 12/37] iommu/of: Add stall and pasid properties to iommu_fwspec Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 15/37] iommu/io-pgtable-arm: Factor out ARM LPAE register defines Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 18/37] iommu/arm-smmu-v3: Add support for Substream IDs Jean-Philippe Brucker
[not found] ` <20180212183352.22730-1-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-02-12 18:33 ` [PATCH 03/37] iommu/sva: Manage process address spaces Jean-Philippe Brucker
[not found] ` <20180212183352.22730-4-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-03-01 6:52 ` Lu Baolu
[not found] ` <5A97A324.9050605-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-03-01 8:04 ` Christian König
[not found] ` <cd4d7a98-e45e-7066-345f-52d8eef926a2-5C7GfCeVMHo@public.gmane.org>
2018-03-02 16:42 ` Jean-Philippe Brucker
2018-03-02 16:19 ` Jean-Philippe Brucker
2018-03-05 15:28 ` Sinan Kaya
[not found] ` <27a044ee-0ed7-0470-0fef-289d0d5cf5e8-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-03-06 10:37 ` Jean-Philippe Brucker
2018-04-24 1:32 ` Sinan Kaya
[not found] ` <57d77955-caa7-ddac-df7d-7eef1f05dbb2-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-04-24 9:33 ` Jean-Philippe Brucker
[not found] ` <66ec18ca-ea4e-d224-c9c5-8dbee5da8a72-5wv7dgnIgG8@public.gmane.org>
2018-04-24 17:17 ` Sinan Kaya
[not found] ` <e7c4053a-20cc-d2db-16da-100b1157eca4-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-04-24 18:52 ` Jean-Philippe Brucker via iommu
2018-04-10 18:53 ` Sinan Kaya
[not found] ` <04d4d161-ed72-f6b6-9b94-1d60bd79ef94-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-04-13 10:59 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 04/37] iommu/sva: Add a mm_exit callback for device drivers Jean-Philippe Brucker
[not found] ` <20180212183352.22730-5-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-02-13 8:11 ` Tian, Kevin
2018-02-13 12:57 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 10/37] iommu/fault: Allow blocking fault handlers Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 13/37] arm64: mm: Pin down ASIDs for sharing mm with devices Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 14/37] iommu/arm-smmu-v3: Link domains and devices Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 16/37] iommu: Add generic PASID table library Jean-Philippe Brucker
[not found] ` <20180212183352.22730-17-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-02-27 18:51 ` Jacob Pan
2018-02-28 16:22 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 17/37] iommu/arm-smmu-v3: Move context descriptor code Jean-Philippe Brucker
[not found] ` <20180212183352.22730-18-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-03-09 11:44 ` Jonathan Cameron
[not found] ` <20180309124445.00005e08-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2018-03-14 13:08 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 19/37] iommu/arm-smmu-v3: Add second level of context descriptor table Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 21/37] iommu/arm-smmu-v3: Seize private ASID Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 22/37] iommu/arm-smmu-v3: Add support for VHE Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 24/37] iommu/arm-smmu-v3: Add SVA feature checking Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 25/37] iommu/arm-smmu-v3: Implement mm operations Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 27/37] iommu/arm-smmu-v3: Register fault workqueue Jean-Philippe Brucker
[not found] ` <20180212183352.22730-28-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-03-08 17:44 ` Jonathan Cameron
[not found] ` <20180308184454.00000b4e-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2018-03-14 13:08 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 28/37] iommu/arm-smmu-v3: Maintain a SID->device structure Jean-Philippe Brucker
[not found] ` <20180212183352.22730-29-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-03-08 17:34 ` Jonathan Cameron
[not found] ` <20180308183431.00005f86-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2018-03-14 13:09 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 29/37] iommu/arm-smmu-v3: Add stall support for platform devices Jean-Philippe Brucker
2018-02-13 1:46 ` Xu Zaibo [this message]
[not found] ` <5A824359.1080005-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2018-02-13 12:58 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 30/37] ACPI/IORT: Check ATS capability in root complex nodes Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 31/37] iommu/arm-smmu-v3: Add support for PCI ATS Jean-Philippe Brucker
[not found] ` <20180212183352.22730-32-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-03-08 16:17 ` Jonathan Cameron
[not found] ` <20180308171725.0000763c-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2018-03-14 13:09 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 32/37] iommu/arm-smmu-v3: Hook up ATC invalidation to mm ops Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 33/37] iommu/arm-smmu-v3: Disable tagged pointers Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 35/37] iommu/arm-smmu-v3: Add support for PRI Jean-Philippe Brucker
[not found] ` <20180212183352.22730-36-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-03-05 12:29 ` Dongdong Liu
[not found] ` <6f55afcf-04b0-0dc4-6c75-064b70e6851c-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2018-03-05 13:09 ` Jean-Philippe Brucker
2018-03-08 16:24 ` Jonathan Cameron
[not found] ` <20180308172436.00006554-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2018-03-14 13:10 ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 20/37] iommu/arm-smmu-v3: Share process page tables Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 23/37] iommu/arm-smmu-v3: Enable broadcast TLB maintenance Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 26/37] iommu/arm-smmu-v3: Add support for Hardware Translation Table Update Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 34/37] PCI: Make "PRG Response PASID Required" handling common Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 36/37] iommu/arm-smmu-v3: Add support for PCI PASID Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 37/37] vfio: Add support for Shared Virtual Addressing Jean-Philippe Brucker
[not found] ` <20180212183352.22730-38-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2018-02-16 19:33 ` Alex Williamson
[not found] ` <20180216123329.10f6dc23-DGNDKt5SQtizQB+pC5nmwQ@public.gmane.org>
2018-02-20 11:26 ` Jean-Philippe Brucker
2018-02-28 1:26 ` Sinan Kaya
[not found] ` <1e76c66c-952e-71bd-d831-d3a1ded9559c-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-02-28 16:25 ` Jean-Philippe Brucker
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=5A824359.1080005@huawei.com \
--to=xuzaibo@huawei.com \
--cc=alex.williamson@redhat.com \
--cc=ashok.raj@intel.com \
--cc=bharatku@xilinx.com \
--cc=bhelgaas@google.com \
--cc=catalin.marinas@arm.com \
--cc=christian.koenig@amd.com \
--cc=devicetree@vger.kernel.org \
--cc=dwmw2@infradead.org \
--cc=hanjun.guo@linaro.org \
--cc=ilias.apalodimas@linaro.org \
--cc=iommu@lists.linux-foundation.org \
--cc=jacob.jun.pan@linux.intel.com \
--cc=jcrouse@codeaurora.org \
--cc=jean-philippe.brucker@arm.com \
--cc=jonathan.cameron@huawei.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=liubo95@huawei.com \
--cc=lorenzo.pieralisi@arm.com \
--cc=mark.rutland@arm.com \
--cc=nwatters@codeaurora.org \
--cc=okaya@codeaurora.org \
--cc=rfranz@cavium.com \
--cc=rjw@rjwysocki.net \
--cc=robdclark@gmail.com \
--cc=robh+dt@kernel.org \
--cc=robin.murphy@arm.com \
--cc=shunyong.yang@hxt-semitech.com \
--cc=sudeep.holla@arm.com \
--cc=thunder.leizhen@huawei.com \
--cc=tn@semihalf.com \
--cc=will.deacon@arm.com \
--cc=xieyisheng1@huawei.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).