Re: [PATCH] cpufreq: longhaul: Set transition_delay_us to 20 ms
From: Meelis Roos
Date: Tue Dec 05 2017 - 03:55:09 EST
> > The commit e948bc8fbee0 ("cpufreq: Cap the default transition delay
> > value to 10 ms") caused a regression on EPIA-M min-ITX computer where
> > shutdown or reboot hangs occasionally with a print message like:
> >
> > longhaul: Warning: Timeout while waiting for idle PCI bus
> > cpufreq: __target_index: Failed to change cpu frequency: -16
> >
> > This probably happens because the cpufreq governor tries to change the
> > frequency of the CPU faster than allowed by the hardware.
> >
> > With the above commit, the default transition delay comes to 10 ms for a
> > transition_latency of 200 us. Set the default transition delay to 20 ms
> > directly to fix this regression.
> >
> > Fixes: e948bc8fbee0 ("cpufreq: Cap the default transition delay value to 10 ms")
> > Cc: 4.14+ <stable@xxxxxxxxxxxxxxx> # 4.14+
> > Reported-by: Meelis Roos <mroos@xxxxxxxx>
> > Suggested-by: Rafael J. Wysocki <rjw@xxxxxxxxxxxxx>
> > Signed-off-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx>
> > ---
> > drivers/cpufreq/longhaul.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/cpufreq/longhaul.c b/drivers/cpufreq/longhaul.c
> > index c46a12df40dd..56eafcb07859 100644
> > --- a/drivers/cpufreq/longhaul.c
> > +++ b/drivers/cpufreq/longhaul.c
> > @@ -894,7 +894,7 @@ static int longhaul_cpu_init(struct cpufreq_policy *policy)
> > if ((longhaul_version != TYPE_LONGHAUL_V1) && (scale_voltage != 0))
> > longhaul_setup_voltagescaling();
> >
> > - policy->cpuinfo.transition_latency = 200000; /* nsec */
> > + policy->transition_delay_us = 20000; /* usec */
> >
> > return cpufreq_table_validate_and_show(policy, longhaul_table);
> > }
>
> This patch also works on my EPIA-M board - tested 10+ times.
An on the last try just after sending the mail, it hung again in the
same way as before - so maybe 20 is on the edge of being good.
--
Meelis Roos (mroos@xxxxx) http://www.cs.ut.ee/~mroos/