mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
msm: dcvs: add ss_no_corr_below_freq parameter
The busy/idle behavior of different cores can be correlated by DCVS when determining what frequency to run cores at. However, this is not desirable below a certain frequency. Add a parameter to establish what this frequency is. The parameter is configurable in userspace via sysfs. The ss_iobusy_conv parameter is currently unused, so it is being replaced with ss_no_corr_below_freq. (cherry picked from commit e8c6d615259af5fde8a6613f53c41c212407bda9) Change-Id: Ibf814f3f93b92a532d7b3af80721a5bc7db1bd31 Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
This commit is contained in:
parent
4d9a321b56
commit
be237a3b3e
9 changed files with 16 additions and 16 deletions
|
@ -37,9 +37,9 @@ Required properties:
|
|||
- qcom,algo-ss-win-size-max-us: sets maximum steady state window size.
|
||||
- qcom,algo-ss-util-pct: sets target CPU utilization during
|
||||
steady-state.
|
||||
- qcom,algo-ss-iobusy-conv: specifies how wait time (i/o busy time)
|
||||
is incorporated into the steady-state
|
||||
algorithm.
|
||||
- qcom,algo-ss-no-corr-below-freq: specifies frequency below which DCVS
|
||||
will not attempt to correlate busy or
|
||||
idle information from different CPUs
|
||||
|
||||
- qcom,energy-active-coeff-a: sets active power equation coefficient a.
|
||||
- qcom,energy-active-coeff-b: sets active power equation coefficient b.
|
||||
|
@ -89,7 +89,7 @@ qcom,kgsl-3d0@fdb00000 {
|
|||
qcom,algo-ss-win-size-min-us = <1000000>;
|
||||
qcom,algo-ss-win-size-max-us = <1000000>;
|
||||
qcom,algo-ss-util-pct = <95>;
|
||||
qcom,algo-ss-iobusy-conv = <100>;
|
||||
qcom,algo-ss-no-corr-below-freq = <0>;
|
||||
|
||||
qcom,energy-active-coeff-a = <2492>;
|
||||
qcom,energy-active-coeff-b = <0>;
|
||||
|
|
|
@ -125,7 +125,7 @@ Example of A330 GPU in MSM8974:
|
|||
qcom,algo-ss-window-size = <1000000>;
|
||||
qcom,algo-ss-util-pct = <95>;
|
||||
qcom,algo-em-max-util-pct = <97>;
|
||||
qcom,algo-ss-iobusy-conv = <100>;
|
||||
qcom,algo-ss-no-corr-below-freq = <0>;
|
||||
|
||||
qcom,dcvs-freq@0 {
|
||||
reg = <0>;
|
||||
|
|
|
@ -106,7 +106,7 @@
|
|||
qcom,algo-ss-win-size-min-us = <1000000>;
|
||||
qcom,algo-ss-win-size-max-us = <1000000>;
|
||||
qcom,algo-ss-util-pct = <95>;
|
||||
qcom,algo-ss-iobusy-conv = <100>;
|
||||
qcom,algo-ss-no-corr-below-freq = <0>;
|
||||
|
||||
qcom,energy-active-coeff-a = <2492>;
|
||||
qcom,energy-active-coeff-b = <0>;
|
||||
|
|
|
@ -51,7 +51,7 @@ static struct msm_dcvs_core_info grp3d_core_info = {
|
|||
.ss_win_size_min_us = 1000000,
|
||||
.ss_win_size_max_us = 1000000,
|
||||
.ss_util_pct = 95,
|
||||
.ss_iobusy_conv = 100,
|
||||
.ss_no_corr_below_freq = 0,
|
||||
},
|
||||
|
||||
.energy_coeffs = {
|
||||
|
|
|
@ -2662,7 +2662,7 @@ static struct msm_dcvs_core_info apq8064_core_info = {
|
|||
.slack_weight_thresh_pct = 3,
|
||||
.slack_time_min_us = 45000,
|
||||
.slack_time_max_us = 45000,
|
||||
.ss_iobusy_conv = 100,
|
||||
.ss_no_corr_below_freq = 0,
|
||||
.ss_win_size_min_us = 1000000,
|
||||
.ss_win_size_max_us = 1000000,
|
||||
.ss_util_pct = 95,
|
||||
|
|
|
@ -2948,7 +2948,7 @@ static struct msm_dcvs_core_info grp3d_core_info = {
|
|||
.ss_win_size_min_us = 1000000,
|
||||
.ss_win_size_max_us = 1000000,
|
||||
.ss_util_pct = 95,
|
||||
.ss_iobusy_conv = 100,
|
||||
.ss_no_corr_below_freq = 0,
|
||||
},
|
||||
.energy_coeffs = {
|
||||
.active_coeff_a = 2492,
|
||||
|
@ -2985,7 +2985,7 @@ static struct msm_dcvs_core_info grp2d_core_info = {
|
|||
.ss_win_size_min_us = 1000000,
|
||||
.ss_win_size_max_us = 1000000,
|
||||
.ss_util_pct = 95,
|
||||
.ss_iobusy_conv = 100,
|
||||
.ss_no_corr_below_freq = 0,
|
||||
},
|
||||
.energy_coeffs = {
|
||||
.active_coeff_a = 2492,
|
||||
|
|
|
@ -48,7 +48,7 @@ struct msm_dcvs_algo_param {
|
|||
uint32_t slack_time_min_us;
|
||||
uint32_t slack_time_max_us;
|
||||
uint32_t slack_weight_thresh_pct;
|
||||
uint32_t ss_iobusy_conv;
|
||||
uint32_t ss_no_corr_below_freq;
|
||||
uint32_t ss_win_size_min_us;
|
||||
uint32_t ss_win_size_max_us;
|
||||
uint32_t ss_util_pct;
|
||||
|
|
|
@ -49,7 +49,7 @@ struct core_attribs {
|
|||
struct kobj_attribute slack_time_min_us;
|
||||
struct kobj_attribute slack_time_max_us;
|
||||
struct kobj_attribute slack_weight_thresh_pct;
|
||||
struct kobj_attribute ss_iobusy_conv;
|
||||
struct kobj_attribute ss_no_corr_below_freq;
|
||||
struct kobj_attribute ss_win_size_min_us;
|
||||
struct kobj_attribute ss_win_size_max_us;
|
||||
struct kobj_attribute ss_util_pct;
|
||||
|
@ -706,7 +706,7 @@ DCVS_ALGO_PARAM(slack_mode_dynamic)
|
|||
DCVS_ALGO_PARAM(slack_time_min_us)
|
||||
DCVS_ALGO_PARAM(slack_time_max_us)
|
||||
DCVS_ALGO_PARAM(slack_weight_thresh_pct)
|
||||
DCVS_ALGO_PARAM(ss_iobusy_conv)
|
||||
DCVS_ALGO_PARAM(ss_no_corr_below_freq)
|
||||
DCVS_ALGO_PARAM(ss_win_size_min_us)
|
||||
DCVS_ALGO_PARAM(ss_win_size_max_us)
|
||||
DCVS_ALGO_PARAM(ss_util_pct)
|
||||
|
@ -892,7 +892,7 @@ static int msm_dcvs_setup_core_sysfs(struct dcvs_core *core)
|
|||
DCVS_RW_ATTRIB(8, slack_weight_thresh_pct);
|
||||
DCVS_RW_ATTRIB(9, slack_time_min_us);
|
||||
DCVS_RW_ATTRIB(10, slack_time_max_us);
|
||||
DCVS_RW_ATTRIB(11, ss_iobusy_conv);
|
||||
DCVS_RW_ATTRIB(11, ss_no_corr_below_freq);
|
||||
DCVS_RW_ATTRIB(12, ss_win_size_min_us);
|
||||
DCVS_RW_ATTRIB(13, ss_win_size_max_us);
|
||||
DCVS_RW_ATTRIB(14, ss_util_pct);
|
||||
|
|
|
@ -876,8 +876,8 @@ static struct msm_dcvs_core_info *adreno_of_get_dcvs(struct device_node *parent)
|
|||
if (adreno_of_read_property(node, "qcom,algo-ss-util-pct",
|
||||
&info->algo_param.ss_util_pct))
|
||||
goto err;
|
||||
if (adreno_of_read_property(node, "qcom,algo-ss-iobusy-conv",
|
||||
&info->algo_param.ss_iobusy_conv))
|
||||
if (adreno_of_read_property(node, "qcom,algo-ss-no-corr-below-freq",
|
||||
&info->algo_param.ss_no_corr_below_freq))
|
||||
goto err;
|
||||
|
||||
if (adreno_of_read_property(node, "qcom,energy-active-coeff-a",
|
||||
|
|
Loading…
Reference in a new issue