xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Wei Wang <wei.w.wang@intel.com>
To: jbeulich@suse.com, andrew.cooper3@citrix.com,
	xen-devel@lists.xen.org, wei.liu2@citrix.com
Cc: Wei Wang <wei.w.wang@intel.com>
Subject: [PATCH v6 0/6] Porting the intel_pstate driver to Xen
Date: Wed, 28 Oct 2015 11:21:12 +0800	[thread overview]
Message-ID: <1446002478-16105-1-git-send-email-wei.w.wang@intel.com> (raw)

v6 changes:
Changes include patch re-organization, data type change, coding style
change etc. Please go to each patch for details.

v5 changes:
We have made various changes in this version, including introducing new
data structures, coding styles changes etc. Please see each patch's commit
message for change details.

v4 changes:
1) introduce a new struct, internal_governor, to "cpufreq_policy";
2) add a new header file, xen/include/asm-x86/cpufreq.h;
3) remove the APERF/MPERF feature detection code in cpufreq.c and powernow.c;
4) coding style changes.

Please check each patch's commit message for details.

v3 Changes:
1) coding style changes based on Jan's comments;
2) remove the function - unregister_cpu_notifier();
3) solve a bug in the CPU offline code (Patch 0007);
4) move the perf_limits struct into the per-CPU policy struct, so that
each CPU can be managed individually;
5) "load_intel_pstate" is changed local to the intel_pstate.c file, and
add its description to the xen-command-line.markdown.

v2 Changes:
1) The intel_pstate driver can be controlled via two ways:
A. min_perf_pct and max_perf_pct
   The user directly adjusts min_perf_pct and max_perf_pct to get what 
   they want. For example, if min_perf_pct=max_perf_pct=60%, then the 
   user is asking for something similar to a userspace governor with 
   setting the requested performance=60%.
B. set-scaling-governor
   This one is functionally redundant, since A. can achieve all the
   governor functions. It is remained to give people time to get
   familiar with method A.
   Users can choose from the four governors: Powersave, Ondemand,
   Powersave, Performance. The driver achieves the functionality of 
   the selected governor via adjusting the min_perf_pct and max_perf_pct
   itself.
2) The xenpm "get-cpufreq-para" displays the following things:
cpu id               : 10
affected_cpus        : 10
cpuinfo frequency    : max [3700000] min [1200000] cur [1400000]
scaling_driver       : intel_pstate
scaling_avail_gov    : performance powersave userspace ondemand
current_governor     : ondemand
max_perf_pct         : 100
min_perf_pct         : 32
turbo_pct            : 54
turbo mode           : enabled
3) Changed "intel_pstate=disable" to "intel_pstate=enable". 
If "intel_pstate=enable" is added, but the CPU does not support the
intel_pstate driver, the old P-state driver (acpi-cpufreq) will be loaded.
4) Moved the declarations under xen/include/acpi to an x86-specific header.

v1:
This patch series ports the intel_pstate driver from the Linux kernel to
Xen. The intel_pstate driver is used to tune P states for SandyBridge+
processors. It needs to be enabled by adding "intel_pstate=enable" to the
booting parameter list.

The intel_pstate.c file under xen/arch/x86/acpi/cpufreq/
contains all the logic for selecting the current P-state. It follows its
implementation in the kernel. In order to better support future Intel CPUs
(e.g. the HWP feature on Skylake+), intel_pstate changes to tune P-state
based on percentage values.

The xenpm tool is also upgraded to support the intel_pstate driver. If
intel_pstate is used, "get-cpufreq-para" displays percentage value based
feedback. If the intel_pstate driver is not enabled, xenpm will work in
the old style.


Wei Wang (6):
  x86/intel_pstate: add some calculation related support
  x86/intel_pstate: introduce the internal_governor struct
  x86/intel_pstate: the main body of the intel_pstate driver
  x86/intel_pstate: add a booting param to select the driver to load
  x86/intel_pstate: support the use of intel_pstate in pmstat.c
  tools: enable xenpm to control the intel_pstate driver

 docs/misc/xen-command-line.markdown      |   7 +
 tools/libxc/include/xenctrl.h            |  20 +-
 tools/libxc/xc_pm.c                      |  16 +-
 tools/misc/xenpm.c                       | 116 +++-
 xen/arch/x86/acpi/cpufreq/Makefile       |   1 +
 xen/arch/x86/acpi/cpufreq/cpufreq.c      |  15 +-
 xen/arch/x86/acpi/cpufreq/intel_pstate.c | 882 +++++++++++++++++++++++++++++++
 xen/arch/x86/oprofile/op_model_athlon.c  |   9 -
 xen/drivers/acpi/pmstat.c                | 183 ++++++-
 xen/drivers/cpufreq/cpufreq.c            |   5 +-
 xen/include/acpi/cpufreq/cpufreq.h       |  15 +
 xen/include/asm-x86/cpufreq.h            |  33 ++
 xen/include/asm-x86/div64.h              |  91 ++++
 xen/include/asm-x86/msr-index.h          |   3 +
 xen/include/public/sysctl.h              |  29 +-
 xen/include/xen/kernel.h                 |  23 +
 16 files changed, 1356 insertions(+), 92 deletions(-)
 create mode 100644 xen/arch/x86/acpi/cpufreq/intel_pstate.c
 create mode 100644 xen/include/asm-x86/cpufreq.h

-- 
1.9.1

             reply	other threads:[~2015-10-28  3:21 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-28  3:21 Wei Wang [this message]
2015-10-28  3:21 ` [PATCH v6 1/6] x86/intel_pstate: add some calculation related support Wei Wang
2015-11-17 17:36   ` Jan Beulich
2015-10-28  3:21 ` [PATCH v6 2/6] x86/intel_pstate: introduce the internal_governor struct Wei Wang
2015-11-20 11:48   ` Jan Beulich
2015-10-28  3:21 ` [PATCH v6 3/6] x86/intel_pstate: the main body of the intel_pstate driver Wei Wang
2015-11-20 14:09   ` Jan Beulich
2015-10-28  3:21 ` [PATCH v6 4/6] x86/intel_pstate: add a booting param to select the driver to load Wei Wang
2015-11-20 14:22   ` Jan Beulich
2015-10-28  3:21 ` [PATCH v6 5/6] x86/intel_pstate: support the use of intel_pstate in pmstat.c Wei Wang
2015-10-28 11:18   ` Wei Liu
2015-11-20 14:47   ` Jan Beulich
2015-10-28  3:21 ` [PATCH v6 6/6] tools: enable xenpm to control the intel_pstate driver Wei Wang
2015-10-28 11:36   ` Wei Liu

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=1446002478-16105-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=wei.liu2@citrix.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 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).