From: Steve Muckle <steve.muckle@linaro.org>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>,
Rafael Wysocki <rjw@rjwysocki.net>,
Lists linaro-kernel <linaro-kernel@lists.linaro.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>
Subject: Re: [PATCH 0/2] cpufreq: Use sorted frequency tables
Date: Tue, 31 May 2016 18:08:56 -0700 [thread overview]
Message-ID: <20160601010856.GM9864@graphite.smuckle.net> (raw)
In-Reply-To: <CAJZ5v0ig61Q+EDjjcyHef5e9B4dKY+BhF802uV61w-G5CdRQvA@mail.gmail.com>
On Wed, Jun 01, 2016 at 12:50:41AM +0200, Rafael J. Wysocki wrote:
> On Tue, May 31, 2016 at 1:36 PM, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> > Hi Guys,
> >
> > This work in inspired by some of the concerns raised by Steve in one of
> > his patchset.
> >
> > Currently, the cpufreq drivers aren't required to provide a sorted list
> > of frequencies to the cpufreq-core and so traversing that list match a
> > target frequency is very inefficient.
> >
> > This is not bearable by, for example, the fast-switch path of schedutil
> > governor and so we have moved the traversing logic local to the
> > acpi-cpufreq driver for now. That is better handled in the core, but it
> > has to be efficient.
> >
> > OTOH, even for traditional governors without a fast-switch path, it
> > would be much better to be able to traverse this table quickly.
> >
> > The ideal solution would be to keep a single freq-table in struct
> > cpufreq_policy, that will be sorted as well. But there are few
> > dependencies due to which it can't be done today (Hint: cpufreq drivers
> > are abusing the 'index' passed to them, to refer to multiple arrays).
> >
> > And so for now, lets create a separate table local to the cpufreq-core
> > only.
> >
> > To use that, another API cpufreq_find_target_index() is created as well
> > and few users are migrated to it.
> >
> > Lightly tested on Exynos board, frequencies were getting selected as
> > expected.
>
> I'm not particularly liking this due to the possible confusion that
> may result from it.
>
> Perhaps we can require drivers implementing ->fast_switch to sort
> their frequency tables to start with? Or maybe make the core check
> whether or not the table is sorted and in what order and handle it
> accordingly?
>
> Let's just think about the design here for a while, OK?
This would be required beyond drivers implementing fast_switch -
cpufreq_driver_resolve_freq() (which started this discussion) is called
for slow path transitions as well.
Checking the table type and performing the associated lookup seems
workable to me though it adds a bit of complexity.
Also what about leaving it as is? I didn't fully catch the concern with
abuse in the series I posted, and it pushes this complexity of dealing
with the freq table efficiently down into the driver, which is best
suited for that IMO.
Another thought is that it'd be nice to eventually reduce
cpufreq_driver_{fast_switch,resolve_freq} into simple inline functions
so that we could jump to the driver directly from schedutil, eliminating
a function call.
thanks,
Steve
next prev parent reply other threads:[~2016-06-01 1:08 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-31 11:36 [PATCH 0/2] cpufreq: Use sorted frequency tables Viresh Kumar
2016-05-31 11:36 ` [PATCH 1/2] cpufreq: Store sorted frequency table Viresh Kumar
2016-05-31 11:36 ` [PATCH 2/2] cpufreq: Implement cpufreq_find_target_index() to traverse sorted list Viresh Kumar
2016-05-31 22:50 ` [PATCH 0/2] cpufreq: Use sorted frequency tables Rafael J. Wysocki
2016-06-01 1:08 ` Steve Muckle [this message]
2016-06-01 10:46 ` Viresh Kumar
2016-06-01 19:23 ` Steve Muckle
2016-06-01 16:40 ` Rafael J. Wysocki
2016-06-01 19:37 ` Steve Muckle
2016-06-01 20:17 ` Rafael J. Wysocki
2016-06-01 10:42 ` Viresh Kumar
2016-06-01 16:37 ` Rafael J. Wysocki
2016-06-02 1:25 ` Viresh Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160601010856.GM9864@graphite.smuckle.net \
--to=steve.muckle@linaro.org \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-pm@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=rjw@rjwysocki.net \
--cc=viresh.kumar@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.