From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
"lenb@kernel.org" <lenb@kernel.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"patches@linaro.org" <patches@linaro.org>,
"linaro-dev@lists.linaro.org" <linaro-dev@lists.linaro.org>,
"pdeschrijver@nvidia.com" <pdeschrijver@nvidia.com>,
"len.brown@intel.com >> Len Brown" <len.brown@intel.com>
Subject: Re: [PATCH 0/6] cpuidle : per cpu latencies
Date: Tue, 18 Sep 2012 23:10:57 +0200 [thread overview]
Message-ID: <201209182310.57276.rjw@sisk.pl> (raw)
In-Reply-To: <20120918095212.GA23259@e102568-lin.cambridge.arm.com>
On Tuesday, September 18, 2012, Lorenzo Pieralisi wrote:
> On Mon, Sep 17, 2012 at 10:35:00PM +0100, Daniel Lezcano wrote:
> > On 09/17/2012 10:50 PM, Rafael J. Wysocki wrote:
> > > On Monday, September 17, 2012, Daniel Lezcano wrote:
> > >> On 09/08/2012 12:17 AM, Rafael J. Wysocki wrote:
> > >>> On Friday, September 07, 2012, Daniel Lezcano wrote:
>
> [...]
>
> > >>> Unfortunately, I also don't agree with the approach used by the remaining
> > >>> patches, which is to try to use a separate array of states for each
> > >>> individual CPU core. This way we end up with quite some duplicated data
> > >>> if the CPU cores in question actually happen to be identical.
> > >>
> > >> Actually, there is a single array of states which is defined with the
> > >> cpuidle_driver. A pointer to this array from the cpuidle_device
> > >> structure is added and used from the cpuidle core.
> > >>
> > >> If the cpu cores are identical, this pointer will refer to the same array.
> > >
> > > OK, but what if there are two (or more) sets of cores, where all cores in one
> > > set are identical, but two cores from different sets differ?
> >
> > A second array is defined and registered for these cores with the
> > cpuidle_register_states function.
> >
> > Let's pick an example with the big.LITTLE architecture.
> >
> > There are two A7 and two A15, resulting in the code on 4 cpuidle_device
> > structure (eg. dev_A7_1, dev_A7_2, dev_A15_1, dev_A15_2). Then the
> > driver registers a different cpu states array for the A7s and the A15s
> >
> > At the end,
> >
> > dev_A7_1->states points to the array states 1
> > dev_A7_2->states points to the array states 1
> >
> > dev_A15_1->states points to the array states 2
> > dev_A15_2->states points to the array states 2
> >
> > It is similar with Tegra3.
> >
> > I think Peter and Lorenzo already wrote a driver based on this approach.
> > Peter, Lorenzo any comments ?
>
> Well, I guess the question is about *where* the array of states should
> belong. With the current approach we end up having an array of states
> in the cpuidle_driver, but also array(s) of states in platform code and we
> override the newly added pointer in cpuidle_device to point to those
> array(s) for CPUs whose idle states differ from the ones registered (and
> copied) in the driver.
>
> Data is NOT duplicated but now I understand Rafael's remark.
>
> If we have a driver per-[set of cpus] (that is impossible with the
> current framework as you higlighted) code would be cleaner since
> all idle states data would live in cpuidle_driver(s), not possibly in
> platform code. Then the problem becomes: what cpuidle_driver should be
> used and how to choose that at run-time within the governors.
For that to work, the cpuidle core would have to be modified so that it didn't
make the "there may be only on driver in the system" assumption and there would
have to be a way to associate the given CPU core with the matching driver.
Thanks,
Rafael
next prev parent reply other threads:[~2012-09-18 21:04 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-07 10:19 [PATCH 0/6] cpuidle : per cpu latencies Daniel Lezcano
2012-09-07 10:19 ` [PATCH 1/6] acpi : move the acpi_idle_driver variable declaration Daniel Lezcano
2012-09-07 21:19 ` Rafael J. Wysocki
2012-09-11 11:14 ` Daniel Lezcano
2012-09-11 20:28 ` Rafael J. Wysocki
2012-09-07 10:19 ` [PATCH 2/6] acpi : move cpuidle_device field out of the acpi_processor_power structure Daniel Lezcano
2012-09-07 11:03 ` Amit Kucheria
2012-09-07 21:40 ` Rafael J. Wysocki
2012-09-07 21:54 ` Rafael J. Wysocki
2012-09-07 22:06 ` Rafael J. Wysocki
2012-09-11 12:20 ` Daniel Lezcano
2012-09-11 20:32 ` Rafael J. Wysocki
2012-09-07 10:19 ` [PATCH 3/6] acpi : remove pointless cpuidle device state_count init Daniel Lezcano
2012-09-07 11:01 ` Amit Kucheria
2012-09-07 21:50 ` Rafael J. Wysocki
2012-09-16 20:38 ` Daniel Lezcano
[not found] ` <505638D9.80302-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2012-09-16 21:02 ` Rafael J. Wysocki
2012-09-07 10:19 ` [PATCH 4/6] cpuidle : add a pointer for cpuidle_state in the cpuidle_device Daniel Lezcano
[not found] ` <1347013172-12465-1-git-send-email-daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2012-09-07 10:19 ` [PATCH 5/6] cpuidle : use per cpuidle device cpu states Daniel Lezcano
2012-09-07 10:19 ` [PATCH 6/6] cpuidle : add cpuidle_register_states function Daniel Lezcano
2012-09-07 11:04 ` [PATCH 0/6] cpuidle : per cpu latencies Amit Kucheria
2012-09-07 12:02 ` Daniel Lezcano
2012-09-07 22:17 ` Rafael J. Wysocki
2012-09-17 8:03 ` Daniel Lezcano
2012-09-17 20:50 ` Rafael J. Wysocki
2012-09-17 21:35 ` Daniel Lezcano
2012-09-18 9:52 ` Lorenzo Pieralisi
2012-09-18 21:10 ` Rafael J. Wysocki [this message]
2012-09-18 11:19 ` Peter De Schrijver
2012-09-18 21:05 ` Rafael J. Wysocki
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=201209182310.57276.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=daniel.lezcano@linaro.org \
--cc=len.brown@intel.com \
--cc=lenb@kernel.org \
--cc=linaro-dev@lists.linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=patches@linaro.org \
--cc=pdeschrijver@nvidia.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).