From: Jacob Pan <jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Joerg Roedel <joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>,
David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Greg Kroah-Hartman
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
Rafael Wysocki
<rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Jean-Philippe Brucker
<jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
Cc: Lan Tianyu <tianyu.lan-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Subject: [PATCH v2 07/16] iommu/vt-d: assign PFSID in device TLB invalidation
Date: Thu, 5 Oct 2017 16:03:35 -0700 [thread overview]
Message-ID: <1507244624-39189-8-git-send-email-jacob.jun.pan@linux.intel.com> (raw)
In-Reply-To: <1507244624-39189-1-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
When SRIOV VF device IOTLB is invalidated, we need to provide
the PF source SID such that IOMMU hardware can gauge the depth
of invalidation queue which is shared among VFs. This is needed
when device invalidation throttle (DIT) capability is supported.
Signed-off-by: Jacob Pan <jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
---
drivers/iommu/intel-iommu.c | 13 +++++++++++++
include/linux/intel-iommu.h | 3 +++
2 files changed, 16 insertions(+)
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index e5a5209..ede0f2e 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -1484,6 +1484,19 @@ static void iommu_enable_dev_iotlb(struct device_domain_info *info)
return;
pdev = to_pci_dev(info->dev);
+ /* For IOMMU that supports device IOTLB throttling (DIT), we assign
+ * PFSID to the invalidation desc of a VF such that IOMMU HW can gauge
+ * queue depth at PF level. If DIT is not set, PFSID will be treated as
+ * reserved, which should be set to 0.
+ */
+ if (!ecap_dit(info->iommu->ecap))
+ info->pfsid = 0;
+ else if (pdev && pdev->is_virtfn) {
+ if (ecap_dit(info->iommu->ecap))
+ dev_warn(&pdev->dev, "SRIOV VF device IOTLB enabled without flow control\n");
+ info->pfsid = PCI_DEVID(pdev->physfn->bus->number, pdev->physfn->devfn);
+ } else
+ info->pfsid = PCI_DEVID(info->bus, info->devfn);
#ifdef CONFIG_INTEL_IOMMU_SVM
/* The PCIe spec, in its wisdom, declares that the behaviour of
diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
index f42b46c..c8ac5c6 100644
--- a/include/linux/intel-iommu.h
+++ b/include/linux/intel-iommu.h
@@ -112,6 +112,7 @@
* Extended Capability Register
*/
+#define ecap_dit(e) ((e >> 41) & 0x1)
#define ecap_pasid(e) ((e >> 40) & 0x1)
#define ecap_pss(e) ((e >> 35) & 0x1f)
#define ecap_eafs(e) ((e >> 34) & 0x1)
@@ -285,6 +286,7 @@ enum {
#define QI_DEV_IOTLB_SID(sid) ((u64)((sid) & 0xffff) << 32)
#define QI_DEV_IOTLB_QDEP(qdep) (((qdep) & 0x1f) << 16)
#define QI_DEV_IOTLB_ADDR(addr) ((u64)(addr) & VTD_PAGE_MASK)
+#define QI_DEV_IOTLB_PFSID(pfsid) (((u64)(pfsid & 0xf) << 12) | ((u64)(pfsid & 0xff0) << 48))
#define QI_DEV_IOTLB_SIZE 1
#define QI_DEV_IOTLB_MAX_INVS 32
@@ -442,6 +444,7 @@ struct device_domain_info {
struct list_head global; /* link to global list */
u8 bus; /* PCI bus number */
u8 devfn; /* PCI devfn number */
+ u16 pfsid; /* SRIOV physical function source ID */
u8 pasid_supported:3;
u8 pasid_enabled:1;
u8 pri_supported:1;
--
2.7.4
next prev parent reply other threads:[~2017-10-05 23:03 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-05 23:03 [PATCH v2 00/16] IOMMU driver support for SVM virtualization Jacob Pan
2017-10-05 23:03 ` [PATCH v2 03/16] iommu: introduce iommu invalidate API function Jacob Pan
[not found] ` <1507244624-39189-4-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-10-10 13:35 ` Joerg Roedel
2017-10-10 22:09 ` Jacob Pan
2017-10-11 7:54 ` Liu, Yi L
2017-10-11 9:51 ` Joerg Roedel
2017-10-11 11:54 ` Liu, Yi L
2017-10-11 12:15 ` Joerg Roedel
[not found] ` <20171011121534.GG30803-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-10-11 12:48 ` Jean-Philippe Brucker
[not found] ` <3cdbce19-9264-b2d0-745b-8d32d5b8cfe7-5wv7dgnIgG8@public.gmane.org>
2017-10-12 7:43 ` Joerg Roedel
2017-10-12 9:38 ` Bob Liu
[not found] ` <541498d5-0478-0b9a-6c01-12f7dc30ebf3-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2017-10-12 9:50 ` Liu, Yi L
[not found] ` <A2975661238FB949B60364EF0F2C257439AF6AFB-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2017-10-12 10:07 ` Bob Liu
[not found] ` <5cc5b52c-27da-7bb5-4968-e46ed6d44fc0-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2017-10-12 10:26 ` Jean-Philippe Brucker
2017-10-12 10:33 ` Liu, Yi L
[not found] ` <1507244624-39189-1-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-10-05 23:03 ` [PATCH v2 01/16] iommu: introduce bind_pasid_table " Jacob Pan
2017-10-10 13:14 ` Joerg Roedel
[not found] ` <20171010131433.fgo5tnwidzywfnx4-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-10-10 21:32 ` Jacob Pan
[not found] ` <1507244624-39189-2-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-10-10 16:45 ` Jean-Philippe Brucker
[not found] ` <59945b24-ace9-f0c1-d68d-ccd929e1fe28-5wv7dgnIgG8@public.gmane.org>
2017-10-10 21:42 ` Jacob Pan
2017-10-11 9:17 ` Jean-Philippe Brucker
2017-10-05 23:03 ` [PATCH v2 02/16] iommu/vt-d: add bind_pasid_table function Jacob Pan
[not found] ` <1507244624-39189-3-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-10-10 13:21 ` Joerg Roedel
2017-10-12 11:12 ` Liu, Yi L
[not found] ` <A2975661238FB949B60364EF0F2C257439AF6CDD-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2017-10-12 17:38 ` Jacob Pan
2017-10-05 23:03 ` [PATCH v2 04/16] iommu/vt-d: support flushing more TLB types Jacob Pan
2017-10-26 13:02 ` [v2,04/16] " Lukoshkov, Maksim
[not found] ` <c7d32ea1-fc82-fdef-c275-d4e29d428094-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-10-31 20:39 ` Jacob Pan
2017-10-05 23:03 ` [PATCH v2 05/16] iommu/vt-d: add iommu invalidate function Jacob Pan
2017-10-05 23:03 ` [PATCH v2 06/16] iommu/vt-d: move device_domain_info to header Jacob Pan
2017-10-05 23:03 ` Jacob Pan [this message]
2017-10-05 23:03 ` [PATCH v2 08/16] iommu: introduce device fault data Jacob Pan
[not found] ` <1507244624-39189-9-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-10-10 19:29 ` Jean-Philippe Brucker
2017-10-10 21:43 ` Jacob Pan
[not found] ` <439401c0-a9ff-a69a-dc10-12d72f7abbab-5wv7dgnIgG8@public.gmane.org>
2017-10-20 10:07 ` Liu, Yi L
[not found] ` <A2975661238FB949B60364EF0F2C257439AFC86D-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2017-11-06 19:01 ` Jean-Philippe Brucker
2017-11-07 8:40 ` Liu, Yi L
[not found] ` <A2975661238FB949B60364EF0F2C257439B06809-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2017-11-07 11:38 ` Jean-Philippe Brucker
[not found] ` <e95ce88b-7e88-5b1c-3a68-9ac40773a8f6-5wv7dgnIgG8@public.gmane.org>
2017-11-09 19:36 ` Jacob Pan
2017-11-10 13:54 ` Jean-Philippe Brucker
2017-11-10 22:18 ` Jacob Pan
2017-11-13 13:06 ` Jean-Philippe Brucker
[not found] ` <d9df78f3-6fed-f09b-88d5-5ff765ff5fd9-5wv7dgnIgG8@public.gmane.org>
2017-11-13 16:57 ` Jacob Pan
2017-11-13 17:23 ` Jean-Philippe Brucker
[not found] ` <0ed3e52b-2ca7-e378-817b-34b517a392da-5wv7dgnIgG8@public.gmane.org>
2017-11-11 0:00 ` Jacob Pan
2017-11-13 13:19 ` Jean-Philippe Brucker
[not found] ` <6ffb6485-669d-aecb-3088-9a5ef7563840-5wv7dgnIgG8@public.gmane.org>
2017-11-13 16:12 ` Jacob Pan
2017-10-05 23:03 ` [PATCH v2 09/16] driver core: add iommu device fault reporting data Jacob Pan
[not found] ` <1507244624-39189-10-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-10-06 5:43 ` Greg Kroah-Hartman
2017-10-06 7:11 ` Christoph Hellwig
2017-10-06 8:26 ` Greg Kroah-Hartman
[not found] ` <20171006071145.GA24354-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2017-10-06 8:39 ` Joerg Roedel
[not found] ` <20171006083931.GY8398-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-10-06 16:22 ` Jacob Pan
2017-10-05 23:03 ` [PATCH v2 10/16] iommu: introduce device fault report API Jacob Pan
[not found] ` <1507244624-39189-11-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-10-06 9:36 ` Jean-Philippe Brucker
[not found] ` <5103e49c-d74c-c697-b5f7-e5c54edce595-5wv7dgnIgG8@public.gmane.org>
2017-10-09 18:50 ` Jacob Pan
2017-10-10 13:40 ` Joerg Roedel
2017-10-11 17:21 ` Jacob Pan
2017-10-05 23:03 ` [PATCH v2 11/16] iommu/vt-d: use threaded irq for dmar_fault Jacob Pan
2017-10-05 23:03 ` [PATCH v2 12/16] iommu/vt-d: report unrecoverable device faults Jacob Pan
2017-10-05 23:03 ` [PATCH v2 13/16] iommu/intel-svm: notify page request to guest Jacob Pan
2017-10-05 23:03 ` [PATCH v2 14/16] iommu/intel-svm: replace dev ops with fault report API Jacob Pan
2017-10-05 23:03 ` [PATCH v2 15/16] iommu: introduce page response function Jacob Pan
2017-10-05 23:03 ` [PATCH v2 16/16] iommu/vt-d: add intel iommu " Jacob Pan
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=1507244624-39189-8-git-send-email-jacob.jun.pan@linux.intel.com \
--to=jacob.jun.pan-vuqaysv1563yd54fqh9/ca@public.gmane.org \
--cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org \
--cc=joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=tianyu.lan-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).