From: Rob Herring <robh@kernel.org>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: rjw@rjwysocki.net, linux-kernel@vger.kernel.org,
viresh.kumar@linaro.org, Chris Redpath <chris.redpath@linaro.org>,
Quentin Perret <quentin.perret@linaro.org>,
Amit Kucheria <amit.kucheria@linaro.org>,
Nicolas Dechesne <nicolas.dechesne@linaro.org>,
Niklas Cassel <niklas.cassel@linaro.org>,
Mark Rutland <mark.rutland@arm.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Sudeep Holla <sudeep.holla@arm.com>, Li Yang <leoyang.li@nxp.com>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@vger.kernel.org>
Subject: Re: [PATCH V4 2/2] base/drivers/arch_topology: Default dmips-mhz if they are not set in DT
Date: Mon, 26 Nov 2018 19:42:47 -0600 [thread overview]
Message-ID: <20181127014247.GA26233@bogus> (raw)
In-Reply-To: <1543234847-21611-2-git-send-email-daniel.lezcano@linaro.org>
On Mon, Nov 26, 2018 at 01:20:43PM +0100, Daniel Lezcano wrote:
> In the case of asymmetric SoC with the same micro-architecture, we
> have a group of CPUs with smaller OPPs than the other group. One
> example is the 96boards dragonboard 820c. There is no dmips/MHz
> difference between both groups, so no need to specify the values in
> the DT. Unfortunately, without these defined, there is no scaling
> capacity computation triggered, so we need to write
> 'capacity-dmips-mhz' for each CPU with the same value in order to
> force the scaled capacity computation.
>
> In order to fix this situation, allocate 'raw_capacity' so the pointer
> is set and the init_cpu_capacity_callback() function can be called.
>
> This was tested on db820c:
> - specified values in the DT (correct results)
> - partial values defined in the DT (error + fallback to defaults)
> - no specified values in the DT (correct results)
>
> correct results are:
> cat /sys/devices/system/cpu/cpu*/cpu_capacity
> 758
> 758
> 1024
> 1024
>
> ... respectively for CPU0, CPU1, CPU2 and CPU3.
>
> That reflects the capacity for the max frequencies 1593600 and 2150400.
>
> Cc: Chris Redpath <chris.redpath@linaro.org>
> Cc: Quentin Perret <quentin.perret@linaro.org>
> Cc: Viresh Kumar <viresh.kumar@linaro.org>
> Cc: Amit Kucheria <amit.kucheria@linaro.org>
> Cc: Nicolas Dechesne <nicolas.dechesne@linaro.org>
> Cc: Niklas Cassel <niklas.cassel@linaro.org>
> Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
> Documentation/devicetree/bindings/arm/cpu-capacity.txt | 6 ++++++
Acked-by: Rob Herring <robh@kernel.org>
> drivers/base/arch_topology.c | 13 ++++++++++++-
> 2 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/arm/cpu-capacity.txt b/Documentation/devicetree/bindings/arm/cpu-capacity.txt
> index 84262cd..f53a3c9 100644
> --- a/Documentation/devicetree/bindings/arm/cpu-capacity.txt
> +++ b/Documentation/devicetree/bindings/arm/cpu-capacity.txt
> @@ -54,6 +54,12 @@ fall back to the default capacity value for every CPU. If cpufreq is not
> available, final capacities are calculated by directly using capacity-dmips-
> mhz values (normalized w.r.t. the highest value found while parsing the DT).
>
> +If capacity-dmips-mhz is not specified or if the parsing fails, the
> +default capacity value will be computed against the highest frequency.
> +When all CPUs have the same OPP, they will have the same capacity
> +value otherwise the capacity will be scaled down for CPUs having lower
> +frequencies.
> +
> ===========================================
> 4 - Examples
> ===========================================
> diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
> index fd5325b..e0c5b60 100644
> --- a/drivers/base/arch_topology.c
> +++ b/drivers/base/arch_topology.c
> @@ -243,9 +243,20 @@ static int __init register_cpufreq_notifier(void)
> * until we have the necessary code to parse the cpu capacity, so
> * skip registering cpufreq notifier.
> */
> - if (!acpi_disabled || !raw_capacity)
> + if (!acpi_disabled)
> return -EINVAL;
>
> + if (!raw_capacity) {
> +
> + pr_info("cpu_capacity: No capacity defined in DT, set default "
> + "values to %ld\n", SCHED_CAPACITY_SCALE);
> +
> + raw_capacity = kmalloc_array(num_possible_cpus(),
> + sizeof(*raw_capacity), GFP_KERNEL);
> + if (!raw_capacity)
> + return -ENOMEM;
> + }
> +
> if (!alloc_cpumask_var(&cpus_to_visit, GFP_KERNEL)) {
> pr_err("cpu_capacity: failed to allocate memory for cpus_to_visit\n");
> return -ENOMEM;
> --
> 2.7.4
>
next prev parent reply other threads:[~2018-11-27 1:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-26 12:20 [PATCH V4 1/2] base/drivers/arch_topology: Replace mutex with READ_ONCE / WRITE_ONCE Daniel Lezcano
2018-11-26 12:20 ` [PATCH V4 2/2] base/drivers/arch_topology: Default dmips-mhz if they are not set in DT Daniel Lezcano
2018-11-26 12:20 ` Daniel Lezcano
2018-11-26 12:48 ` Quentin Perret
2018-11-26 12:49 ` Daniel Lezcano
2018-11-26 15:06 ` Greg Kroah-Hartman
2018-11-26 20:08 ` Daniel Lezcano
2018-11-27 1:42 ` Rob Herring [this message]
2018-11-27 3:57 ` Viresh Kumar
2018-11-27 8:31 ` Daniel Lezcano
2018-11-27 9:09 ` Quentin Perret
2018-11-27 10:15 ` 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=20181127014247.GA26233@bogus \
--to=robh@kernel.org \
--cc=amit.kucheria@linaro.org \
--cc=chris.redpath@linaro.org \
--cc=daniel.lezcano@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=leoyang.li@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=nicolas.dechesne@linaro.org \
--cc=niklas.cassel@linaro.org \
--cc=quentin.perret@linaro.org \
--cc=rafael@kernel.org \
--cc=rjw@rjwysocki.net \
--cc=sudeep.holla@arm.com \
--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.