From: Thomas Renninger <trenn@suse.de>
To: Borislav Petkov <bp@amd64.org>
Cc: akpm@linux-foundation.org, davej@redhat.com,
cpufreq@vger.kernel.org, x86@kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/5] powernow-k8: Add core performance boost support
Date: Tue, 23 Mar 2010 12:17:16 +0100 [thread overview]
Message-ID: <201003231217.16451.trenn@suse.de> (raw)
In-Reply-To: <1269283121-11894-3-git-send-email-bp@amd64.org>
On Monday 22 March 2010 19:38:38 Borislav Petkov wrote:
> From: Borislav Petkov <borislav.petkov@amd.com>
>
> Starting with F10h, revE, AMD processors add support for a dynamic
> core boosting feature called Core Performance Boost. When a specific
> condition is present, a subset of the cores on a system are boosted
> beyond their P0 operating frequency to speed up the performance of
> single-threaded applications.
>
> In the normal case, the system comes out of reset with core boosting
> enabled. This patch adds a sysfs knob with which core boosting can be
> switched on or off for benchmarking purposes.
>
> While at it, cleanup the driver init codepath and update copyrights.
>
> Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
> ---
> arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 115 ++++++++++++++++++++++++++---
> arch/x86/kernel/cpu/cpufreq/powernow-k8.h | 3 +-
> 2 files changed, 106 insertions(+), 12 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
> index d360b56..90fda2c 100644
> --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
> +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
> @@ -1,6 +1,5 @@
> -
> /*
> - * (c) 2003-2006 Advanced Micro Devices, Inc.
> + * (c) 2003-2010 Advanced Micro Devices, Inc.
> * Your use of this code is subject to the terms and conditions of the
> * GNU general public license version 2. See "COPYING" or
> * http://www.gnu.org/licenses/gpl.html
> @@ -54,6 +53,10 @@ static DEFINE_PER_CPU(struct powernow_k8_data *, powernow_data);
>
> static int cpu_family = CPU_OPTERON;
>
> +/* core performance boost */
> +static bool cpb_capable, cpb_disabled;
Whatabout using a cpufeature (arch/x86/include/asm/cpufeature.h)
instead of cpb_capable. Then people could see this feature in
/proc/cpuinfo and other code parts could check for it easily if
needed later.
It could already be set in arch/x86/kernel/cpu/amd.c and
powernow-k8 could use cpu_has(cpu, X86_FEATURE_CPB);
Instead of cpb_disabled, I'd use cpb_enabled. Checking for
!cpb_disabled whether it's enabled, is ugly to read.
> +static struct msr __percpu *msrs;
> +
> #ifndef CONFIG_SMP
> static inline const struct cpumask *cpu_core_mask(int cpu)
> {
> @@ -1393,8 +1396,69 @@ out:
> return khz;
> }
>
> +static void _cpb_toggle_msrs(bool t)
> +{
> + int cpu;
> +
> + rdmsr_on_cpus(cpu_online_mask, MSR_K7_HWCR, msrs);
> +
> + for_each_cpu(cpu, cpu_online_mask) {
> + struct msr *reg = per_cpu_ptr(msrs, cpu);
> + if (t)
> + reg->l &= ~BIT(25);
> + else
> + reg->l |= BIT(25);
> + }
> + wrmsr_on_cpus(cpu_online_mask, MSR_K7_HWCR, msrs);
> +}
> +
> +/*
> + * Switch on/off core performance boosting.
> + *
> + * 0=disable
> + * 1=enable.
> + */
> +static void cpb_toggle(bool t)
> +{
> + if (!cpb_capable)
> + return;
> +
> + if (t && cpb_disabled) {
> + cpb_disabled = false;
cpb_enabled = true
is better.
> + _cpb_toggle_msrs(t);
> + printk(KERN_INFO PFX "Core Boosting enabled.\n");
Always printk on every toggle?
That should not happen often and a user might want to get noticed if
an app does this behind his back -> should be fine w/ or w/o, just not
sure whether it's intended.
...
Thomas
next prev parent reply other threads:[~2010-03-23 11:17 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-22 18:38 [PATCH 0/5] powernow-k8: Core Performance Boost and effective frequency support Borislav Petkov
2010-03-22 18:38 ` [PATCH 1/5] cpufreq: Unify sysfs attribute definition macros Borislav Petkov
2010-03-23 11:07 ` Thomas Renninger
2010-03-23 11:44 ` Borislav Petkov
2010-03-23 11:55 ` Thomas Renninger
2010-03-23 12:05 ` Borislav Petkov
2010-03-23 12:30 ` Thomas Renninger
2010-03-22 18:38 ` [PATCH 2/5] powernow-k8: Add core performance boost support Borislav Petkov
2010-03-23 11:17 ` Thomas Renninger [this message]
2010-03-23 11:58 ` Borislav Petkov
2010-03-23 13:27 ` Dominik Brodowski
2010-03-23 14:19 ` Borislav Petkov
2010-03-23 14:47 ` Dominik Brodowski
2010-03-23 16:26 ` Borislav Petkov
2010-03-22 18:38 ` [PATCH 3/5] cpufreq: Add APERF/MPERF support for AMD processors Borislav Petkov
2010-03-23 11:26 ` Thomas Renninger
2010-03-23 11:59 ` Borislav Petkov
2010-03-22 18:38 ` [PATCH 4/5] powernow-k8: Fix frequency reporting Borislav Petkov
2010-03-22 18:38 ` [PATCH 5/5] cpufreq: Add support for actual freq Borislav Petkov
2010-03-23 11:51 ` Thomas Renninger
2010-03-23 14:23 ` Borislav Petkov
2010-03-23 14:41 ` Dominik Brodowski
2010-03-23 15:12 ` Thomas Renninger
2010-03-24 14:02 ` Borislav Petkov
-- strict thread matches above, loose matches on Subject: below --
2010-03-24 17:46 [PATCH 0/5] powernow-k8: Core Performance Boost and effective frequency support Borislav Petkov
2010-03-24 17:46 ` [PATCH 2/5] powernow-k8: Add core performance boost support Borislav Petkov
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=201003231217.16451.trenn@suse.de \
--to=trenn@suse.de \
--cc=akpm@linux-foundation.org \
--cc=bp@amd64.org \
--cc=cpufreq@vger.kernel.org \
--cc=davej@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@kernel.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