From: Michael Neuling <mikey@neuling.org>
To: Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com>,
linuxppc-dev@ozlabs.org, linux-kernel@vger.kernel.org
Cc: ego@linux.vnet.ibm.com, linux-pm@vger.kernel.org,
viresh.kumar@linaro.org, rjw@rjwysocki.net, pc@us.ibm.com,
shreyas@linux.vnet.ibm.com, anton@samba.org
Subject: Re: [PATCH v8 3/6] cpufreq: powernv: Remove cpu_to_chip_id() from hot-path
Date: Fri, 18 Mar 2016 15:04:17 +1100 [thread overview]
Message-ID: <1458273857.6622.75.camel@neuling.org> (raw)
In-Reply-To: <1454442102-1229-4-git-send-email-shilpa.bhat@linux.vnet.ibm.com>
On Wed, 2016-02-03 at 01:11 +0530, Shilpasri G Bhat wrote:
> cpu_to_chip_id() does a DT walk through to find out the chip id by
> taking a contended device tree lock. This adds an unnecessary overhead
> in a hot path. So instead of calling cpu_to_chip_id() everytime cache
> the chip ids for all cores in the array 'core_to_chip_map' and use it
> in the hotpath.
>=20
> Reported-by: Anton Blanchard <anton@samba.org>
> Signed-off-by: Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com>
> Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
> No changes from v7.
How about this instead? It removes the linear lookup and seems a lot
less complex.
Mikey
diff --git a/drivers/cpufreq/powernv-cpufreq.c b/drivers/cpufreq/powernv-cp=
ufreq.c
index 547890f..d63d2cb 100644
--- a/drivers/cpufreq/powernv-cpufreq.c
+++ b/drivers/cpufreq/powernv-cpufreq.c
@@ -52,6 +52,7 @@ static struct chip {
} *chips;
=20
static int nr_chips;
+static DEFINE_PER_CPU(unsigned int, chip_id);
=20
/*
* Note: The set of pstates consists of contiguous integers, the
@@ -317,9 +318,7 @@ static void powernv_cpufreq_throttle_check(void *data)
=20
pmsr =3D get_pmspr(SPRN_PMSR);
=20
- for (i =3D 0; i < nr_chips; i++)
- if (chips[i].id =3D=3D cpu_to_chip_id(cpu))
- break;
+ i =3D this_cpu_read(chip_id);
=20
/* Check for Pmax Capping */
pmsr_pmax =3D (s8)PMSR_MAX(pmsr);
@@ -560,6 +559,7 @@ static int init_chip_info(void)
for_each_possible_cpu(cpu) {
unsigned int id =3D cpu_to_chip_id(cpu);
=20
+ per_cpu(chip_id, cpu) =3D nr_chips;
if (prev_chip_id !=3D id) {
prev_chip_id =3D id;
chip[nr_chips++] =3D id;
next prev parent reply other threads:[~2016-03-18 4:04 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-02 19:41 [PATCH v8 0/6] cpufreq: powernv: Redesign the presentation of throttle notification and solve bug-fixes in the driver Shilpasri G Bhat
2016-02-02 19:41 ` [PATCH v8 1/6] cpufreq: powernv: Free 'chips' on module exit Shilpasri G Bhat
2016-02-02 19:41 ` [PATCH v8 2/6] cpufreq: powernv: Hot-plug safe the kworker thread Shilpasri G Bhat
2016-02-02 19:41 ` [PATCH v8 3/6] cpufreq: powernv: Remove cpu_to_chip_id() from hot-path Shilpasri G Bhat
2016-03-18 4:04 ` Michael Neuling [this message]
2016-03-18 4:11 ` Michael Neuling
2016-03-18 13:13 ` Rafael J. Wysocki
2016-03-18 14:58 ` [PATCH] cpufreq: powernv: Define per_cpu chip pointer to optimize hot-path Shilpasri G Bhat
2016-03-21 7:22 ` Viresh Kumar
2016-03-21 14:13 ` Rafael J. Wysocki
2016-03-18 22:37 ` [PATCH v8 3/6] cpufreq: powernv: Remove cpu_to_chip_id() from hot-path Benjamin Herrenschmidt
2016-03-18 23:20 ` Michael Neuling
2016-02-02 19:41 ` [PATCH v8 4/6] cpufreq: powernv/tracing: Add powernv_throttle tracepoint Shilpasri G Bhat
2016-02-02 19:41 ` [PATCH v8 5/6] cpufreq: powernv: Replace pr_info with trace print for throttle event Shilpasri G Bhat
2016-02-02 19:41 ` [PATCH v8 6/6] cpufreq: powernv: Add sysfs attributes to show throttle stats Shilpasri G Bhat
2016-02-03 8:27 ` Viresh Kumar
2016-02-03 8:42 ` Shilpasri G Bhat
2016-02-03 9:03 ` Viresh Kumar
2016-02-03 12:02 ` Gautham R Shenoy
2016-02-03 14:06 ` Viresh Kumar
2016-02-03 16:24 ` Shilpasri G Bhat
2016-02-04 1:51 ` Viresh Kumar
2016-02-03 13:40 ` [PATCH v8 0/6] cpufreq: powernv: Redesign the presentation of throttle notification and solve bug-fixes in the driver Rafael J. Wysocki
2016-02-03 14:01 ` Viresh Kumar
2016-02-03 16:14 ` Shilpasri G Bhat
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=1458273857.6622.75.camel@neuling.org \
--to=mikey@neuling.org \
--cc=anton@samba.org \
--cc=ego@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=pc@us.ibm.com \
--cc=rjw@rjwysocki.net \
--cc=shilpa.bhat@linux.vnet.ibm.com \
--cc=shreyas@linux.vnet.ibm.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 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).