Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-28 Thread Sai Prakash Ranjan

On 1/28/2019 10:45 PM, Mathieu Poirier wrote:


For SDM845(A75 based):

*0xB_B8_03* does indicate that the JEP106 identification
code is 0x3B and continuation code is 0x4 which is of ARM and not
QCOM(JEP106 ID is 0x70) which is expected.

And the other values of PIDR0[0:7] and PIDR1[3:0] are *Implementation
defined part numbers* and can be different from ARM A75/A55.

I think this clears up case for SDM845.

As for MSM8996, it is not based on any ARM derivative and hence the
JEP106 ID is of QCOM(0x70) from the value of pid = *0xF_02_11*
based on PIDR1[7:4] and PIDR2[2:0]. This clears this as well.

Please correct me if I am wrong and also let me know if I can
continue with PID addition to table.


Please proceed.



Thanks Mathieu, posted the next version now.

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-28 Thread Mathieu Poirier
On Thu, 24 Jan 2019 at 11:21, Sai Prakash Ranjan
 wrote:
>
> Hi Suzuki,
>
> On 1/24/2019 4:49 PM, Suzuki K Poulose wrote:
> > Hi Sai,
> >
> >
> > That looks fine with me. But as Mathieu said, this needs to be a separate
> > patch. But before all that please could you provide me the PIDR4 value for
> > the Kryo A75 and A55 please ?
> >
>
> Sure.
>
> PIDR4 value is 0x4.
>
> I get it now. So we are looking for JEP106 identification(PIDR1[7:4] and
> PIDR2[2:0]) and continuation code(PIDR4[3:0]).
>
>  From ARM Coresight Spec:
>
> DES_0, PIDR1 bits[7:4] JEP106 identification code bits[3:0].
> DES_1, PIDR2 bits[2:0] JEP106 identification code bits[6:4].
> DES_2, PIDR4 bits[3:0] JEP106 continuation code.
>
> For SDM845(A75 based):
>
> *0xB_B8_03* does indicate that the JEP106 identification
> code is 0x3B and continuation code is 0x4 which is of ARM and not
> QCOM(JEP106 ID is 0x70) which is expected.
>
> And the other values of PIDR0[0:7] and PIDR1[3:0] are *Implementation
> defined part numbers* and can be different from ARM A75/A55.
>
> I think this clears up case for SDM845.
>
> As for MSM8996, it is not based on any ARM derivative and hence the
> JEP106 ID is of QCOM(0x70) from the value of pid = *0xF_02_11*
> based on PIDR1[7:4] and PIDR2[2:0]. This clears this as well.
>
> Please correct me if I am wrong and also let me know if I can
> continue with PID addition to table.

Please proceed.

>
> Thanks,
> Sai
>
> --
> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
> of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-24 Thread Sai Prakash Ranjan

Good day Mathieu,

On 1/24/2019 9:37 PM, Mathieu Poirier wrote:

Good day Sai,

On Wed, 23 Jan 2019 at 13:18, Sai Prakash Ranjan
 wrote:


Hi Mathieu,

On 1/24/2019 12:44 AM, Mathieu Poirier wrote:

On Wed, 23 Jan 2019 at 05:12, Sai Prakash Ranjan
 wrote:

That depends on whether the ETMs have been modified at all, something
Suzuki has asked to be clarified.  If ETMs have been modified then we
need to understand how they differ from the driver's implementation.


We had asked hardware team for clarification regarding this. Let me
poke them again. As for the driver, downstream implementation also
uses the same driver, so I am not sure what do you mean by differing
from the driver's implementation.


The driver has been implemented in accordance to ARM's coresight
technical reference manual and expects the HW to behave in accordance
to that specification.  Here we want to make sure the IP on your board
is conformant to the same specification.  If not then the driver needs
to be made flexible to handle both kind IPs.



The HW does behave as per the specification. As discussed in reply to
Suzuki, Coresight peripherals do use JEP106 ID of ARM for SDM845 and for 
MSM8996, the ID is of QCOM(0x70) since it was not based on any ARM 
derivative.

And the etm4x driver handles it all well. Other values of PID registers
are implementation defined and can be different from standard ARM cpu
core types.

Thanks,
Sai

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-24 Thread Sai Prakash Ranjan

On 1/24/2019 9:37 PM, Marc Gonzalez wrote:

On 23/01/2019 21:17, Sai Prakash Ranjan wrote:


On 1/24/2019 12:44 AM, Mathieu Poirier wrote:


What version of the Kryo CPU?


There is no Kryo version for MSM8996 (its only given as Kryo), MSM8998
onwards we have Kryo versions like Kryo 280 and so on. Hence I skipped
for this one and added the version for SDM845.


Speaking of MSM8998 (aka SDM835) ... could you take a stab at adding
coresight support for that platform as well? ^_^

Regards.



Sure Marc, I can do it on the next spin probably.

- Sai

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-24 Thread Sai Prakash Ranjan

Hi Suzuki,

On 1/24/2019 4:49 PM, Suzuki K Poulose wrote:

Hi Sai,


That looks fine with me. But as Mathieu said, this needs to be a separate
patch. But before all that please could you provide me the PIDR4 value for
the Kryo A75 and A55 please ?



Sure.

PIDR4 value is 0x4.

I get it now. So we are looking for JEP106 identification(PIDR1[7:4] and
PIDR2[2:0]) and continuation code(PIDR4[3:0]).

From ARM Coresight Spec:

DES_0, PIDR1 bits[7:4] JEP106 identification code bits[3:0].
DES_1, PIDR2 bits[2:0] JEP106 identification code bits[6:4].
DES_2, PIDR4 bits[3:0] JEP106 continuation code.

For SDM845(A75 based):

*0xB_B8_03* does indicate that the JEP106 identification
code is 0x3B and continuation code is 0x4 which is of ARM and not
QCOM(JEP106 ID is 0x70) which is expected.

And the other values of PIDR0[0:7] and PIDR1[3:0] are *Implementation
defined part numbers* and can be different from ARM A75/A55.

I think this clears up case for SDM845.

As for MSM8996, it is not based on any ARM derivative and hence the
JEP106 ID is of QCOM(0x70) from the value of pid = *0xF_02_11*
based on PIDR1[7:4] and PIDR2[2:0]. This clears this as well.

Please correct me if I am wrong and also let me know if I can
continue with PID addition to table.

Thanks,
Sai

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-24 Thread Mathieu Poirier
Good day Sai,

On Wed, 23 Jan 2019 at 13:18, Sai Prakash Ranjan
 wrote:
>
> Hi Mathieu,
>
> On 1/24/2019 12:44 AM, Mathieu Poirier wrote:
> > On Wed, 23 Jan 2019 at 05:12, Sai Prakash Ranjan
> >  wrote:
> >
> > That depends on whether the ETMs have been modified at all, something
> > Suzuki has asked to be clarified.  If ETMs have been modified then we
> > need to understand how they differ from the driver's implementation.
>
> We had asked hardware team for clarification regarding this. Let me
> poke them again. As for the driver, downstream implementation also
> uses the same driver, so I am not sure what do you mean by differing
> from the driver's implementation.

The driver has been implemented in accordance to ARM's coresight
technical reference manual and expects the HW to behave in accordance
to that specification.  Here we want to make sure the IP on your board
is conformant to the same specification.  If not then the driver needs
to be made flexible to handle both kind IPs.

>
> > If the implementations are the same:
> >
> >>
> >> @@ -1079,6 +1079,10 @@ static const struct amba_id etm4_ids[] = {
> >>   ETM4x_AMBA_ID(0x000bb95a),  /* Cortex-A72 */
> >>   ETM4x_AMBA_ID(0x000bb959),  /* Cortex-A73 */
> >>   ETM4x_AMBA_ID(0x000bb9da),  /* Cortex-A35 */
> >> +   ETM4x_AMBA_ID(0x000f0211),  /* Qualcomm Kryo */
> >> +   ETM4x_AMBA_ID(0x000f0205),  /* Qualcomm Kryo */
> >
> > What version of the Kryo CPU?  And the above will need to be in a
> > separate patch with the modifications to address the problem you
> > mentionned below.
> >
>
> There is no Kryo version for MSM8996 (its only given as Kryo), MSM8998
> onwards we have Kryo versions like Kryo 280 and so on. Hence I skipped
> for this one and added the version for SDM845.

Very well.

Mathieu

>
> >> +   ETM4x_AMBA_ID(0x000bb803),  /* Qualcomm Kryo 385
> >> Cortex-A75 */
> >> +   ETM4x_AMBA_ID(0x000bb802),  /* Qualcomm Kryo 385
> >> Cortex-A55 */
> >
> > Please add them in chronological order.
> >
>
> Sure, will do it.
>
> >>   {},
> >>};
> >>
> >> For msm8996, cpu debug module pid returned is same as ETM
> >> which is causing the probe failure for cpu debug coresight module
> >> as shown in below logs.
> >> For this case, I tried adding these ids to cpu debug driver, but it
> >> splits some errors (coresight-cpu-debug: probe of 384.etm failed
> >> with error -16) since the ids are same. Can we override for this case
> >> or there is something else we can do here?
> >
> > That is another problem.  See this patchset [1] from Mike Leach for a
> > description of the problem and how to fix it.
> >
> > [1]. https://lkml.org/lkml/2018/12/7/784
> >
>
> Thanks a lot for this link. I will check this out.
>
> - Sai
>
> --
> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
> of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-24 Thread Marc Gonzalez
On 23/01/2019 21:17, Sai Prakash Ranjan wrote:

> On 1/24/2019 12:44 AM, Mathieu Poirier wrote:
>
>> What version of the Kryo CPU?
> 
> There is no Kryo version for MSM8996 (its only given as Kryo), MSM8998
> onwards we have Kryo versions like Kryo 280 and so on. Hence I skipped
> for this one and added the version for SDM845.

Speaking of MSM8998 (aka SDM835) ... could you take a stab at adding
coresight support for that platform as well? ^_^

Regards.


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-24 Thread Suzuki K Poulose

Hi Sai,

On 23/01/2019 12:11, Sai Prakash Ranjan wrote:

Hi Suzuki,

On 1/23/2019 1:42 AM, Suzuki K Poulose wrote:

Hi Sai,

On 01/22/2019 04:48 PM, Sai Prakash Ranjan wrote:

Hi Suzuki,


[..]


SDM845 has 4 Kryo 385 Gold (ARM A75) + 4 Kryo 385 Silver (ARM A55),
so the PID values should be same for 4 ETMs atleast. But here one
pid value(001bb803) is same for 6 ETMs and other one for 2
ETMs(001bb802) which seems odd and hence the doubt if these pids
are even valid ones.


Have you checked other SoCs with A55 for the ETM PID ? The drivers
usually only care about PID0[7-0], PID1[7-0], PID2[3-0] and ignores
the other fields that may change over revisions of the core. So, in your
case the ETM ID could be treated as 0xbb802 and 0xbb803.



Very sorry to have mislead you here. I checked again today on SDM845 and
as you said 4 ETMs based on A75 has 0xbb803 and other 4 ETMs based on
A55 has 0Xbb803. I wrongly mentioned it as 6 and 2.

[6.688809] resname=etm@704 pid = 0x1bb803
[6.694957]
[6.694957] resname=etm@714 pid = 0x1bb803
[6.701135]
[6.701135] resname=etm@724 pid = 0x1bb803
[6.707256]
[6.707256] resname=etm@734 pid = 0x1bb803
[6.713454]
[6.713454] resname=etm@744 pid = 0x1bb802
[6.719621]
[6.719621] resname=etm@754 pid = 0x1bb802
[6.725814]
[6.725814] resname=etm@764 pid = 0x1bb802
[6.731971]
[6.731971] resname=etm@774 pid = 0x1bb802

So is it ok to add these to table as below in etm4x driver with the
following comment since these do not exactly match A75 and A55 PIDs
which you provided? Or any other way you prefer?

@@ -1079,6 +1079,10 @@ static const struct amba_id etm4_ids[] = {
  ETM4x_AMBA_ID(0x000bb95a),  /* Cortex-A72 */
  ETM4x_AMBA_ID(0x000bb959),  /* Cortex-A73 */
  ETM4x_AMBA_ID(0x000bb9da),  /* Cortex-A35 */
+   ETM4x_AMBA_ID(0x000f0211),  /* Qualcomm Kryo */
+   ETM4x_AMBA_ID(0x000f0205),  /* Qualcomm Kryo */
+   ETM4x_AMBA_ID(0x000bb803),  /* Qualcomm Kryo 385
Cortex-A75 */
+   ETM4x_AMBA_ID(0x000bb802),  /* Qualcomm Kryo 385
Cortex-A55 */
  {},


That looks fine with me. But as Mathieu said, this needs to be a separate
patch. But before all that please could you provide me the PIDR4 value for
the Kryo A75 and A55 please ?

Kind regards
Suzuki


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-23 Thread Sai Prakash Ranjan

Hi Mathieu,

On 1/24/2019 12:44 AM, Mathieu Poirier wrote:

On Wed, 23 Jan 2019 at 05:12, Sai Prakash Ranjan
 wrote:

That depends on whether the ETMs have been modified at all, something
Suzuki has asked to be clarified.  If ETMs have been modified then we
need to understand how they differ from the driver's implementation.


We had asked hardware team for clarification regarding this. Let me
poke them again. As for the driver, downstream implementation also
uses the same driver, so I am not sure what do you mean by differing
from the driver's implementation.


If the implementations are the same:



@@ -1079,6 +1079,10 @@ static const struct amba_id etm4_ids[] = {
  ETM4x_AMBA_ID(0x000bb95a),  /* Cortex-A72 */
  ETM4x_AMBA_ID(0x000bb959),  /* Cortex-A73 */
  ETM4x_AMBA_ID(0x000bb9da),  /* Cortex-A35 */
+   ETM4x_AMBA_ID(0x000f0211),  /* Qualcomm Kryo */
+   ETM4x_AMBA_ID(0x000f0205),  /* Qualcomm Kryo */


What version of the Kryo CPU?  And the above will need to be in a
separate patch with the modifications to address the problem you
mentionned below.



There is no Kryo version for MSM8996 (its only given as Kryo), MSM8998
onwards we have Kryo versions like Kryo 280 and so on. Hence I skipped
for this one and added the version for SDM845.


+   ETM4x_AMBA_ID(0x000bb803),  /* Qualcomm Kryo 385
Cortex-A75 */
+   ETM4x_AMBA_ID(0x000bb802),  /* Qualcomm Kryo 385
Cortex-A55 */


Please add them in chronological order.



Sure, will do it.


  {},
   };

For msm8996, cpu debug module pid returned is same as ETM
which is causing the probe failure for cpu debug coresight module
as shown in below logs.
For this case, I tried adding these ids to cpu debug driver, but it
splits some errors (coresight-cpu-debug: probe of 384.etm failed
with error -16) since the ids are same. Can we override for this case
or there is something else we can do here?


That is another problem.  See this patchset [1] from Mike Leach for a
description of the problem and how to fix it.

[1]. https://lkml.org/lkml/2018/12/7/784



Thanks a lot for this link. I will check this out.

- Sai

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-23 Thread Mathieu Poirier
On Wed, 23 Jan 2019 at 05:12, Sai Prakash Ranjan
 wrote:
>
> Hi Suzuki,
>
> On 1/23/2019 1:42 AM, Suzuki K Poulose wrote:
> > Hi Sai,
> >
> > On 01/22/2019 04:48 PM, Sai Prakash Ranjan wrote:
> >> Hi Suzuki,
> >>
> [..]
> >>
> >> SDM845 has 4 Kryo 385 Gold (ARM A75) + 4 Kryo 385 Silver (ARM A55),
> >> so the PID values should be same for 4 ETMs atleast. But here one
> >> pid value(001bb803) is same for 6 ETMs and other one for 2
> >> ETMs(001bb802) which seems odd and hence the doubt if these pids
> >> are even valid ones.
> >
> > Have you checked other SoCs with A55 for the ETM PID ? The drivers
> > usually only care about PID0[7-0], PID1[7-0], PID2[3-0] and ignores
> > the other fields that may change over revisions of the core. So, in your
> > case the ETM ID could be treated as 0xbb802 and 0xbb803.
> >
>
> Very sorry to have mislead you here. I checked again today on SDM845 and
> as you said 4 ETMs based on A75 has 0xbb803 and other 4 ETMs based on
> A55 has 0Xbb803. I wrongly mentioned it as 6 and 2.
>
> [6.688809] resname=etm@704 pid = 0x1bb803
> [6.694957]
> [6.694957] resname=etm@714 pid = 0x1bb803
> [6.701135]
> [6.701135] resname=etm@724 pid = 0x1bb803
> [6.707256]
> [6.707256] resname=etm@734 pid = 0x1bb803
> [6.713454]
> [6.713454] resname=etm@744 pid = 0x1bb802
> [6.719621]
> [6.719621] resname=etm@754 pid = 0x1bb802
> [6.725814]
> [6.725814] resname=etm@764 pid = 0x1bb802
> [6.731971]
> [6.731971] resname=etm@774 pid = 0x1bb802
>

Ok, so that makes sense.

> So is it ok to add these to table as below in etm4x driver with the
> following comment since these do not exactly match A75 and A55 PIDs
> which you provided? Or any other way you prefer?

That depends on whether the ETMs have been modified at all, something
Suzuki has asked to be clarified.  If ETMs have been modified then we
need to understand how they differ from the driver's implementation.
If the implementations are the same:

>
> @@ -1079,6 +1079,10 @@ static const struct amba_id etm4_ids[] = {
>  ETM4x_AMBA_ID(0x000bb95a),  /* Cortex-A72 */
>  ETM4x_AMBA_ID(0x000bb959),  /* Cortex-A73 */
>  ETM4x_AMBA_ID(0x000bb9da),  /* Cortex-A35 */
> +   ETM4x_AMBA_ID(0x000f0211),  /* Qualcomm Kryo */
> +   ETM4x_AMBA_ID(0x000f0205),  /* Qualcomm Kryo */

What version of the Kryo CPU?  And the above will need to be in a
separate patch with the modifications to address the problem you
mentionned below.

> +   ETM4x_AMBA_ID(0x000bb803),  /* Qualcomm Kryo 385
> Cortex-A75 */
> +   ETM4x_AMBA_ID(0x000bb802),  /* Qualcomm Kryo 385
> Cortex-A55 */

Please add them in chronological order.

>  {},
>   };
>
> For msm8996, cpu debug module pid returned is same as ETM
> which is causing the probe failure for cpu debug coresight module
> as shown in below logs.
> For this case, I tried adding these ids to cpu debug driver, but it
> splits some errors (coresight-cpu-debug: probe of 384.etm failed
> with error -16) since the ids are same. Can we override for this case
> or there is something else we can do here?

That is another problem.  See this patchset [1] from Mike Leach for a
description of the problem and how to fix it.

[1]. https://lkml.org/lkml/2018/12/7/784


>
> [5.480629] resname=debug@381 pid = 0x102f0211
> [5.480920] OF: graph: no port node found in /soc/debug@381
> [5.513214] coresight-etm4x: probe of 381.debug failed with error -22
> [5.524362]
> [5.524362] resname=debug@391 pid = 0x102f0211
> [5.524888] OF: graph: no port node found in /soc/debug@391
> [5.537586] coresight-etm4x: probe of 391.debug failed with error -22
> [5.541481]
> [5.549643] resname=debug@3a1 pid = 0x102f0205
> [5.580990] OF: graph: no port node found in /soc/debug@3a1
> [5.586817] coresight-etm4x: probe of 3a1.debug failed with error -22
> [5.592082]
> [5.592629] resname=debug@3b1 pid = 0x102f0205
> [5.604922] OF: graph: no port node found in /soc/debug@3b1
> [5.611234] coresight-etm4x: probe of 3b1.debug failed with error -22
>
>
> Thanks,
> Sai
>
> --
> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
> of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-23 Thread Sai Prakash Ranjan

Hi Suzuki,

On 1/23/2019 1:42 AM, Suzuki K Poulose wrote:

Hi Sai,

On 01/22/2019 04:48 PM, Sai Prakash Ranjan wrote:

Hi Suzuki,


[..]


SDM845 has 4 Kryo 385 Gold (ARM A75) + 4 Kryo 385 Silver (ARM A55),
so the PID values should be same for 4 ETMs atleast. But here one
pid value(001bb803) is same for 6 ETMs and other one for 2
ETMs(001bb802) which seems odd and hence the doubt if these pids
are even valid ones.


Have you checked other SoCs with A55 for the ETM PID ? The drivers
usually only care about PID0[7-0], PID1[7-0], PID2[3-0] and ignores
the other fields that may change over revisions of the core. So, in your
case the ETM ID could be treated as 0xbb802 and 0xbb803.



Very sorry to have mislead you here. I checked again today on SDM845 and 
as you said 4 ETMs based on A75 has 0xbb803 and other 4 ETMs based on

A55 has 0Xbb803. I wrongly mentioned it as 6 and 2.

[6.688809] resname=etm@704 pid = 0x1bb803
[6.694957]
[6.694957] resname=etm@714 pid = 0x1bb803
[6.701135]
[6.701135] resname=etm@724 pid = 0x1bb803
[6.707256]
[6.707256] resname=etm@734 pid = 0x1bb803
[6.713454]
[6.713454] resname=etm@744 pid = 0x1bb802
[6.719621]
[6.719621] resname=etm@754 pid = 0x1bb802
[6.725814]
[6.725814] resname=etm@764 pid = 0x1bb802
[6.731971]
[6.731971] resname=etm@774 pid = 0x1bb802

So is it ok to add these to table as below in etm4x driver with the
following comment since these do not exactly match A75 and A55 PIDs
which you provided? Or any other way you prefer?

@@ -1079,6 +1079,10 @@ static const struct amba_id etm4_ids[] = {
ETM4x_AMBA_ID(0x000bb95a),  /* Cortex-A72 */
ETM4x_AMBA_ID(0x000bb959),  /* Cortex-A73 */
ETM4x_AMBA_ID(0x000bb9da),  /* Cortex-A35 */
+   ETM4x_AMBA_ID(0x000f0211),  /* Qualcomm Kryo */
+   ETM4x_AMBA_ID(0x000f0205),  /* Qualcomm Kryo */
+   ETM4x_AMBA_ID(0x000bb803),  /* Qualcomm Kryo 385 
Cortex-A75 */
+   ETM4x_AMBA_ID(0x000bb802),  /* Qualcomm Kryo 385 
Cortex-A55 */

{},
 };

For msm8996, cpu debug module pid returned is same as ETM
which is causing the probe failure for cpu debug coresight module
as shown in below logs.
For this case, I tried adding these ids to cpu debug driver, but it
splits some errors (coresight-cpu-debug: probe of 384.etm failed 
with error -16) since the ids are same. Can we override for this case

or there is something else we can do here?

[5.480629] resname=debug@381 pid = 0x102f0211
[5.480920] OF: graph: no port node found in /soc/debug@381
[5.513214] coresight-etm4x: probe of 381.debug failed with error -22
[5.524362]
[5.524362] resname=debug@391 pid = 0x102f0211
[5.524888] OF: graph: no port node found in /soc/debug@391
[5.537586] coresight-etm4x: probe of 391.debug failed with error -22
[5.541481]
[5.549643] resname=debug@3a1 pid = 0x102f0205
[5.580990] OF: graph: no port node found in /soc/debug@3a1
[5.586817] coresight-etm4x: probe of 3a1.debug failed with error -22
[5.592082]
[5.592629] resname=debug@3b1 pid = 0x102f0205
[5.604922] OF: graph: no port node found in /soc/debug@3b1
[5.611234] coresight-etm4x: probe of 3b1.debug failed with error -22


Thanks,
Sai

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-22 Thread Suzuki K Poulose

Hi Sai,

On 01/22/2019 04:48 PM, Sai Prakash Ranjan wrote:

Hi Suzuki,

On 1/22/2019 9:38 PM, Suzuki K Poulose wrote:


By inconsistent, I meant the registers provides values which are not
the same on two different CPUs of the *same type*. And it is expected
that two different CPU/ETM implementations will have different PIDs.



SDM845 has 4 Kryo 385 Gold (ARM A75) + 4 Kryo 385 Silver (ARM A55),
so the PID values should be same for 4 ETMs atleast. But here one
pid value(001bb803) is same for 6 ETMs and other one for 2
ETMs(001bb802) which seems odd and hence the doubt if these pids
are even valid ones.


Have you checked other SoCs with A55 for the ETM PID ? The drivers
usually only care about PID0[7-0], PID1[7-0], PID2[3-0] and ignores
the other fields that may change over revisions of the core. So, in your
case the ETM ID could be treated as 0xbb802 and 0xbb803.





Below are the PIDs read for SDM845:

[    5.996448] resname=etm@704 pid=001bb803
[    6.052891] resname=etm@714 pid=001bb803

 .. (Same pid=001bb803 for etm@724 to etm@754 but differs
for other 2 cpus as shown below)


So thats 4 CPUs with 0x1bb803.



[    6.266687] resname=etm@764 pid=001bb802
[    6.329171] resname=etm@774 pid=001bb802





This is the case for MSM8996 also as shown below where PID
value is not correct and has to be hardcoded.


They differ because they are two different types of CPU cores (and 
thus different ETM PIDs). What does the Register descriptions say for

the Cores ?

To me it looks like there are two different types of Qualcomm
Cores with their respective ETMs which are missing in the ETM4x
driver and we are trying to "make the ETM" work by faking it as
something else, which is not nice. I would rather prefer
to add the appropriate masks and the expected value for these
two different ETM implementations and be done with it, instead
of faking it in all the DTs where these cores appear.



ETM4x driver does not have entries for A55 and A75. Could you please
let me know the PIDs for these CPUs so that we can compare?


FWIW, here is the PID list:

A75: 0xB_BD_0A
A55: 0xB_BD_05

Btw, I am not sure if the ETM has been changed/tuned for the Cores in
SDM845. Please could you get this clarified internally within your
organisation ?





For MSM8996:

resname=etm@3b4 pid=102f0205


I don't know what CPUs the MSM8996 have. If they don't have A53, you
must add the actual PIDs to the table once and for all.



But again, this PID is some invalid value. And does not correspond
to any of the ARM CPU cores and would be MSM8996 specific.
MSM8996 has 2+2 Kryo cores which are not ARM derivative as SDM845
if I am right.


As long as the JEP106 coding standard is followed and is indicated in
the appropriate fields (PIDR2[3]), we should be fine. In the case above:
PID of the ETM is 0xf0205, implies JEP106 code[6:0] of the designer is 
0x70 and ETM part number is : 0x205, which makes sense to me.







+    etm@704 {
+    compatible = "arm,coresight-etm4x", "arm,primecell";
+    arm,primecell-periphid = <0x000bb95d> > + reg = <0 
0x0704 0 0x1000>;

+
+    cpu = <&CPU0>;
+


You seem to be specifying the PID of A53 ETM all over, while at least
one of your cores is ETMv4.2 (from the other patch) and A53 is not
ETMv4.2. As above, it would be good to add the PID to the table.



As explained in above comment, PID values read are not correct. 
Please let me know if I am not clear.


There is no measure for "correctness" here. If the ETM exposes different
PID than what you expect from the TRM, then we could think of overriding
it. Otherwise please add the PIDs to the table.



This is exactly the case, ETM PID registers are exposing some invalid
value and hence we override in DT.


It would be good to have this clarified. I will check with the internal
teams here for any details.

Thanks
Suzuki


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-22 Thread Sai Prakash Ranjan

Hi Suzuki,

On 1/22/2019 9:38 PM, Suzuki K Poulose wrote:


By inconsistent, I meant the registers provides values which are not
the same on two different CPUs of the *same type*. And it is expected
that two different CPU/ETM implementations will have different PIDs.



SDM845 has 4 Kryo 385 Gold (ARM A75) + 4 Kryo 385 Silver (ARM A55),
so the PID values should be same for 4 ETMs atleast. But here one
pid value(001bb803) is same for 6 ETMs and other one for 2
ETMs(001bb802) which seems odd and hence the doubt if these pids
are even valid ones.



Below are the PIDs read for SDM845:

[    5.996448] resname=etm@704 pid=001bb803
[    6.052891] resname=etm@714 pid=001bb803

 .. (Same pid=001bb803 for etm@724 to etm@754 but differs
for other 2 cpus as shown below)

[    6.266687] resname=etm@764 pid=001bb802
[    6.329171] resname=etm@774 pid=001bb802

This is the case for MSM8996 also as shown below where PID
value is not correct and has to be hardcoded.


They differ because they are two different types of CPU cores (and thus 
different ETM PIDs). What does the Register descriptions say for

the Cores ?

To me it looks like there are two different types of Qualcomm
Cores with their respective ETMs which are missing in the ETM4x
driver and we are trying to "make the ETM" work by faking it as
something else, which is not nice. I would rather prefer
to add the appropriate masks and the expected value for these
two different ETM implementations and be done with it, instead
of faking it in all the DTs where these cores appear.



ETM4x driver does not have entries for A55 and A75. Could you please
let me know the PIDs for these CPUs so that we can compare?



For MSM8996:

resname=etm@3b4 pid=102f0205


I don't know what CPUs the MSM8996 have. If they don't have A53, you
must add the actual PIDs to the table once and for all.



But again, this PID is some invalid value. And does not correspond
to any of the ARM CPU cores and would be MSM8996 specific.
MSM8996 has 2+2 Kryo cores which are not ARM derivative as SDM845
if I am right.




+    etm@704 {
+    compatible = "arm,coresight-etm4x", "arm,primecell";
+    arm,primecell-periphid = <0x000bb95d> > +
reg = <0 0x0704 0 0x1000>;

+
+    cpu = <&CPU0>;
+


You seem to be specifying the PID of A53 ETM all over, while at least
one of your cores is ETMv4.2 (from the other patch) and A53 is not
ETMv4.2. As above, it would be good to add the PID to the table.



As explained in above comment, PID values read are not correct. Please 
let me know if I am not clear.


There is no measure for "correctness" here. If the ETM exposes different
PID than what you expect from the TRM, then we could think of overriding
it. Otherwise please add the PIDs to the table.



This is exactly the case, ETM PID registers are exposing some invalid
value and hence we override in DT.

Thanks,
Sai

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-22 Thread Suzuki K Poulose

Hi Sai,

On 01/22/2019 03:02 PM, Sai Prakash Ranjan wrote:

Hi Suzuki,

Thanks for looking into this. Please find my response inline.

On 1/22/2019 7:30 PM, Suzuki K Poulose wrote:

Hi Sai,

On 01/22/2019 01:37 PM, Sai Prakash Ranjan wrote:

Add coresight components found on Qualcomm SDM845 SoC.

Signed-off-by: Sai Prakash Ranjan 



Sorry, but I hadn't noticed the PID override strings below. Please
find the question.


[..]


+    /*
+ * On QCOM SDM845, we bypass the normal AMBA bus discovery
+ * method by forcing the peripheral ID because of the wrong
+ * value read from ETM PID registers.
+ */


What is the value read back from the ETM PIDx registers ? Do they
provide inconsistent or incompatible value w.r.t the ETM/Coresight
architecture ? If it is an unsupported CPU with proper values,
you must add them to the table in etm4x driver.



The values read from ETM PIDx registers are actually inconsistent
and is different for some ETMs.


By inconsistent, I meant the registers provides values which are not
the same on two different CPUs of the *same type*. And it is expected
that two different CPU/ETM implementations will have different PIDs.



Below are the PIDs read for SDM845:

[    5.996448] resname=etm@704 pid=001bb803
[    6.052891] resname=etm@714 pid=001bb803

 .. (Same pid=001bb803 for etm@724 to etm@754 but differs
for other 2 cpus as shown below)

[    6.266687] resname=etm@764 pid=001bb802
[    6.329171] resname=etm@774 pid=001bb802

This is the case for MSM8996 also as shown below where PID
value is not correct and has to be hardcoded.


They differ because they are two different types of CPU cores (and thus 
different ETM PIDs). What does the Register descriptions say for

the Cores ?

To me it looks like there are two different types of Qualcomm
Cores with their respective ETMs which are missing in the ETM4x
driver and we are trying to "make the ETM" work by faking it as
something else, which is not nice. I would rather prefer
to add the appropriate masks and the expected value for these
two different ETM implementations and be done with it, instead
of faking it in all the DTs where these cores appear.



For MSM8996:

resname=etm@3b4 pid=102f0205


I don't know what CPUs the MSM8996 have. If they don't have A53, you
must add the actual PIDs to the table once and for all.




+    etm@704 {
+    compatible = "arm,coresight-etm4x", "arm,primecell";
+    arm,primecell-periphid = <0x000bb95d> > +    reg 
= <0 0x0704 0 0x1000>;

+
+    cpu = <&CPU0>;
+


You seem to be specifying the PID of A53 ETM all over, while at least
one of your cores is ETMv4.2 (from the other patch) and A53 is not
ETMv4.2. As above, it would be good to add the PID to the table.



As explained in above comment, PID values read are not correct. Please 
let me know if I am not clear.


There is no measure for "correctness" here. If the ETM exposes different
PID than what you expect from the TRM, then we could think of overriding
it. Otherwise please add the PIDs to the table.

Cheers
Suzuki


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-22 Thread Sai Prakash Ranjan

Hi Suzuki,

Thanks for looking into this. Please find my response inline.

On 1/22/2019 7:30 PM, Suzuki K Poulose wrote:

Hi Sai,

On 01/22/2019 01:37 PM, Sai Prakash Ranjan wrote:

Add coresight components found on Qualcomm SDM845 SoC.

Signed-off-by: Sai Prakash Ranjan 



Sorry, but I hadn't noticed the PID override strings below. Please
find the question.


[..]


+    /*
+ * On QCOM SDM845, we bypass the normal AMBA bus discovery
+ * method by forcing the peripheral ID because of the wrong
+ * value read from ETM PID registers.
+ */


What is the value read back from the ETM PIDx registers ? Do they
provide inconsistent or incompatible value w.r.t the ETM/Coresight
architecture ? If it is an unsupported CPU with proper values,
you must add them to the table in etm4x driver.



The values read from ETM PIDx registers are actually inconsistent
and is different for some ETMs.

Below are the PIDs read for SDM845:

[5.996448] resname=etm@704 pid=001bb803
[6.052891] resname=etm@714 pid=001bb803

 .. (Same pid=001bb803 for etm@724 to etm@754 but differs
for other 2 cpus as shown below)

[6.266687] resname=etm@764 pid=001bb802
[6.329171] resname=etm@774 pid=001bb802

This is the case for MSM8996 also as shown below where PID
value is not correct and has to be hardcoded.

For MSM8996:

resname=etm@3b4 pid=102f0205


+    etm@704 {
+    compatible = "arm,coresight-etm4x", "arm,primecell";
+    arm,primecell-periphid = <0x000bb95d> > +    reg 
= <0 0x0704 0 0x1000>;

+
+    cpu = <&CPU0>;
+


You seem to be specifying the PID of A53 ETM all over, while at least
one of your cores is ETMv4.2 (from the other patch) and A53 is not
ETMv4.2. As above, it would be good to add the PID to the table.



As explained in above comment, PID values read are not correct. Please 
let me know if I am not clear.


Thanks,
Sai

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


Re: [PATCHv4 1/4] arm64: dts: qcom: sdm845: Add Coresight support

2019-01-22 Thread Suzuki K Poulose

Hi Sai,

On 01/22/2019 01:37 PM, Sai Prakash Ranjan wrote:

Add coresight components found on Qualcomm SDM845 SoC.

Signed-off-by: Sai Prakash Ranjan 



Sorry, but I hadn't noticed the PID override strings below. Please
find the question.


---
Depends on AOSS QMP side channel patches and AMBA bus pclk change
by Bjorn Andersson [1][2].
Also depends on patch ("arm64: dts: qcom: sdm845: Increase address
and size cells for soc") [3].

[1] 
https://lore.kernel.org/lkml/20190106080915.4493-1-bjorn.anders...@linaro.org/
[2] 
https://lore.kernel.org/lkml/20190106080915.4493-7-bjorn.anders...@linaro.org/
[3] 
https://lore.kernel.org/lkml/20190117042940.25487-2-bjorn.anders...@linaro.org/


[...]

};

+
+   etr@6048000 {
+   compatible = "arm,coresight-tmc", "arm,primecell";
+   reg = <0 0x06048000 0 0x1000>;
+
+   power-domains = <&aoss_qmp AOSS_QMP_QDSS_CLK>;
+   arm,scatter-gather;
+
+   in-ports {
+   port {
+   etr_in: endpoint {
+   remote-endpoint =
+ <&replicator_out>;
+   };
+   };
+   };
+   };
+
+   /*
+* On QCOM SDM845, we bypass the normal AMBA bus discovery
+* method by forcing the peripheral ID because of the wrong
+* value read from ETM PID registers.
+*/


What is the value read back from the ETM PIDx registers ? Do they
provide inconsistent or incompatible value w.r.t the ETM/Coresight
architecture ? If it is an unsupported CPU with proper values,
you must add them to the table in etm4x driver.


+   etm@704 {
+   compatible = "arm,coresight-etm4x", "arm,primecell";
+   arm,primecell-periphid = <0x000bb95d> > + 
 reg = <0 0x0704 0 0x1000>;
+
+   cpu = <&CPU0>;
+


You seem to be specifying the PID of A53 ETM all over, while at least
one of your cores is ETMv4.2 (from the other patch) and A53 is not
ETMv4.2. As above, it would be good to add the PID to the table.

Suzuki