Re: [PATCH v6 8/8] arm64: dts: qcom: sdm845: Add Q6V5 MSS node

From: Sibi Sankar
Date: Thu Feb 28 2019 - 00:42:28 EST


Hey Doug,

On 2019-02-28 02:33, Doug Anderson wrote:
Hi,

On Tue, Feb 26, 2019 at 3:54 PM Doug Anderson <dianders@xxxxxxxxxxxx> wrote:

Hi,

On Tue, Feb 5, 2019 at 9:13 PM Bjorn Andersson
<bjorn.andersson@xxxxxxxxxx> wrote:
>
> From: Sibi Sankar <sibis@xxxxxxxxxxxxxx>
>
> This patch adds Q6V5 MSS remoteproc node for SDM845 SoCs.
>
> Signed-off-by: Sibi Sankar <sibis@xxxxxxxxxxxxxx>
> Reviewed-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>
> ---
>
> Changes since v5:
> - None
>
> arch/arm64/boot/dts/qcom/sdm845.dtsi | 58 ++++++++++++++++++++++++++++
> 1 file changed, 58 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
> index 560c16616ee6..5c41f6fe3e1b 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
> @@ -1612,6 +1612,64 @@
> };
> };
>
> + mss_pil: remoteproc@4080000 {
> + compatible = "qcom,sdm845-mss-pil";
> + reg = <0 0x04080000 0 0x408>, <0 0x04180000 0 0x48>;
> + reg-names = "qdsp6", "rmb";

I found that when I disabled IOMMU bypass by booting with
"arm-smmu.disable_bypass=y" that I'd get this failure:

---

[ 13.633776] qcom-q6v5-mss 4080000.remoteproc: MBA booted, loading mpss
[ 13.647694] arm-smmu 15000000.iommu: Unexpected global fault, this
could be serious
[ 13.660278] arm-smmu 15000000.iommu: GFSR 0x80000002, GFSYNR0
0x00000000, GFSYNR1 0x00000781, GFSYNR2 0x00000000
...
[ 14.648830] qcom-q6v5-mss 4080000.remoteproc: MPSS header
authentication timed out
[ 14.657141] qcom-q6v5-mss 4080000.remoteproc: port failed halt
[ 14.664983] remoteproc remoteproc0: can't start rproc
4080000.remoteproc: -110

---

Adding "iommus = <&apps_smmu 0x781 0>;" here fixed my problem. NOTE
that I'm no expert on IOMMUs so you should confirm that this is right,
but if it is then maybe you could include it in the next spin of the
series? I got the "0x781" just by looking at the value of the GFSYNR1
in the above splat. I wasn't sure what to put for the mask so I put
0x0.

Upon more testing the "iommus" line that I came up with avoids the
global fault but doesn't actually work. I just get:

qcom-q6v5-mss 4080000.remoteproc: failed to allocate mdt buffer

AFAIK modem does not have a smmu in front of it.

We have reserved memory nodes for mba and mpss,
however for mdt authentication we just rely on
dma_alloc_attrs with DMA_ATTR_FORCE_CONTIGUOUS
for allocation which seems to fail here.


I'm hoping someone from Qualcomm can help out here and say how this
should be solved. Thanks!

Yeah I'll enable arm-smmu.disable_bypass and
have a go at booting modem.



-Doug

--
-- Sibi Sankar --
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project.