All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Wang <wei.w.wang@intel.com>
To: xen-devel@lists.xen.org, jbeulich@suse.com
Cc: andrew.cooper3@citrix.com, Wei Wang <wei.w.wang@intel.com>
Subject: [PATCH v3 03/11] x86/intel_pstate: add new policy fields and a new driver interface
Date: Thu, 11 Jun 2015 16:26:49 +0800	[thread overview]
Message-ID: <1434011209-16925-1-git-send-email-wei.w.wang@intel.com> (raw)

In order to better support future Intel processors, intel_pstate
changes to use percentage values to tune P-states. The intel_pstate
driver uses its own internal governor, and it is recorded in the
"policy->policy" field. The setpolicy driver interface is used to
configure the intel_pstate internal policy. The __cpufreq_set_policy
needs to be intercepted to use the setpolicy driver if it exists.

The perf_limts struct is included in the per-CPU policy struct, so
that each CPU can be managed individually by the xenpm tool.

Signed-off-by: Wei Wang <wei.w.wang@intel.com>
---
 xen/drivers/cpufreq/utility.c      |  6 ++++++
 xen/include/acpi/cpufreq/cpufreq.h | 15 +++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/xen/drivers/cpufreq/utility.c b/xen/drivers/cpufreq/utility.c
index 519f862..b3fe3c0 100644
--- a/xen/drivers/cpufreq/utility.c
+++ b/xen/drivers/cpufreq/utility.c
@@ -457,6 +457,12 @@ int __cpufreq_set_policy(struct cpufreq_policy *data,
     data->min = policy->min;
     data->max = policy->max;
 
+    if (cpufreq_driver->setpolicy) {
+        data->limits.min_perf_pct = policy->limits.min_perf_pct;
+        data->limits.max_perf_pct = policy->limits.max_perf_pct;
+        return cpufreq_driver->setpolicy(data);
+    }
+
     if (policy->governor != data->governor) {
         /* save old, working values */
         struct cpufreq_governor *old_gov = data->governor;
diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/cpufreq.h
index f96c3e4..60caf59 100644
--- a/xen/include/acpi/cpufreq/cpufreq.h
+++ b/xen/include/acpi/cpufreq/cpufreq.h
@@ -41,6 +41,18 @@ struct cpufreq_cpuinfo {
     unsigned int        transition_latency; /* in 10^(-9) s = nanoseconds */
 };
 
+struct perf_limits {
+    int no_turbo;
+    int turbo_disabled;
+    uint32_t turbo_pct;
+    uint32_t max_perf_pct; /* max performance in percentage */
+    uint32_t min_perf_pct; /* min performance in percentage */
+    uint32_t max_perf;
+    uint32_t min_perf;
+    uint32_t max_policy_pct;
+    uint32_t min_policy_pct;
+};
+
 struct cpufreq_policy {
     cpumask_var_t       cpus;          /* affected CPUs */
     unsigned int        shared_type;   /* ANY or ALL affected CPUs
@@ -52,6 +64,8 @@ struct cpufreq_policy {
     unsigned int        max;    /* in kHz */
     unsigned int        cur;    /* in kHz, only needed if cpufreq
                                  * governors are used */
+    unsigned int        policy;
+    struct perf_limits  limits;
     struct cpufreq_governor     *governor;
 
     bool_t              resume; /* flag for cpufreq 1st run
@@ -145,6 +159,7 @@ struct cpufreq_driver {
     char   name[CPUFREQ_NAME_LEN];
     int    (*init)(struct cpufreq_policy *policy);
     int    (*verify)(struct cpufreq_policy *policy);
+    int    (*setpolicy)(struct cpufreq_policy *policy);
     int    (*update)(int cpuid, struct cpufreq_policy *policy);
     int    (*target)(struct cpufreq_policy *policy,
                      unsigned int target_freq,
-- 
1.9.1

             reply	other threads:[~2015-06-11  8:26 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-11  8:26 Wei Wang [this message]
2015-06-18 14:15 ` [PATCH v3 03/11] x86/intel_pstate: add new policy fields and a new driver interface Jan Beulich

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=1434011209-16925-1-git-send-email-wei.w.wang@intel.com \
    --to=wei.w.wang@intel.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=xen-devel@lists.xen.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.