Message ID | 20240111-qrb2210-rb1-no-cluster-idle-v1-1-cec14ec15b02@linaro.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | arm64: dts: qcom: qrb2210-rb1: disable cluster power domains | expand |
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 <dmitry.baryshkov@linaro.org> > --- > 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 <dmitry.baryshkov@linaro.org> > >
On Thu, 11 Jan 2024 at 06:45, Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 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 <dmitry.baryshkov@linaro.org> > > --- > > 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 <dmitry.baryshkov@linaro.org> > > > > > > -- > மணிவண்ணன் சதாசிவம்
On Thu, Jan 11, 2024 at 08:02:32AM +0200, Dmitry Baryshkov wrote: > On Thu, 11 Jan 2024 at 06:45, Manivannan Sadhasivam > <manivannan.sadhasivam@linaro.org> 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 <dmitry.baryshkov@linaro.org> > > > --- > > > 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 <dmitry.baryshkov@linaro.org> > > > > > > > > > > -- > > மணிவண்ணன் சதாசிவம் > > > > -- > With best wishes > Dmitry
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
On Thu, 11 Jan 2024 at 15:09, Konrad Dybcio <konrad.dybcio@linaro.org> 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.
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"; };
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 <dmitry.baryshkov@linaro.org> --- arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) --- base-commit: 39676dfe52331dba909c617f213fdb21015c8d10 change-id: 20240111-qrb2210-rb1-no-cluster-idle-7bf43b3a0452 Best regards,