* [PATCHv3 1/6] iommu: arm-smmu-impl: Convert to a generic reset implementation
2020-04-20 16:41 [PATCHv3 0/6] iommu/arm-smmu: Allow client devices to select identity mapping Sai Prakash Ranjan
@ 2020-04-20 16:41 ` Sai Prakash Ranjan
2020-04-20 16:42 ` [PATCHv3 2/6] iommu/arm-smmu: Allow client devices to select direct mapping Sai Prakash Ranjan
` (4 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: Sai Prakash Ranjan @ 2020-04-20 16:41 UTC (permalink / raw)
To: Will Deacon, Robin Murphy, Joerg Roedel, Sibi Sankar,
Bjorn Andersson, Jordan Crouse, Rob Clark
Cc: Stephen Boyd, iommu, linux-arm-kernel, linux-kernel,
linux-arm-msm, Matthias Kaehlcke, Evan Green, Sai Prakash Ranjan
Currently the QCOM specific smmu reset implementation is very
specific to SDM845 SoC and has a wait-for-safe logic which
may not be required for other SoCs. So move the SDM845 specific
logic to its specific reset function. Also add SC7180 SMMU
compatible for calling into QCOM specific implementation.
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
---
drivers/iommu/arm-smmu-impl.c | 8 +++++---
drivers/iommu/arm-smmu-qcom.c | 16 +++++++++++++---
2 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/drivers/iommu/arm-smmu-impl.c b/drivers/iommu/arm-smmu-impl.c
index 74d97a886e93..c75b9d957b70 100644
--- a/drivers/iommu/arm-smmu-impl.c
+++ b/drivers/iommu/arm-smmu-impl.c
@@ -150,6 +150,8 @@ static const struct arm_smmu_impl arm_mmu500_impl = {
struct arm_smmu_device *arm_smmu_impl_init(struct arm_smmu_device *smmu)
{
+ const struct device_node *np = smmu->dev->of_node;
+
/*
* We will inevitably have to combine model-specific implementation
* quirks with platform-specific integration quirks, but everything
@@ -166,11 +168,11 @@ struct arm_smmu_device *arm_smmu_impl_init(struct arm_smmu_device *smmu)
break;
}
- if (of_property_read_bool(smmu->dev->of_node,
- "calxeda,smmu-secure-config-access"))
+ if (of_property_read_bool(np, "calxeda,smmu-secure-config-access"))
smmu->impl = &calxeda_impl;
- if (of_device_is_compatible(smmu->dev->of_node, "qcom,sdm845-smmu-500"))
+ if (of_device_is_compatible(np, "qcom,sdm845-smmu-500") ||
+ of_device_is_compatible(np, "qcom,sc7180-smmu-500"))
return qcom_smmu_impl_init(smmu);
return smmu;
diff --git a/drivers/iommu/arm-smmu-qcom.c b/drivers/iommu/arm-smmu-qcom.c
index 24c071c1d8b0..64a4ab270ab7 100644
--- a/drivers/iommu/arm-smmu-qcom.c
+++ b/drivers/iommu/arm-smmu-qcom.c
@@ -15,8 +15,6 @@ static int qcom_sdm845_smmu500_reset(struct arm_smmu_device *smmu)
{
int ret;
- arm_mmu500_reset(smmu);
-
/*
* To address performance degradation in non-real time clients,
* such as USB and UFS, turn off wait-for-safe on sdm845 based boards,
@@ -30,8 +28,20 @@ static int qcom_sdm845_smmu500_reset(struct arm_smmu_device *smmu)
return ret;
}
+static int qcom_smmu500_reset(struct arm_smmu_device *smmu)
+{
+ const struct device_node *np = smmu->dev->of_node;
+
+ arm_mmu500_reset(smmu);
+
+ if (of_device_is_compatible(np, "qcom,sdm845-smmu-500"))
+ return qcom_sdm845_smmu500_reset(smmu);
+
+ return 0;
+}
+
static const struct arm_smmu_impl qcom_smmu_impl = {
- .reset = qcom_sdm845_smmu500_reset,
+ .reset = qcom_smmu500_reset,
};
struct arm_smmu_device *qcom_smmu_impl_init(struct arm_smmu_device *smmu)
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCHv3 2/6] iommu/arm-smmu: Allow client devices to select direct mapping
2020-04-20 16:41 [PATCHv3 0/6] iommu/arm-smmu: Allow client devices to select identity mapping Sai Prakash Ranjan
2020-04-20 16:41 ` [PATCHv3 1/6] iommu: arm-smmu-impl: Convert to a generic reset implementation Sai Prakash Ranjan
@ 2020-04-20 16:42 ` Sai Prakash Ranjan
2020-04-20 16:57 ` Robin Murphy
2020-04-20 16:42 ` [PATCHv3 3/6] iommu/arm-smmu: Implement iommu_ops->def_domain_type call-back Sai Prakash Ranjan
` (3 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: Sai Prakash Ranjan @ 2020-04-20 16:42 UTC (permalink / raw)
To: Will Deacon, Robin Murphy, Joerg Roedel, Sibi Sankar,
Bjorn Andersson, Jordan Crouse, Rob Clark
Cc: Stephen Boyd, iommu, linux-arm-kernel, linux-kernel,
linux-arm-msm, Matthias Kaehlcke, Evan Green, Sai Prakash Ranjan
From: Jordan Crouse <jcrouse@codeaurora.org>
Some client devices want to directly map the IOMMU themselves instead
of using the DMA domain. Allow those devices to opt in to direct
mapping by way of a list of compatible strings.
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Co-developed-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
---
drivers/iommu/arm-smmu-qcom.c | 19 +++++++++++++++++++
drivers/iommu/arm-smmu.h | 1 +
2 files changed, 20 insertions(+)
diff --git a/drivers/iommu/arm-smmu-qcom.c b/drivers/iommu/arm-smmu-qcom.c
index 64a4ab270ab7..5bedf21587a5 100644
--- a/drivers/iommu/arm-smmu-qcom.c
+++ b/drivers/iommu/arm-smmu-qcom.c
@@ -3,6 +3,7 @@
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*/
+#include <linux/of_device.h>
#include <linux/qcom_scm.h>
#include "arm-smmu.h"
@@ -11,6 +12,23 @@ struct qcom_smmu {
struct arm_smmu_device smmu;
};
+static const struct of_device_id qcom_smmu_client_of_match[] = {
+ { .compatible = "qcom,adreno" },
+ { .compatible = "qcom,mdp4" },
+ { .compatible = "qcom,mdss" },
+ { .compatible = "qcom,sc7180-mdss" },
+ { .compatible = "qcom,sdm845-mdss" },
+ { }
+};
+
+static int qcom_smmu_def_domain_type(struct device *dev)
+{
+ const struct of_device_id *match =
+ of_match_device(qcom_smmu_client_of_match, dev);
+
+ return match ? IOMMU_DOMAIN_IDENTITY : 0;
+}
+
static int qcom_sdm845_smmu500_reset(struct arm_smmu_device *smmu)
{
int ret;
@@ -41,6 +59,7 @@ static int qcom_smmu500_reset(struct arm_smmu_device *smmu)
}
static const struct arm_smmu_impl qcom_smmu_impl = {
+ .def_domain_type = qcom_smmu_def_domain_type,
.reset = qcom_smmu500_reset,
};
diff --git a/drivers/iommu/arm-smmu.h b/drivers/iommu/arm-smmu.h
index 8d1cd54d82a6..d172c024be61 100644
--- a/drivers/iommu/arm-smmu.h
+++ b/drivers/iommu/arm-smmu.h
@@ -386,6 +386,7 @@ struct arm_smmu_impl {
int (*init_context)(struct arm_smmu_domain *smmu_domain);
void (*tlb_sync)(struct arm_smmu_device *smmu, int page, int sync,
int status);
+ int (*def_domain_type)(struct device *dev);
};
static inline void __iomem *arm_smmu_page(struct arm_smmu_device *smmu, int n)
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCHv3 2/6] iommu/arm-smmu: Allow client devices to select direct mapping
2020-04-20 16:42 ` [PATCHv3 2/6] iommu/arm-smmu: Allow client devices to select direct mapping Sai Prakash Ranjan
@ 2020-04-20 16:57 ` Robin Murphy
2020-04-20 18:36 ` Sai Prakash Ranjan
0 siblings, 1 reply; 12+ messages in thread
From: Robin Murphy @ 2020-04-20 16:57 UTC (permalink / raw)
To: Sai Prakash Ranjan, Will Deacon, Joerg Roedel, Sibi Sankar,
Bjorn Andersson, Jordan Crouse, Rob Clark
Cc: Stephen Boyd, iommu, linux-arm-kernel, linux-kernel,
linux-arm-msm, Matthias Kaehlcke, Evan Green
On 2020-04-20 5:42 pm, Sai Prakash Ranjan wrote:
> From: Jordan Crouse <jcrouse@codeaurora.org>
>
> Some client devices want to directly map the IOMMU themselves instead
> of using the DMA domain. Allow those devices to opt in to direct
> mapping by way of a list of compatible strings.
Neat and tidy :)
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Strictly, I think patch #3/6 should really have come before this one
(with the header change moved accordingly), but don't bother resending
just for that.
Thanks,
Robin.
> Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
> Co-developed-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
> Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
> ---
> drivers/iommu/arm-smmu-qcom.c | 19 +++++++++++++++++++
> drivers/iommu/arm-smmu.h | 1 +
> 2 files changed, 20 insertions(+)
>
> diff --git a/drivers/iommu/arm-smmu-qcom.c b/drivers/iommu/arm-smmu-qcom.c
> index 64a4ab270ab7..5bedf21587a5 100644
> --- a/drivers/iommu/arm-smmu-qcom.c
> +++ b/drivers/iommu/arm-smmu-qcom.c
> @@ -3,6 +3,7 @@
> * Copyright (c) 2019, The Linux Foundation. All rights reserved.
> */
>
> +#include <linux/of_device.h>
> #include <linux/qcom_scm.h>
>
> #include "arm-smmu.h"
> @@ -11,6 +12,23 @@ struct qcom_smmu {
> struct arm_smmu_device smmu;
> };
>
> +static const struct of_device_id qcom_smmu_client_of_match[] = {
> + { .compatible = "qcom,adreno" },
> + { .compatible = "qcom,mdp4" },
> + { .compatible = "qcom,mdss" },
> + { .compatible = "qcom,sc7180-mdss" },
> + { .compatible = "qcom,sdm845-mdss" },
> + { }
> +};
> +
> +static int qcom_smmu_def_domain_type(struct device *dev)
> +{
> + const struct of_device_id *match =
> + of_match_device(qcom_smmu_client_of_match, dev);
> +
> + return match ? IOMMU_DOMAIN_IDENTITY : 0;
> +}
> +
> static int qcom_sdm845_smmu500_reset(struct arm_smmu_device *smmu)
> {
> int ret;
> @@ -41,6 +59,7 @@ static int qcom_smmu500_reset(struct arm_smmu_device *smmu)
> }
>
> static const struct arm_smmu_impl qcom_smmu_impl = {
> + .def_domain_type = qcom_smmu_def_domain_type,
> .reset = qcom_smmu500_reset,
> };
>
> diff --git a/drivers/iommu/arm-smmu.h b/drivers/iommu/arm-smmu.h
> index 8d1cd54d82a6..d172c024be61 100644
> --- a/drivers/iommu/arm-smmu.h
> +++ b/drivers/iommu/arm-smmu.h
> @@ -386,6 +386,7 @@ struct arm_smmu_impl {
> int (*init_context)(struct arm_smmu_domain *smmu_domain);
> void (*tlb_sync)(struct arm_smmu_device *smmu, int page, int sync,
> int status);
> + int (*def_domain_type)(struct device *dev);
> };
>
> static inline void __iomem *arm_smmu_page(struct arm_smmu_device *smmu, int n)
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv3 2/6] iommu/arm-smmu: Allow client devices to select direct mapping
2020-04-20 16:57 ` Robin Murphy
@ 2020-04-20 18:36 ` Sai Prakash Ranjan
0 siblings, 0 replies; 12+ messages in thread
From: Sai Prakash Ranjan @ 2020-04-20 18:36 UTC (permalink / raw)
To: Robin Murphy
Cc: Will Deacon, Joerg Roedel, Sibi Sankar, Bjorn Andersson,
Jordan Crouse, Rob Clark, Stephen Boyd, iommu, linux-arm-kernel,
linux-kernel, linux-arm-msm, Matthias Kaehlcke, Evan Green
On 2020-04-20 22:27, Robin Murphy wrote:
> On 2020-04-20 5:42 pm, Sai Prakash Ranjan wrote:
>> From: Jordan Crouse <jcrouse@codeaurora.org>
>>
>> Some client devices want to directly map the IOMMU themselves instead
>> of using the DMA domain. Allow those devices to opt in to direct
>> mapping by way of a list of compatible strings.
>
> Neat and tidy :)
>
> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
>
> Strictly, I think patch #3/6 should really have come before this one
> (with the header change moved accordingly), but don't bother resending
> just for that.
>
Thanks, I have sent the updated version with this change as well
in addition to the commit msg update for modem requesting direct
mapping.
Thanks,
Sai
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member
of Code Aurora Forum, hosted by The Linux Foundation
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCHv3 3/6] iommu/arm-smmu: Implement iommu_ops->def_domain_type call-back
2020-04-20 16:41 [PATCHv3 0/6] iommu/arm-smmu: Allow client devices to select identity mapping Sai Prakash Ranjan
2020-04-20 16:41 ` [PATCHv3 1/6] iommu: arm-smmu-impl: Convert to a generic reset implementation Sai Prakash Ranjan
2020-04-20 16:42 ` [PATCHv3 2/6] iommu/arm-smmu: Allow client devices to select direct mapping Sai Prakash Ranjan
@ 2020-04-20 16:42 ` Sai Prakash Ranjan
2020-04-20 16:59 ` Robin Murphy
2020-04-20 16:42 ` [PATCHv3 4/6] iommu/arm-smmu-qcom: Request direct mapping for modem device Sai Prakash Ranjan
` (2 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: Sai Prakash Ranjan @ 2020-04-20 16:42 UTC (permalink / raw)
To: Will Deacon, Robin Murphy, Joerg Roedel, Sibi Sankar,
Bjorn Andersson, Jordan Crouse, Rob Clark
Cc: Stephen Boyd, iommu, linux-arm-kernel, linux-kernel,
linux-arm-msm, Matthias Kaehlcke, Evan Green, Sai Prakash Ranjan
Implement the new def_domain_type call-back for the ARM
SMMU driver. We need this to support requesting the domain
type by the client devices.
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
---
drivers/iommu/arm-smmu.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index e622f4e33379..b345a86085ce 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -1609,6 +1609,17 @@ static void arm_smmu_get_resv_regions(struct device *dev,
iommu_dma_get_resv_regions(dev, head);
}
+static int arm_smmu_def_domain_type(struct device *dev)
+{
+ struct arm_smmu_master_cfg *cfg = dev_iommu_priv_get(dev);
+ const struct arm_smmu_impl *impl = cfg->smmu->impl;
+
+ if (impl && impl->def_domain_type)
+ return impl->def_domain_type(dev);
+
+ return 0;
+}
+
static struct iommu_ops arm_smmu_ops = {
.capable = arm_smmu_capable,
.domain_alloc = arm_smmu_domain_alloc,
@@ -1627,6 +1638,7 @@ static struct iommu_ops arm_smmu_ops = {
.of_xlate = arm_smmu_of_xlate,
.get_resv_regions = arm_smmu_get_resv_regions,
.put_resv_regions = generic_iommu_put_resv_regions,
+ .def_domain_type = arm_smmu_def_domain_type,
.pgsize_bitmap = -1UL, /* Restricted during device attach */
};
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCHv3 3/6] iommu/arm-smmu: Implement iommu_ops->def_domain_type call-back
2020-04-20 16:42 ` [PATCHv3 3/6] iommu/arm-smmu: Implement iommu_ops->def_domain_type call-back Sai Prakash Ranjan
@ 2020-04-20 16:59 ` Robin Murphy
0 siblings, 0 replies; 12+ messages in thread
From: Robin Murphy @ 2020-04-20 16:59 UTC (permalink / raw)
To: Sai Prakash Ranjan, Will Deacon, Joerg Roedel, Sibi Sankar,
Bjorn Andersson, Jordan Crouse, Rob Clark
Cc: Stephen Boyd, iommu, linux-arm-kernel, linux-kernel,
linux-arm-msm, Matthias Kaehlcke, Evan Green
On 2020-04-20 5:42 pm, Sai Prakash Ranjan wrote:
> Implement the new def_domain_type call-back for the ARM
> SMMU driver. We need this to support requesting the domain
> type by the client devices.
Modulo any further changes to the default domain rework,
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
> ---
> drivers/iommu/arm-smmu.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
> index e622f4e33379..b345a86085ce 100644
> --- a/drivers/iommu/arm-smmu.c
> +++ b/drivers/iommu/arm-smmu.c
> @@ -1609,6 +1609,17 @@ static void arm_smmu_get_resv_regions(struct device *dev,
> iommu_dma_get_resv_regions(dev, head);
> }
>
> +static int arm_smmu_def_domain_type(struct device *dev)
> +{
> + struct arm_smmu_master_cfg *cfg = dev_iommu_priv_get(dev);
> + const struct arm_smmu_impl *impl = cfg->smmu->impl;
> +
> + if (impl && impl->def_domain_type)
> + return impl->def_domain_type(dev);
> +
> + return 0;
> +}
> +
> static struct iommu_ops arm_smmu_ops = {
> .capable = arm_smmu_capable,
> .domain_alloc = arm_smmu_domain_alloc,
> @@ -1627,6 +1638,7 @@ static struct iommu_ops arm_smmu_ops = {
> .of_xlate = arm_smmu_of_xlate,
> .get_resv_regions = arm_smmu_get_resv_regions,
> .put_resv_regions = generic_iommu_put_resv_regions,
> + .def_domain_type = arm_smmu_def_domain_type,
> .pgsize_bitmap = -1UL, /* Restricted during device attach */
> };
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCHv3 4/6] iommu/arm-smmu-qcom: Request direct mapping for modem device
2020-04-20 16:41 [PATCHv3 0/6] iommu/arm-smmu: Allow client devices to select identity mapping Sai Prakash Ranjan
` (2 preceding siblings ...)
2020-04-20 16:42 ` [PATCHv3 3/6] iommu/arm-smmu: Implement iommu_ops->def_domain_type call-back Sai Prakash Ranjan
@ 2020-04-20 16:42 ` Sai Prakash Ranjan
2020-04-20 17:09 ` Robin Murphy
2020-04-20 16:42 ` [PATCHv3 5/6] dt-bindings: remoteproc: qcom: Add iommus property Sai Prakash Ranjan
2020-04-20 16:42 ` [PATCHv3 6/6] arm64: dts: qcom: sdm845-cheza: " Sai Prakash Ranjan
5 siblings, 1 reply; 12+ messages in thread
From: Sai Prakash Ranjan @ 2020-04-20 16:42 UTC (permalink / raw)
To: Will Deacon, Robin Murphy, Joerg Roedel, Sibi Sankar,
Bjorn Andersson, Jordan Crouse, Rob Clark
Cc: Stephen Boyd, iommu, linux-arm-kernel, linux-kernel,
linux-arm-msm, Matthias Kaehlcke, Evan Green, Sai Prakash Ranjan
From: Sibi Sankar <sibis@codeaurora.org>
Request direct mapping for modem on platforms which don't have TrustZone
(which programs the modem SIDs) to prevent the following global faults seen
on Cheza/Trogdor:
arm-smmu 15000000.iommu: Unexpected global fault, this could be serious
arm-smmu 15000000.iommu: GFSR 0x80000002, GFSYNR0 0x00000000,
GFSYNR1 0x00000781, GFSYNR2 0x00000000
arm-smmu 15000000.iommu: Unexpected global fault, this could be serious
arm-smmu 15000000.iommu: GFSR 0x80000002, GFSYNR0 0x00000000,
GFSYNR1 0x00000461, GFSYNR2 0x00000000
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
---
drivers/iommu/arm-smmu-qcom.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/iommu/arm-smmu-qcom.c b/drivers/iommu/arm-smmu-qcom.c
index 5bedf21587a5..cf01d0215a39 100644
--- a/drivers/iommu/arm-smmu-qcom.c
+++ b/drivers/iommu/arm-smmu-qcom.c
@@ -17,7 +17,9 @@ static const struct of_device_id qcom_smmu_client_of_match[] = {
{ .compatible = "qcom,mdp4" },
{ .compatible = "qcom,mdss" },
{ .compatible = "qcom,sc7180-mdss" },
+ { .compatible = "qcom,sc7180-mss-pil" },
{ .compatible = "qcom,sdm845-mdss" },
+ { .compatible = "qcom,sdm845-mss-pil" },
{ }
};
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCHv3 4/6] iommu/arm-smmu-qcom: Request direct mapping for modem device
2020-04-20 16:42 ` [PATCHv3 4/6] iommu/arm-smmu-qcom: Request direct mapping for modem device Sai Prakash Ranjan
@ 2020-04-20 17:09 ` Robin Murphy
2020-04-20 18:10 ` Sai Prakash Ranjan
0 siblings, 1 reply; 12+ messages in thread
From: Robin Murphy @ 2020-04-20 17:09 UTC (permalink / raw)
To: Sai Prakash Ranjan, Will Deacon, Joerg Roedel, Sibi Sankar,
Bjorn Andersson, Jordan Crouse, Rob Clark
Cc: Stephen Boyd, iommu, linux-arm-kernel, linux-kernel,
linux-arm-msm, Matthias Kaehlcke, Evan Green
On 2020-04-20 5:42 pm, Sai Prakash Ranjan wrote:
> From: Sibi Sankar <sibis@codeaurora.org>
>
> Request direct mapping for modem on platforms which don't have TrustZone
> (which programs the modem SIDs) to prevent the following global faults seen
> on Cheza/Trogdor:
Not strictly true - it's patch #6/6 that prevents *those* faults (and
these days the driver should be reporting unmatched streams a little
more helpfully). This change would resolve the context faults and/or
weird memory corruption that might result from applying patch #6 alone -
this is the crazy thing where transactions sometimes go directly to DRAM
round the side of the SMMU so we can never safely remap anything, right?
Robin.
> arm-smmu 15000000.iommu: Unexpected global fault, this could be serious
> arm-smmu 15000000.iommu: GFSR 0x80000002, GFSYNR0 0x00000000,
> GFSYNR1 0x00000781, GFSYNR2 0x00000000
>
> arm-smmu 15000000.iommu: Unexpected global fault, this could be serious
> arm-smmu 15000000.iommu: GFSR 0x80000002, GFSYNR0 0x00000000,
> GFSYNR1 0x00000461, GFSYNR2 0x00000000
>
> Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
> Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
> ---
> drivers/iommu/arm-smmu-qcom.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/iommu/arm-smmu-qcom.c b/drivers/iommu/arm-smmu-qcom.c
> index 5bedf21587a5..cf01d0215a39 100644
> --- a/drivers/iommu/arm-smmu-qcom.c
> +++ b/drivers/iommu/arm-smmu-qcom.c
> @@ -17,7 +17,9 @@ static const struct of_device_id qcom_smmu_client_of_match[] = {
> { .compatible = "qcom,mdp4" },
> { .compatible = "qcom,mdss" },
> { .compatible = "qcom,sc7180-mdss" },
> + { .compatible = "qcom,sc7180-mss-pil" },
> { .compatible = "qcom,sdm845-mdss" },
> + { .compatible = "qcom,sdm845-mss-pil" },
> { }
> };
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv3 4/6] iommu/arm-smmu-qcom: Request direct mapping for modem device
2020-04-20 17:09 ` Robin Murphy
@ 2020-04-20 18:10 ` Sai Prakash Ranjan
0 siblings, 0 replies; 12+ messages in thread
From: Sai Prakash Ranjan @ 2020-04-20 18:10 UTC (permalink / raw)
To: Robin Murphy
Cc: Will Deacon, Joerg Roedel, Sibi Sankar, Bjorn Andersson,
Jordan Crouse, Rob Clark, Stephen Boyd, iommu, linux-arm-kernel,
linux-kernel, linux-arm-msm, Matthias Kaehlcke, Evan Green
Hi Robin,
On 2020-04-20 22:39, Robin Murphy wrote:
> On 2020-04-20 5:42 pm, Sai Prakash Ranjan wrote:
>> From: Sibi Sankar <sibis@codeaurora.org>
>>
>> Request direct mapping for modem on platforms which don't have
>> TrustZone
>> (which programs the modem SIDs) to prevent the following global faults
>> seen
>> on Cheza/Trogdor:
>
> Not strictly true - it's patch #6/6 that prevents *those* faults (and
> these days the driver should be reporting unmatched streams a little
> more helpfully). This change would resolve the context faults and/or
> weird memory corruption that might result from applying patch #6 alone
> - this is the crazy thing where transactions sometimes go directly to
> DRAM round the side of the SMMU so we can never safely remap anything,
> right?
>
True this doesnt prevent global faults, the fault details should go to
patch6.
I'll update the commit msg something like below:
The Q6 modem sub-system has direct access to DDR through memnoc.
Also SMMU is not expected to provide access control/translation for
these SIDs
(sandboxing of the modem is achieved through XPUs engaged using SMC
calls).
Thanks,
Sai
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member
of Code Aurora Forum, hosted by The Linux Foundation
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCHv3 5/6] dt-bindings: remoteproc: qcom: Add iommus property
2020-04-20 16:41 [PATCHv3 0/6] iommu/arm-smmu: Allow client devices to select identity mapping Sai Prakash Ranjan
` (3 preceding siblings ...)
2020-04-20 16:42 ` [PATCHv3 4/6] iommu/arm-smmu-qcom: Request direct mapping for modem device Sai Prakash Ranjan
@ 2020-04-20 16:42 ` Sai Prakash Ranjan
2020-04-20 16:42 ` [PATCHv3 6/6] arm64: dts: qcom: sdm845-cheza: " Sai Prakash Ranjan
5 siblings, 0 replies; 12+ messages in thread
From: Sai Prakash Ranjan @ 2020-04-20 16:42 UTC (permalink / raw)
To: Will Deacon, Robin Murphy, Joerg Roedel, Sibi Sankar,
Bjorn Andersson, Jordan Crouse, Rob Clark
Cc: Stephen Boyd, iommu, linux-arm-kernel, linux-kernel,
linux-arm-msm, Matthias Kaehlcke, Evan Green, Sai Prakash Ranjan,
Rob Herring
From: Sibi Sankar <sibis@codeaurora.org>
Add iommus property to allow Q6 modem to boot on platforms which do
not have trustZone.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Acked-by: Rob Herring <robh@kernel.org>
---
Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt b/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
index 88dfa3fc15f7..130e50aab741 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
@@ -184,6 +184,9 @@ For the compatible strings below the following phandle references are required:
followed by the offset within syscon for conn_box_spare0
register.
+The Hexagon node must contain iommus property as described in ../iommu/iommu.txt
+on platforms which do not have TrustZone.
+
= SUBNODES:
The Hexagon node must contain two subnodes, named "mba" and "mpss" representing
the memory regions used by the Hexagon firmware. Each sub-node must contain:
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCHv3 6/6] arm64: dts: qcom: sdm845-cheza: Add iommus property
2020-04-20 16:41 [PATCHv3 0/6] iommu/arm-smmu: Allow client devices to select identity mapping Sai Prakash Ranjan
` (4 preceding siblings ...)
2020-04-20 16:42 ` [PATCHv3 5/6] dt-bindings: remoteproc: qcom: Add iommus property Sai Prakash Ranjan
@ 2020-04-20 16:42 ` Sai Prakash Ranjan
5 siblings, 0 replies; 12+ messages in thread
From: Sai Prakash Ranjan @ 2020-04-20 16:42 UTC (permalink / raw)
To: Will Deacon, Robin Murphy, Joerg Roedel, Sibi Sankar,
Bjorn Andersson, Jordan Crouse, Rob Clark
Cc: Stephen Boyd, iommu, linux-arm-kernel, linux-kernel,
linux-arm-msm, Matthias Kaehlcke, Evan Green, Sai Prakash Ranjan
From: Sibi Sankar <sibis@codeaurora.org>
Add iommus property to remoteproc modem node.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
---
arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi b/arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi
index 9070be43a309..07081da2c83e 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi
@@ -631,6 +631,11 @@ ap_ts_i2c: &i2c14 {
status = "okay";
};
+&mss_pil {
+ iommus = <&apps_smmu 0x780 0x1>,
+ <&apps_smmu 0x724 0x3>;
+};
+
&pm8998_pwrkey {
status = "disabled";
};
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 12+ messages in thread