Snap for 7842204 from 2c9120edef to android-mainline-keystone-qcom-release
Change-Id: I9dfd59575b1ace17798d7b6cb6e94e711059fec1
This commit is contained in:
6
Makefile
6
Makefile
@@ -952,7 +952,13 @@ KBUILD_LDFLAGS += --thinlto-cache-dir=$(extmod_prefix).thinlto-cache
|
||||
else
|
||||
CC_FLAGS_LTO := -flto
|
||||
endif
|
||||
|
||||
ifeq ($(SRCARCH),x86)
|
||||
# Workaround for compiler / linker bug
|
||||
CC_FLAGS_LTO += -fvisibility=hidden
|
||||
else
|
||||
CC_FLAGS_LTO += -fvisibility=default
|
||||
endif
|
||||
|
||||
# Limit inlining across translation units to reduce binary size
|
||||
KBUILD_LDFLAGS += -mllvm -import-instr-limit=5
|
||||
|
||||
@@ -6195,5 +6195,6 @@ device_initcall(binder_init);
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "binder_trace.h"
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(binder_transaction_received);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
||||
@@ -166,3 +166,11 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpufreq_transition);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_balance_anon_file_reclaim);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_show_max_freq);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_task);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_after_enqueue_task);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_after_dequeue_task);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_entity);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_entity);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_entity_tick);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_task_fair);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_task_fair);
|
||||
|
||||
@@ -160,6 +160,7 @@ void topology_set_cpu_scale(unsigned int cpu, unsigned long capacity)
|
||||
}
|
||||
|
||||
DEFINE_PER_CPU(unsigned long, thermal_pressure);
|
||||
EXPORT_PER_CPU_SYMBOL_GPL(thermal_pressure);
|
||||
|
||||
void topology_set_thermal_pressure(const struct cpumask *cpus,
|
||||
unsigned long th_pressure)
|
||||
|
||||
@@ -2591,6 +2591,7 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy,
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(cpu_frequency_limits);
|
||||
|
||||
/**
|
||||
* cpufreq_update_policy - Re-evaluate an existing cpufreq policy.
|
||||
|
||||
@@ -234,16 +234,22 @@ DECLARE_HOOK(android_vh_em_cpu_energy,
|
||||
DECLARE_HOOK(android_vh_build_sched_domains,
|
||||
TP_PROTO(bool has_asym),
|
||||
TP_ARGS(has_asym));
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_tick,
|
||||
TP_PROTO(struct task_struct *p, unsigned long *ideal_runtime, bool *skip_preempt),
|
||||
TP_ARGS(p, ideal_runtime, skip_preempt), 1);
|
||||
TP_PROTO(struct task_struct *p, unsigned long *ideal_runtime, bool *skip_preempt,
|
||||
unsigned long delta_exec, struct cfs_rq *cfs_rq, struct sched_entity *curr,
|
||||
unsigned int granularity),
|
||||
TP_ARGS(p, ideal_runtime, skip_preempt, delta_exec, cfs_rq, curr, granularity), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_wakeup_ignore,
|
||||
TP_PROTO(struct task_struct *p, bool *ignore),
|
||||
TP_ARGS(p, ignore), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_replace_next_task_fair,
|
||||
TP_PROTO(struct rq *rq, struct task_struct **p, struct sched_entity **se,
|
||||
bool *repick, bool simple),
|
||||
TP_ARGS(rq, p, se, repick, simple), 1);
|
||||
TP_PROTO(struct rq *rq, struct task_struct **p, struct sched_entity **se, bool *repick,
|
||||
bool simple, struct task_struct *prev),
|
||||
TP_ARGS(rq, p, se, repick, simple, prev), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_sched_balance_rt,
|
||||
TP_PROTO(struct rq *rq, struct task_struct *p, int *done),
|
||||
TP_ARGS(rq, p, done), 1);
|
||||
@@ -255,8 +261,46 @@ DECLARE_RESTRICTED_HOOK(android_rvh_pick_next_entity,
|
||||
TP_ARGS(cfs_rq, curr, se), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_wakeup,
|
||||
TP_PROTO(struct rq *rq, struct task_struct *p, bool *preempt, bool *nopreempt),
|
||||
TP_ARGS(rq, p, preempt, nopreempt), 1);
|
||||
TP_PROTO(struct rq *rq, struct task_struct *p, bool *preempt, bool *nopreempt,
|
||||
int wake_flags, struct sched_entity *se, struct sched_entity *pse,
|
||||
int next_buddy_marked, unsigned int granularity),
|
||||
TP_ARGS(rq, p, preempt, nopreempt, wake_flags, se, pse, next_buddy_marked,
|
||||
granularity), 1);
|
||||
|
||||
DECLARE_HOOK(android_vh_free_task,
|
||||
TP_PROTO(struct task_struct *p),
|
||||
TP_ARGS(p));
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_after_enqueue_task,
|
||||
TP_PROTO(struct rq *rq, struct task_struct *p),
|
||||
TP_ARGS(rq, p), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_after_dequeue_task,
|
||||
TP_PROTO(struct rq *rq, struct task_struct *p),
|
||||
TP_ARGS(rq, p), 1);
|
||||
|
||||
struct cfs_rq;
|
||||
struct sched_entity;
|
||||
struct rq_flags;
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_enqueue_entity,
|
||||
TP_PROTO(struct cfs_rq *cfs, struct sched_entity *se),
|
||||
TP_ARGS(cfs, se), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_entity,
|
||||
TP_PROTO(struct cfs_rq *cfs, struct sched_entity *se),
|
||||
TP_ARGS(cfs, se), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_entity_tick,
|
||||
TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *se),
|
||||
TP_ARGS(cfs_rq, se), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_enqueue_task_fair,
|
||||
TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
|
||||
TP_ARGS(rq, p, flags), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_task_fair,
|
||||
TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
|
||||
TP_ARGS(rq, p, flags), 1);
|
||||
|
||||
#endif /* _TRACE_HOOK_SCHED_H */
|
||||
/* This part must be outside protection */
|
||||
|
||||
@@ -110,6 +110,8 @@
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/task.h>
|
||||
|
||||
#undef CREATE_TRACE_POINTS
|
||||
#include <trace/hooks/sched.h>
|
||||
/*
|
||||
* Minimum number of threads to boot the kernel
|
||||
*/
|
||||
@@ -454,6 +456,7 @@ void free_task(struct task_struct *tsk)
|
||||
release_user_cpus_ptr(tsk);
|
||||
scs_release(tsk);
|
||||
|
||||
trace_android_vh_free_task(tsk);
|
||||
#ifndef CONFIG_THREAD_INFO_IN_TASK
|
||||
/*
|
||||
* The task is finally done with both the stack and thread_info,
|
||||
|
||||
@@ -3281,6 +3281,7 @@ int _printk_deferred(const char *fmt, ...)
|
||||
|
||||
return r;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(_printk_deferred);
|
||||
|
||||
/*
|
||||
* printk rate limiting, lifted from the networking subsystem.
|
||||
|
||||
@@ -62,6 +62,7 @@ EXPORT_SYMBOL_GPL(runqueues);
|
||||
const_debug unsigned int sysctl_sched_features =
|
||||
#include "features.h"
|
||||
0;
|
||||
EXPORT_SYMBOL_GPL(sysctl_sched_features);
|
||||
#undef SCHED_FEAT
|
||||
|
||||
/*
|
||||
@@ -991,6 +992,7 @@ void resched_curr(struct rq *rq)
|
||||
else
|
||||
trace_sched_wake_idle_without_ipi(cpu);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(resched_curr);
|
||||
|
||||
void resched_cpu(int cpu)
|
||||
{
|
||||
@@ -1987,6 +1989,7 @@ static inline void enqueue_task(struct rq *rq, struct task_struct *p, int flags)
|
||||
uclamp_rq_inc(rq, p);
|
||||
trace_android_rvh_enqueue_task(rq, p, flags);
|
||||
p->sched_class->enqueue_task(rq, p, flags);
|
||||
trace_android_rvh_after_enqueue_task(rq, p);
|
||||
|
||||
if (sched_core_enabled(rq))
|
||||
sched_core_enqueue(rq, p);
|
||||
@@ -2008,6 +2011,7 @@ static inline void dequeue_task(struct rq *rq, struct task_struct *p, int flags)
|
||||
uclamp_rq_dec(rq, p);
|
||||
trace_android_rvh_dequeue_task(rq, p, flags);
|
||||
p->sched_class->dequeue_task(rq, p, flags);
|
||||
trace_android_rvh_after_dequeue_task(rq, p);
|
||||
}
|
||||
|
||||
void activate_task(struct rq *rq, struct task_struct *p, int flags)
|
||||
@@ -4051,6 +4055,9 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
|
||||
if (READ_ONCE(p->on_rq) && ttwu_runnable(p, wake_flags))
|
||||
goto unlock;
|
||||
|
||||
if (READ_ONCE(p->__state) & TASK_UNINTERRUPTIBLE)
|
||||
trace_sched_blocked_reason(p);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
/*
|
||||
* Ensure we load p->on_cpu _after_ p->on_rq, otherwise it would be
|
||||
|
||||
@@ -48,9 +48,10 @@ static unsigned long nsec_low(unsigned long long nsec)
|
||||
#define SCHED_FEAT(name, enabled) \
|
||||
#name ,
|
||||
|
||||
static const char * const sched_feat_names[] = {
|
||||
const char * const sched_feat_names[] = {
|
||||
#include "features.h"
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(sched_feat_names);
|
||||
|
||||
#undef SCHED_FEAT
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
* (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
|
||||
*/
|
||||
unsigned int sysctl_sched_latency = 6000000ULL;
|
||||
EXPORT_SYMBOL_GPL(sysctl_sched_latency);
|
||||
static unsigned int normalized_sysctl_sched_latency = 6000000ULL;
|
||||
|
||||
/*
|
||||
@@ -579,11 +580,13 @@ static inline bool __entity_less(struct rb_node *a, const struct rb_node *b)
|
||||
*/
|
||||
static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
|
||||
{
|
||||
trace_android_rvh_enqueue_entity(cfs_rq, se);
|
||||
rb_add_cached(&se->run_node, &cfs_rq->tasks_timeline, __entity_less);
|
||||
}
|
||||
|
||||
static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
|
||||
{
|
||||
trace_android_rvh_dequeue_entity(cfs_rq, se);
|
||||
rb_erase_cached(&se->run_node, &cfs_rq->tasks_timeline);
|
||||
}
|
||||
|
||||
@@ -975,7 +978,6 @@ update_stats_enqueue_sleeper(struct cfs_rq *cfs_rq, struct sched_entity *se)
|
||||
}
|
||||
|
||||
trace_sched_stat_blocked(tsk, delta);
|
||||
trace_sched_blocked_reason(tsk);
|
||||
|
||||
/*
|
||||
* Blocking time is in units of nanosecs, so shift by
|
||||
@@ -4455,7 +4457,8 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
|
||||
|
||||
ideal_runtime = sched_slice(cfs_rq, curr);
|
||||
delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime;
|
||||
trace_android_rvh_check_preempt_tick(current, &ideal_runtime, &skip_preempt);
|
||||
trace_android_rvh_check_preempt_tick(current, &ideal_runtime, &skip_preempt,
|
||||
delta_exec, cfs_rq, curr, sysctl_sched_min_granularity);
|
||||
if (skip_preempt)
|
||||
return;
|
||||
if (delta_exec > ideal_runtime) {
|
||||
@@ -4486,8 +4489,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
|
||||
resched_curr(rq_of(cfs_rq));
|
||||
}
|
||||
|
||||
static void
|
||||
set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
|
||||
void set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
|
||||
{
|
||||
clear_buddies(cfs_rq, se);
|
||||
|
||||
@@ -4520,6 +4522,7 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
|
||||
|
||||
se->prev_sum_exec_runtime = se->sum_exec_runtime;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(set_next_entity);
|
||||
|
||||
static int
|
||||
wakeup_preempt_entity(struct sched_entity *curr, struct sched_entity *se);
|
||||
@@ -4644,6 +4647,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued)
|
||||
|
||||
if (cfs_rq->nr_running > 1)
|
||||
check_preempt_tick(cfs_rq, curr);
|
||||
trace_android_rvh_entity_tick(cfs_rq, curr);
|
||||
}
|
||||
|
||||
|
||||
@@ -5651,6 +5655,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
|
||||
flags = ENQUEUE_WAKEUP;
|
||||
}
|
||||
|
||||
trace_android_rvh_enqueue_task_fair(rq, p, flags);
|
||||
for_each_sched_entity(se) {
|
||||
cfs_rq = cfs_rq_of(se);
|
||||
|
||||
@@ -5763,6 +5768,7 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
|
||||
flags |= DEQUEUE_SLEEP;
|
||||
}
|
||||
|
||||
trace_android_rvh_dequeue_task_fair(rq, p, flags);
|
||||
for_each_sched_entity(se) {
|
||||
cfs_rq = cfs_rq_of(se);
|
||||
|
||||
@@ -7281,7 +7287,8 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
|
||||
return;
|
||||
|
||||
update_curr(cfs_rq_of(se));
|
||||
trace_android_rvh_check_preempt_wakeup(rq, p, &preempt, &ignore);
|
||||
trace_android_rvh_check_preempt_wakeup(rq, p, &preempt, &ignore,
|
||||
wake_flags, se, pse, next_buddy_marked, sysctl_sched_wakeup_granularity);
|
||||
if (preempt)
|
||||
goto preempt;
|
||||
if (ignore)
|
||||
@@ -7411,8 +7418,7 @@ again:
|
||||
} while (cfs_rq);
|
||||
|
||||
p = task_of(se);
|
||||
trace_android_rvh_replace_next_task_fair(rq, &p, &se, &repick, false);
|
||||
|
||||
trace_android_rvh_replace_next_task_fair(rq, &p, &se, &repick, false, prev);
|
||||
/*
|
||||
* Since we haven't yet done put_prev_entity and if the selected task
|
||||
* is a different task than we started out with, try and touch the
|
||||
@@ -7445,7 +7451,7 @@ simple:
|
||||
if (prev)
|
||||
put_prev_task(rq, prev);
|
||||
|
||||
trace_android_rvh_replace_next_task_fair(rq, &p, &se, &repick, true);
|
||||
trace_android_rvh_replace_next_task_fair(rq, &p, &se, &repick, true, prev);
|
||||
if (repick)
|
||||
goto done;
|
||||
|
||||
@@ -7690,7 +7696,8 @@ static bool yield_to_task_fair(struct rq *rq, struct task_struct *p)
|
||||
* rewrite all of this once again.]
|
||||
*/
|
||||
|
||||
static unsigned long __read_mostly max_load_balance_interval = HZ/10;
|
||||
unsigned long __read_mostly max_load_balance_interval = HZ/10;
|
||||
EXPORT_SYMBOL_GPL(max_load_balance_interval);
|
||||
|
||||
enum fbq_type { regular, remote, all };
|
||||
|
||||
|
||||
@@ -1985,6 +1985,8 @@ static __always_inline bool static_branch_##name(struct static_key *key) \
|
||||
#undef SCHED_FEAT
|
||||
|
||||
extern struct static_key sched_feat_keys[__SCHED_FEAT_NR];
|
||||
extern const char * const sched_feat_names[__SCHED_FEAT_NR];
|
||||
|
||||
#define sched_feat(x) (static_branch_##x(&sched_feat_keys[__SCHED_FEAT_##x]))
|
||||
|
||||
#else /* !CONFIG_JUMP_LABEL */
|
||||
@@ -2286,6 +2288,7 @@ static inline struct task_struct *get_push_task(struct rq *rq)
|
||||
|
||||
extern int push_cpu_stop(void *arg);
|
||||
|
||||
extern unsigned long __read_mostly max_load_balance_interval;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_IDLE
|
||||
|
||||
Reference in New Issue
Block a user