Message ID | 20240703091651.2820236-3-quic_varada@quicinc.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | Enable CPR for IPQ9574 | expand |
On 03-07-24, 14:46, Varadarajan Narayanan wrote: > Add qcom_cpufreq_match_data for IPQ9574. This is used for tying > up the cpu@N nodes with the power domains. match_data_kryo is not > used since it doesn't set genpd_names. If genpd_names is not set, > 'cat /sys/kernel/debug/qcom_cpr3/thread0' causes cpr3_debug_info_show() > to crash while trying to read thread->corner->last_uV as > thread->corner is NULL. > > Call trace: > cpr3_debug_info_show > seq_read_iter > seq_read > > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com> > --- > v4: Update commit log to include stack trace > Introduce qcom_cpufreq_match_data for IPQ9574 Can I apply this without other changes ?
On Wed, Jul 03, 2024 at 03:49:44PM GMT, Viresh Kumar wrote: > On 03-07-24, 14:46, Varadarajan Narayanan wrote: > > Add qcom_cpufreq_match_data for IPQ9574. This is used for tying > > up the cpu@N nodes with the power domains. match_data_kryo is not > > used since it doesn't set genpd_names. If genpd_names is not set, > > 'cat /sys/kernel/debug/qcom_cpr3/thread0' causes cpr3_debug_info_show() > > to crash while trying to read thread->corner->last_uV as > > thread->corner is NULL. > > > > Call trace: > > cpr3_debug_info_show > > seq_read_iter > > seq_read > > > > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com> > > --- > > v4: Update commit log to include stack trace > > Introduce qcom_cpufreq_match_data for IPQ9574 > > Can I apply this without other changes ? It will break CPUfreq support on IPQ9574. So this patch should go last.
On Wed, Jul 03, 2024 at 02:46:43PM GMT, Varadarajan Narayanan wrote: > Add qcom_cpufreq_match_data for IPQ9574. This is used for tying > up the cpu@N nodes with the power domains. match_data_kryo is not > used since it doesn't set genpd_names. If genpd_names is not set, > 'cat /sys/kernel/debug/qcom_cpr3/thread0' causes cpr3_debug_info_show() > to crash while trying to read thread->corner->last_uV as > thread->corner is NULL. > > Call trace: > cpr3_debug_info_show > seq_read_iter > seq_read I'd say, the commit message might be simpler: IPQ9574 uses CPR4 power domain to manage core supplies. Use device-specific match data for this platform that includes genpd_names configuration. Anyway: Acked-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com> > --- > v4: Update commit log to include stack trace > Introduce qcom_cpufreq_match_data for IPQ9574 > --- > drivers/cpufreq/qcom-cpufreq-nvmem.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/cpufreq/qcom-cpufreq-nvmem.c b/drivers/cpufreq/qcom-cpufreq-nvmem.c > index 939702dfa73f..95558586c2e6 100644 > --- a/drivers/cpufreq/qcom-cpufreq-nvmem.c > +++ b/drivers/cpufreq/qcom-cpufreq-nvmem.c > @@ -428,6 +428,11 @@ static const struct qcom_cpufreq_match_data match_data_ipq8074 = { > .get_version = qcom_cpufreq_ipq8074_name_version, > }; > > +static const struct qcom_cpufreq_match_data match_data_ipq9574 = { > + .get_version = qcom_cpufreq_kryo_name_version, > + .genpd_names = generic_genpd_names, > +}; > + > static void qcom_cpufreq_suspend_virt_devs(struct qcom_cpufreq_drv *drv, unsigned int cpu) > { > const char * const *name = drv->data->genpd_names; > @@ -621,7 +626,7 @@ static const struct of_device_id qcom_cpufreq_match_list[] __initconst = { > { .compatible = "qcom,ipq8064", .data = &match_data_ipq8064 }, > { .compatible = "qcom,ipq8074", .data = &match_data_ipq8074 }, > { .compatible = "qcom,apq8064", .data = &match_data_krait }, > - { .compatible = "qcom,ipq9574", .data = &match_data_kryo }, > + { .compatible = "qcom,ipq9574", .data = &match_data_ipq9574 }, > { .compatible = "qcom,msm8974", .data = &match_data_krait }, > { .compatible = "qcom,msm8960", .data = &match_data_krait }, > {}, > -- > 2.34.1 >
diff --git a/drivers/cpufreq/qcom-cpufreq-nvmem.c b/drivers/cpufreq/qcom-cpufreq-nvmem.c index 939702dfa73f..95558586c2e6 100644 --- a/drivers/cpufreq/qcom-cpufreq-nvmem.c +++ b/drivers/cpufreq/qcom-cpufreq-nvmem.c @@ -428,6 +428,11 @@ static const struct qcom_cpufreq_match_data match_data_ipq8074 = { .get_version = qcom_cpufreq_ipq8074_name_version, }; +static const struct qcom_cpufreq_match_data match_data_ipq9574 = { + .get_version = qcom_cpufreq_kryo_name_version, + .genpd_names = generic_genpd_names, +}; + static void qcom_cpufreq_suspend_virt_devs(struct qcom_cpufreq_drv *drv, unsigned int cpu) { const char * const *name = drv->data->genpd_names; @@ -621,7 +626,7 @@ static const struct of_device_id qcom_cpufreq_match_list[] __initconst = { { .compatible = "qcom,ipq8064", .data = &match_data_ipq8064 }, { .compatible = "qcom,ipq8074", .data = &match_data_ipq8074 }, { .compatible = "qcom,apq8064", .data = &match_data_krait }, - { .compatible = "qcom,ipq9574", .data = &match_data_kryo }, + { .compatible = "qcom,ipq9574", .data = &match_data_ipq9574 }, { .compatible = "qcom,msm8974", .data = &match_data_krait }, { .compatible = "qcom,msm8960", .data = &match_data_krait }, {},
Add qcom_cpufreq_match_data for IPQ9574. This is used for tying up the cpu@N nodes with the power domains. match_data_kryo is not used since it doesn't set genpd_names. If genpd_names is not set, 'cat /sys/kernel/debug/qcom_cpr3/thread0' causes cpr3_debug_info_show() to crash while trying to read thread->corner->last_uV as thread->corner is NULL. Call trace: cpr3_debug_info_show seq_read_iter seq_read Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com> --- v4: Update commit log to include stack trace Introduce qcom_cpufreq_match_data for IPQ9574 --- drivers/cpufreq/qcom-cpufreq-nvmem.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)