Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 61717f9f authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

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

parents 2f8aed21 206e048a
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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
+17 −14
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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);