soc: qcom: msm_perf: enable msm_perf driver on default config

carve out frequency boost functionality of msm_perf driver
and enable it on non perf images too.

Change-Id: I2a0af988edf04a88d2fc16018f50830a0ab73220
Signed-off-by: Kishore Sri venkata Ganesh Bolisetty <bsrivenk@codeaurora.org>
This commit is contained in:
Kishore Sri venkata Ganesh Bolisetty 2020-10-24 09:06:51 -07:00
parent 4fc723f7af
commit 206e048a12
3 changed files with 28 additions and 15 deletions

View File

@ -610,6 +610,16 @@ config QTI_PLH
This interface is responsible for handling the communication
with RIMPS PLH such as passing tunables, enable and disable.
config MSM_PERFORMANCE_QGKI
bool "Enable QGKI features"
depends on QGKI
help
This option enables full functionality of MSM_PERFORMANCE for
QGKI flavor. This is not defined in GKI builds wherein the driver
offers minimal functionality of changing the min and max frequency
of a given cluster. The user space can request the cpu freq change
by writing cpu#:freq values
config QMP_DEBUGFS_CLIENT
bool "Debugfs Client to communicate with AOP using QMP protocol"
depends on DEBUG_FS

View File

@ -27,21 +27,20 @@
#include <linux/topology.h>
#include <linux/scmi_protocol.h>
/*
* Sched will provide the data for every 20ms window,
* will collect the data for 15 windows(300ms) and then update
* sysfs nodes with aggregated data
*/
#define POLL_INT 25
#define NODE_NAME_MAX_CHARS 16
#define QUEUE_POOL_SIZE 512 /*2^8 always keep in 2^x */
#define INST_EV 0x08 /* 0th event*/
#define CYC_EV 0x11 /* 1st event*/
#define INIT "Init"
#define CPU_CYCLE_THRESHOLD 650000
#ifdef CONFIG_MSM_PERFORMANCE_QGKI
static DEFINE_PER_CPU(bool, cpu_is_idle);
static DEFINE_PER_CPU(bool, cpu_is_hp);
static DEFINE_MUTEX(perfevent_lock);
#endif
enum event_idx {
INST_EVENT,
@ -64,6 +63,11 @@ struct cpu_status {
static DEFINE_PER_CPU(struct cpu_status, msm_perf_cpu_stats);
static DEFINE_PER_CPU(struct freq_qos_request, qos_req_min);
static DEFINE_PER_CPU(struct freq_qos_request, qos_req_max);
static cpumask_var_t limit_mask_min;
static cpumask_var_t limit_mask_max;
#ifdef CONFIG_MSM_PERFORMANCE_QGKI
static DECLARE_COMPLETION(gfx_evt_arrival);
struct gpu_data {
@ -104,12 +108,8 @@ static unsigned int aggr_top_load;
static unsigned int top_load[CLUSTER_MAX];
static unsigned int curr_cap[CLUSTER_MAX];
static bool max_cap_cpus[NR_CPUS];
static cpumask_var_t limit_mask_min;
static cpumask_var_t limit_mask_max;
static atomic_t game_status_pid;
#endif
static bool ready_for_freq_updates;
static int freq_qos_request_init(void)
@ -345,7 +345,7 @@ static const struct kernel_param_ops param_ops_cpu_max_freq = {
.get = get_cpu_max_freq,
};
module_param_cb(cpu_max_freq, &param_ops_cpu_max_freq, NULL, 0644);
#ifdef CONFIG_MSM_PERFORMANCE_QGKI
static struct kobject *events_kobj;
static ssize_t show_cpu_hotplug(struct kobject *kobj,
@ -925,6 +925,7 @@ static const struct kernel_param_ops param_ops_game_start_pid = {
.get = get_game_start_pid,
};
module_param_cb(evnt_gplaf_pid, &param_ops_game_start_pid, NULL, 0644);
#endif /* CONFIG_MSM_PERFORMANCE_QGKI */
/*******************************GFX Call************************************/
#ifdef CONFIG_QTI_PLH
@ -1119,12 +1120,12 @@ static const struct kernel_param_ops param_ops_splh_notification = {
module_param_cb(splh_notif, &param_ops_splh_notification, &splh_notif, 0644);
#endif /* CONFIG_QTI_PLH */
static int __init msm_performance_init(void)
{
#ifdef CONFIG_MSM_PERFORMANCE_QGKI
unsigned int cpu;
int ret;
#endif
if (!alloc_cpumask_var(&limit_mask_min, GFP_KERNEL))
return -ENOMEM;
@ -1132,7 +1133,7 @@ static int __init msm_performance_init(void)
free_cpumask_var(limit_mask_min);
return -ENOMEM;
}
#ifdef CONFIG_MSM_PERFORMANCE_QGKI
get_online_cpus();
for_each_possible_cpu(cpu) {
if (!cpumask_test_cpu(cpu, cpu_online_mask))
@ -1151,6 +1152,8 @@ static int __init msm_performance_init(void)
init_pmu_counter();
idle_notifier_register(&msm_perf_event_idle_nb);
#endif
return 0;
}
MODULE_LICENSE("GPL v2");
late_initcall(msm_performance_init);

View File

@ -17,7 +17,7 @@ enum evt_update_t {
MSM_PERF_GFX,
};
#ifdef CONFIG_MSM_PERFORMANCE
#if IS_ENABLED(CONFIG_MSM_PERFORMANCE) && IS_ENABLED(CONFIG_MSM_PERFORMANCE_QGKI)
void msm_perf_events_update(enum evt_update_t update_typ,
enum gfx_evt_t evt_typ, pid_t pid,
uint32_t ctx_id, uint32_t timestamp);