linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yisheng Xie <xieyisheng1@huawei.com>
To: <jean-philippe.brucker@arm.com>
Cc: <joro@8bytes.org>, <robh+dt@kernel.org>, <mark.rutland@arm.com>,
	<lorenzo.pieralisi@arm.com>, <hanjun.guo@linaro.org>,
	<sudeep.holla@arm.com>, <rjw@rjwysocki.net>, <lenb@kernel.org>,
	<will.deacon@arm.com>, <robin.murphy@arm.com>,
	<robert.moore@intel.com>, <lv.zheng@intel.com>,
	<iommu@lists.linux-foundation.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <devel@acpica.org>,
	<liubo95@huawei.com>, <chenjiankang1@huawei.com>,
	<xieyisheng@huawei.com>
Subject: [RFC PATCH 3/6] ACPI: IORT: Add stall and pasid properties to iommu_fwspec
Date: Thu, 31 Aug 2017 16:20:39 +0800	[thread overview]
Message-ID: <1504167642-14922-4-git-send-email-xieyisheng1@huawei.com> (raw)
In-Reply-To: <1504167642-14922-1-git-send-email-xieyisheng1@huawei.com>

According to ACPI IORT spec, named component specific data has a node
flags field whoes bit0 is for Stall support. However, it do not have any
field for pasid bit.

As PCIe SMMU support 20 pasid bits, this patch suggest to use 5 bits[5:1]
in node flags field for pasid bits which means we can have 32 pasid bits.
And this should be enough for platform device. Anyway, this is just a RFC.

Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
---
 drivers/acpi/arm64/iort.c | 20 ++++++++++++++++++++
 include/acpi/actbl2.h     |  5 +++++
 2 files changed, 25 insertions(+)

diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index 4d9ccdd0..514caca3 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -710,6 +710,22 @@ static bool iort_pci_rc_supports_ats(struct acpi_iort_node *node)
 	return pci_rc->ats_attribute & ACPI_IORT_ATS_SUPPORTED;
 }
 
+static bool iort_platform_support_stall(struct acpi_iort_node *node)
+{
+	struct acpi_iort_named_component *ncomp;
+
+	ncomp = (struct acpi_iort_named_component *)node->node_data;
+	return ncomp->node_flags & ACPI_IORT_STALL_SUPPORTED;
+}
+
+static unsigned long iort_platform_get_pasid_bits(struct acpi_iort_node *node)
+{
+	struct acpi_iort_named_component *ncomp;
+
+	ncomp = (struct acpi_iort_named_component *)node->node_data;
+	return (ncomp->node_flags & ACPI_IORT_PASID_BITS_MASK) >> ACPI_IORT_PASID_BITS_SHIFT;
+}
+
 /**
  * iort_iommu_configure - Set-up IOMMU configuration for a device.
  *
@@ -772,6 +788,10 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev)
 							   IORT_IOMMU_TYPE,
 							   i++);
 		}
+		if (!IS_ERR_OR_NULL(ops)) {
+			dev->iommu_fwspec->can_stall = iort_platform_support_stall(node);
+			dev->iommu_fwspec->num_pasid_bits = iort_platform_get_pasid_bits(node);
+		}
 	}
 
 	/*
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
index 707dda74..125b150 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -749,6 +749,11 @@ struct acpi_iort_named_component {
 	char device_name[1];	/* Path of namespace object */
 };
 
+#define ACPI_IORT_STALL_SUPPORTED	0x00000001	/* The platform device supports stall */
+#define ACPI_IORT_STALL_UNSUPPORTED	0x00000000	/* The platform device doesn't support stall */
+#define ACPI_IORT_PASID_BITS_MASK	0x0000003e	/* 5 bits for PASID BITS */
+#define ACPI_IORT_PASID_BITS_SHIFT	1		/* PASID BITS numbers shift */
+
 struct acpi_iort_root_complex {
 	u64 memory_properties;	/* Memory access properties */
 	u32 ats_attribute;
-- 
1.7.12.4

  parent reply	other threads:[~2017-08-31  8:29 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-31  8:20 [RFC PATCH 0/6] Add platform device SVM support for ARM SMMUv3 Yisheng Xie
2017-08-31  8:20 ` [RFC PATCH 1/6] dt-bindings: document stall and PASID properties for IOMMU masters Yisheng Xie
2017-09-05 12:52   ` Jean-Philippe Brucker
2017-08-31  8:20 ` [RFC PATCH 2/6] iommu/of: Add stall and pasid properties to iommu_fwspec Yisheng Xie
2017-09-05 12:52   ` Jean-Philippe Brucker
2017-08-31  8:20 ` Yisheng Xie [this message]
2017-08-31  8:20 ` [RFC PATCH 4/6] iommu/arm-smmu-v3: Add SVM support for platform devices Yisheng Xie
2017-09-05 12:53   ` Jean-Philippe Brucker
2017-09-06  0:51     ` Bob Liu
2017-09-06  1:20       ` Yisheng Xie
2017-08-31  8:20 ` [RFC PATCH 5/6] iommu/arm-smmu-v3: fix panic when handle stall mode irq Yisheng Xie
2017-09-05 12:53   ` Jean-Philippe Brucker
2017-08-31  8:20 ` [RFC PATCH 6/6] iommu/arm-smmu-v3: Avoid ILLEGAL setting of STE.S1STALLD and CD.S Yisheng Xie
2017-09-05 12:54   ` Jean-Philippe Brucker
2017-09-06  2:23     ` Yisheng Xie
2017-09-13  3:06     ` Will Deacon
2017-09-13 10:11       ` Yisheng Xie
2017-09-13 15:47         ` Jean-Philippe Brucker
2017-09-13 17:11         ` Will Deacon
2017-09-05 12:56 ` [RFC PATCH 0/6] Add platform device SVM support for ARM SMMUv3 Jean-Philippe Brucker
2017-09-06  1:02   ` Bob Liu
2017-09-06  9:57     ` Jean-Philippe Brucker
2017-09-07  1:41       ` Bob Liu
2017-09-07 16:32         ` Jean-Philippe Brucker
2017-09-13  1:11       ` Bob Liu
2017-09-06  1:16   ` Yisheng Xie
2017-09-06  9:59     ` Jean-Philippe Brucker
2017-09-07  1:55       ` Bob Liu
2017-09-07 16:30         ` Jean-Philippe Brucker
2017-09-06  1:24 ` Hanjun Guo

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=1504167642-14922-4-git-send-email-xieyisheng1@huawei.com \
    --to=xieyisheng1@huawei.com \
    --cc=chenjiankang1@huawei.com \
    --cc=devel@acpica.org \
    --cc=devicetree@vger.kernel.org \
    --cc=hanjun.guo@linaro.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jean-philippe.brucker@arm.com \
    --cc=joro@8bytes.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=liubo95@huawei.com \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=lv.zheng@intel.com \
    --cc=mark.rutland@arm.com \
    --cc=rjw@rjwysocki.net \
    --cc=robert.moore@intel.com \
    --cc=robh+dt@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=sudeep.holla@arm.com \
    --cc=will.deacon@arm.com \
    --cc=xieyisheng@huawei.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).