2024-01-11 02:04:20

by Dmitry Baryshkov

[permalink] [raw]
Subject: [PATCH] arm64: dts: qcom: qrb2210-rb1: disable cluster power domains

If cluster domain idle state is enabled on the RB1, the board becomes
significantly less responsive. Under certain circumstances (if some of
the devices are disabled in kernel config) the board can even lock up.

It seems this is caused by the MPM not being pinged during CPU idle (in
the same way the RPMh is pinged when cluster idle is entered).

Disable cluster domain idle for the RB1 board until MPM driver is fixed
to cooperate with the CPU idle states.

Signed-off-by: Dmitry Baryshkov <[email protected]>
---
arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
index aa53b6af6d9c..9a0308ef8b0f 100644
--- a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
+++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
@@ -177,6 +177,24 @@ vph_pwr: regulator-vph-pwr {
};
};

+&CPU_PD0 {
+ /delete-property/ power-domains;
+};
+
+&CPU_PD1 {
+ /delete-property/ power-domains;
+};
+
+&CPU_PD2 {
+ /delete-property/ power-domains;
+};
+
+&CPU_PD3 {
+ /delete-property/ power-domains;
+};
+
+/delete-node/ &CLUSTER_PD;
+
&gpi_dma0 {
status = "okay";
};

---
base-commit: 39676dfe52331dba909c617f213fdb21015c8d10
change-id: 20240111-qrb2210-rb1-no-cluster-idle-7bf43b3a0452

Best regards,
--
Dmitry Baryshkov <[email protected]>



2024-01-11 04:45:28

by Manivannan Sadhasivam

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: qrb2210-rb1: disable cluster power domains

On Thu, Jan 11, 2024 at 04:01:14AM +0200, Dmitry Baryshkov wrote:
> If cluster domain idle state is enabled on the RB1, the board becomes
> significantly less responsive. Under certain circumstances (if some of
> the devices are disabled in kernel config) the board can even lock up.
>
> It seems this is caused by the MPM not being pinged during CPU idle (in
> the same way the RPMh is pinged when cluster idle is entered).
>

What does "ping" mean here? Please be more specific.

- Mani

> Disable cluster domain idle for the RB1 board until MPM driver is fixed
> to cooperate with the CPU idle states.
>
> Signed-off-by: Dmitry Baryshkov <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
> index aa53b6af6d9c..9a0308ef8b0f 100644
> --- a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
> +++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
> @@ -177,6 +177,24 @@ vph_pwr: regulator-vph-pwr {
> };
> };
>
> +&CPU_PD0 {
> + /delete-property/ power-domains;
> +};
> +
> +&CPU_PD1 {
> + /delete-property/ power-domains;
> +};
> +
> +&CPU_PD2 {
> + /delete-property/ power-domains;
> +};
> +
> +&CPU_PD3 {
> + /delete-property/ power-domains;
> +};
> +
> +/delete-node/ &CLUSTER_PD;
> +
> &gpi_dma0 {
> status = "okay";
> };
>
> ---
> base-commit: 39676dfe52331dba909c617f213fdb21015c8d10
> change-id: 20240111-qrb2210-rb1-no-cluster-idle-7bf43b3a0452
>
> Best regards,
> --
> Dmitry Baryshkov <[email protected]>
>
>

--
மணிவண்ணன் சதாசிவம்

2024-01-11 06:02:57

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: qrb2210-rb1: disable cluster power domains

On Thu, 11 Jan 2024 at 06:45, Manivannan Sadhasivam
<[email protected]> wrote:
>
> On Thu, Jan 11, 2024 at 04:01:14AM +0200, Dmitry Baryshkov wrote:
> > If cluster domain idle state is enabled on the RB1, the board becomes
> > significantly less responsive. Under certain circumstances (if some of
> > the devices are disabled in kernel config) the board can even lock up.
> >
> > It seems this is caused by the MPM not being pinged during CPU idle (in
> > the same way the RPMh is pinged when cluster idle is entered).
> >
>
> What does "ping" mean here? Please be more specific.

See rpmh_rsc_pd_callback(), rpmh_flush() and rpmh_rsc_write_next_wakeup().

RPMh driver (among other things) on entering the idle writes the next
wake up time to the RPMh. The MPM driver in the vendor kernel does the
same, see msm_mpm_timer_write() in msm-4.19

>
> - Mani
>
> > Disable cluster domain idle for the RB1 board until MPM driver is fixed
> > to cooperate with the CPU idle states.
> >
> > Signed-off-by: Dmitry Baryshkov <[email protected]>
> > ---
> > arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 18 ++++++++++++++++++
> > 1 file changed, 18 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
> > index aa53b6af6d9c..9a0308ef8b0f 100644
> > --- a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
> > +++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
> > @@ -177,6 +177,24 @@ vph_pwr: regulator-vph-pwr {
> > };
> > };
> >
> > +&CPU_PD0 {
> > + /delete-property/ power-domains;
> > +};
> > +
> > +&CPU_PD1 {
> > + /delete-property/ power-domains;
> > +};
> > +
> > +&CPU_PD2 {
> > + /delete-property/ power-domains;
> > +};
> > +
> > +&CPU_PD3 {
> > + /delete-property/ power-domains;
> > +};
> > +
> > +/delete-node/ &CLUSTER_PD;
> > +
> > &gpi_dma0 {
> > status = "okay";
> > };
> >
> > ---
> > base-commit: 39676dfe52331dba909c617f213fdb21015c8d10
> > change-id: 20240111-qrb2210-rb1-no-cluster-idle-7bf43b3a0452
> >
> > Best regards,
> > --
> > Dmitry Baryshkov <[email protected]>
> >
> >
>
> --
> மணிவண்ணன் சதாசிவம்



--
With best wishes
Dmitry

2024-01-11 12:44:55

by Manivannan Sadhasivam

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: qrb2210-rb1: disable cluster power domains

On Thu, Jan 11, 2024 at 08:02:32AM +0200, Dmitry Baryshkov wrote:
> On Thu, 11 Jan 2024 at 06:45, Manivannan Sadhasivam
> <[email protected]> wrote:
> >
> > On Thu, Jan 11, 2024 at 04:01:14AM +0200, Dmitry Baryshkov wrote:
> > > If cluster domain idle state is enabled on the RB1, the board becomes
> > > significantly less responsive. Under certain circumstances (if some of
> > > the devices are disabled in kernel config) the board can even lock up.
> > >
> > > It seems this is caused by the MPM not being pinged during CPU idle (in
> > > the same way the RPMh is pinged when cluster idle is entered).
> > >
> >
> > What does "ping" mean here? Please be more specific.
>
> See rpmh_rsc_pd_callback(), rpmh_flush() and rpmh_rsc_write_next_wakeup().
>
> RPMh driver (among other things) on entering the idle writes the next
> wake up time to the RPMh. The MPM driver in the vendor kernel does the
> same, see msm_mpm_timer_write() in msm-4.19
>

Okay, thanks for the explanation. It'd be good if you have mentioned this in the
commit message as it is not obvious for one to understand what "ping" means.

- Mani

> >
> > - Mani
> >
> > > Disable cluster domain idle for the RB1 board until MPM driver is fixed
> > > to cooperate with the CPU idle states.
> > >
> > > Signed-off-by: Dmitry Baryshkov <[email protected]>
> > > ---
> > > arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 18 ++++++++++++++++++
> > > 1 file changed, 18 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
> > > index aa53b6af6d9c..9a0308ef8b0f 100644
> > > --- a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
> > > +++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
> > > @@ -177,6 +177,24 @@ vph_pwr: regulator-vph-pwr {
> > > };
> > > };
> > >
> > > +&CPU_PD0 {
> > > + /delete-property/ power-domains;
> > > +};
> > > +
> > > +&CPU_PD1 {
> > > + /delete-property/ power-domains;
> > > +};
> > > +
> > > +&CPU_PD2 {
> > > + /delete-property/ power-domains;
> > > +};
> > > +
> > > +&CPU_PD3 {
> > > + /delete-property/ power-domains;
> > > +};
> > > +
> > > +/delete-node/ &CLUSTER_PD;
> > > +
> > > &gpi_dma0 {
> > > status = "okay";
> > > };
> > >
> > > ---
> > > base-commit: 39676dfe52331dba909c617f213fdb21015c8d10
> > > change-id: 20240111-qrb2210-rb1-no-cluster-idle-7bf43b3a0452
> > >
> > > Best regards,
> > > --
> > > Dmitry Baryshkov <[email protected]>
> > >
> > >
> >
> > --
> > மணிவண்ணன் சதாசிவம்
>
>
>
> --
> With best wishes
> Dmitry

--
மணிவண்ணன் சதாசிவம்

2024-01-11 13:10:28

by Konrad Dybcio

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: qrb2210-rb1: disable cluster power domains



On 1/11/24 03:01, Dmitry Baryshkov wrote:
> If cluster domain idle state is enabled on the RB1, the board becomes
> significantly less responsive. Under certain circumstances (if some of
> the devices are disabled in kernel config) the board can even lock up.

I got that $sometime ago, but can't repro now.. which devices being
disabled would cause the hang?

Konrad

2024-01-11 13:34:52

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: qrb2210-rb1: disable cluster power domains

On Thu, 11 Jan 2024 at 15:09, Konrad Dybcio <[email protected]> wrote:
> On 1/11/24 03:01, Dmitry Baryshkov wrote:
> > If cluster domain idle state is enabled on the RB1, the board becomes
> > significantly less responsive. Under certain circumstances (if some of
> > the devices are disabled in kernel config) the board can even lock up.
>
> I got that $sometime ago, but can't repro now.. which devices being
> disabled would cause the hang?

It was reproducible with 6.4. without this patch. With 6.6 I can not
easily reproduce the hang, but the delays / responsiveness is easy to
reproduce. Compare for example 'ps' output with and without this
patch.

--
With best wishes
Dmitry