Skip to content
This repository has been archived by the owner on Jul 7, 2021. It is now read-only.

Commit

Permalink
devfreq_boost: Update and expand to handle CPUBW/LLCCBW boosting
Browse files Browse the repository at this point in the history
This will enable us to more accurately replicate Pixel 4 userspace
DDR boosting by adding support for both CPUBW and LLCCBW devices.

https://android.googlesource.com/device/google/coral/+/refs/heads/master/init.power.rc

https://android.googlesource.com/device/google/coral/+/refs/heads/master/powerhint.json

Signed-off-by: idkwhoiam322 <idkwhoiam322@raphielgang.org>
[@0ctobot: Squash idkwhoiam322/weeb_kernel_oneplus_sm8150@86761ff
with idkwhoiam322/weeb_kernel_oneplus_sm8150@f9ca549. Refactor
device naming conventions and registration for improved clarity and
consistency, expand to cover kernel-specific boost events]
Signed-off-by: Adam W. Willis <return.of.octobot@gmail.com>
  • Loading branch information
idkwhoiam322 authored and 0ctobot committed Feb 5, 2020
1 parent a704a53 commit 27a37f5
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 3 deletions.
9 changes: 8 additions & 1 deletion drivers/devfreq/Kconfig
Expand Up @@ -291,7 +291,14 @@ config DEVFREQ_MSM_CPUBW_BOOST_FREQ
int "Boost freq for cpubw device"
default "0"
help
Boost frequency for the MSM DDR bus.
CPUBW boost frequency for the MSM DDR bus.


config DEVFREQ_MSM_LLCCBW_BOOST_FREQ
int "Boost freq for llccbw device"
default "0"
help
LLCCBW boost frequency for the MSM DDR bus.

endif

Expand Down
4 changes: 3 additions & 1 deletion drivers/devfreq/devfreq_boost.c
Expand Up @@ -50,7 +50,9 @@ static void devfreq_max_unboost(struct work_struct *work);

static struct df_boost_drv df_boost_drv_g __read_mostly = {
BOOST_DEV_INIT(df_boost_drv_g, DEVFREQ_MSM_CPUBW,
CONFIG_DEVFREQ_MSM_CPUBW_BOOST_FREQ)
CONFIG_DEVFREQ_MSM_CPUBW_BOOST_FREQ),
BOOST_DEV_INIT(df_boost_drv_g, DEVFREQ_MSM_LLCCBW,
CONFIG_DEVFREQ_MSM_LLCCBW_BOOST_FREQ)
};

static void __devfreq_boost_kick(struct boost_dev *b)
Expand Down
5 changes: 4 additions & 1 deletion drivers/devfreq/devfreq_devbw.c
Expand Up @@ -339,9 +339,12 @@ int devfreq_add_devbw(struct device *dev)
return PTR_ERR(d->df);
}

if (!strcmp(dev_name(dev), "soc:qcom,cpu-llcc-ddr-bw"))
if (!strcmp(dev_name(dev), "soc:qcom,cpu-cpu-llcc-bw"))
devfreq_register_boost_device(DEVFREQ_MSM_CPUBW, d->df);

if (!strcmp(dev_name(dev), "soc:qcom,cpu-llcc-ddr-bw"))
devfreq_register_boost_device(DEVFREQ_MSM_LLCCBW, d->df);

if (cpubw_flag) {
cpubw_flag = false;
qos_request_value.max_state = p->max_state;
Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/drm_atomic.c
Expand Up @@ -2255,6 +2255,7 @@ int drm_mode_atomic_ioctl(struct drm_device *dev,
sysctl_sched_boost) {
cpu_input_boost_kick();
devfreq_boost_kick(DEVFREQ_MSM_CPUBW);
devfreq_boost_kick(DEVFREQ_MSM_LLCCBW);
}

drm_modeset_acquire_init(&ctx, 0);
Expand Down
1 change: 1 addition & 0 deletions include/linux/devfreq_boost.h
Expand Up @@ -9,6 +9,7 @@

enum df_device {
DEVFREQ_MSM_CPUBW,
DEVFREQ_MSM_LLCCBW,
DEVFREQ_MAX
};

Expand Down
1 change: 1 addition & 0 deletions kernel/fork.c
Expand Up @@ -2096,6 +2096,7 @@ long _do_fork(unsigned long clone_flags,
if (is_zygote_pid(current->pid)) {
cpu_input_boost_kick_max(50);
devfreq_boost_kick_max(DEVFREQ_MSM_CPUBW, 50);
devfreq_boost_kick_max(DEVFREQ_MSM_LLCCBW, 50);
}

/*
Expand Down
1 change: 1 addition & 0 deletions mm/page_alloc.c
Expand Up @@ -4069,6 +4069,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
/* Boost when memory is low so allocation latency doesn't get too bad */
cpu_input_boost_kick_max(100);
devfreq_boost_kick_max(DEVFREQ_MSM_CPUBW, 100);
devfreq_boost_kick_max(DEVFREQ_MSM_LLCCBW, 100);

reserve_flags = __gfp_pfmemalloc_flags(gfp_mask);
if (reserve_flags)
Expand Down

0 comments on commit 27a37f5

Please sign in to comment.