Porting the intel_pstate driver to Xen
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v6 Latest6 patches 7 repliesIn review
- v59 patches 34 repliesSuperseded
- v411 patches 44 repliesSuperseded
Earlier versions · 2
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v3 | 11 patches | 42 replies | Superseded | |
| v1 | 9 patches | 32 replies | Superseded |
Changes in v6 from the cover letter
Changes include patch re-organization, data type change, coding style change etc. Please go to each patch for details.
Patches in v6 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/6 | x86/intel_pstate: add some calculation related supportxen/ xen/ xen/ | +114 | 1 reply | |
| 2/6 | x86/intel_pstate: introduce the internal_governor structxen/ xen/ | +10 | 1 reply | |
| 3/6 | x86/intel_pstate: the main body of the intel_pstate driverxen/ xen/ xen/ +2 more | +923 | 1 reply | |
| 4/6 | x86/intel_pstate: add a booting param to select the driver to loaddocs/ xen/ xen/ | +19 | 1 reply | |
| 5/6 | x86/intel_pstate: support the use of intel_pstate in pmstat.ctools/ tools/ tools/ +3 more | +198 | 2 replies | |
| 6/6 | tools: enable xenpm to control the intel_pstate drivertools/ | +94 | 1 reply |
Reviews trailers per patch
3 of 6 patches have a Reviewed-by or Acked-by.
| Patch | Wei Liu | Jan Beulich |
|---|---|---|
| 1/6 | ||
| 2/6 | ||
| 3/6 | ||
| 4/6 | A-b | |
| 5/6 | A-b | |
| 6/6 | A-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH v6 0/6] Porting the intel_pstate driver to Xen
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 : 10affected_cpus : 10
cpuinfo frequency : max [3700000] min [1200000] cur [1400000]scaling_driver : intel_pstatescaling_avail_gov : performance powersave userspace ondemandcurrent_governor : ondemandmax_perf_pct : 100min_perf_pct : 32turbo_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
Signature · 1 line
1.9.1