summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-10-19 19:19:58 -0600
committerLinux Build Service Account <lnxbuild@localhost>2016-10-19 19:19:59 -0600
commit6d8759f66e5f585d58e952461d593f963d42b982 (patch)
treeebae1e54df32487b5d87d1bcebf20fd8ad16e6e4 /include
parentc7282bc2c16b91e059bbcf8cb4928dbc1d4b2297 (diff)
parentfb1e57936b7dabbaf8a715fd7cbc4dee27f0b03b (diff)
Promotion of kernel.lnx.4.4-161019.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 1064870 I151bc5d373129e3599baf6d3217b65843c0f16d0 ASoC: wcd-spi: Add memory read debug support 1075775 I804ec7556cbd18ff2d9869a03069fda1dd519a79 soc: qcom: Add better support for early random numbers 1078380 I115524d562b63a8ec76b327207919b6ac9327fe2 msm: ipa3: Do not wait for IPA DMA_TASK H/W ACK for GSI 1078894 I2bc1eb26bcc7ed4aaa381417045d08b6779679ee driver: msm_lmh_dcvs: Input correct dmac flush range arg 1078316 Ib3d13360def3ab47f121c66057c96977f5264043 icnss: Fix return value for register_driver 1070261 I6be84411e0bfe4f90570ab62c2d0a0c8539b8f34 msm: ipa: fix reference count in rm 1075775 If40cfcb96b091fa26a28047c10a902287b26f6c1 msm: implement ARCH_RANDOM 1076446 Ie254b8876524956b816267eaaed205f65641c000 ASoC: wcd9335: Fix race during codec master clock (mclk) 1071309 I1f8d596e6c930f3f6f00e24109ddbe8b121f8d6b sched: Enhance the scheduler migration load fixup featur 1079673 I46b5da53614bdac740a1c85b0b3072cae32d20f7 ARM: dts: msm: Add support for CDSP PIL on msmfalcon 1072672 Ia4893c31eefcb5ac23440c67669af936620b31c1 input: misc: pat9125: add regulator framework support 1078894 If6db015558a6a9e3db53ba7f1455808e779da908 driver: bcl_peripheral: Input correct dmac flush range a 1071309 Ib584372eb539706da4319973314e54dae04e5934 sched: Add per CPU load tracking for each task 1073937 I2814cf7191c4410ca7d869b033fc68981dc4de70 ARM: dts: msm: Move 720p120fps encode to SVS on msmcobal 1066261 I58c13a97dd35b3a439ea1af25bc93182e38e29f0 msm: camera: isp: Configure stats framedrop period corre 1076441 Ia893786de4689e07f8d99d1ba3d8f1d6efcc7686 icnss: Switch to CXO before XO disable 1075775 I00b564a2c3172229a44339c061fa380c17fe7d8e init: Move stack canary initialization after setup_arch 1078743 I61b308dce7e92b0e28033750885eac4a003dc01a Revert "soc: qcom: Listen to SUBSYS_AFTER_SHUTDOWN notif 1078307 I27ec29c3a6c5f3aac31705e60e1b8cf3270322a1 smb-lib: qpnp-smb2: cleanup parallel charging code 1078894 Ib0e9690fc158a76dcebbd5ae45f67aaeca016a48 driver: msm_thermal: Input correct dmac flush range argu 1075775 Ia848af5bafe2337718fffdd87cd6436eb0133ece qcom: Update early random APIs to scmv8 1071309 Ie585a11ed774b929910d04c41471db3a2a102ec5 sched: Add multiple load reporting policies for cpu freq 1072739 Ifc6102d367fb0ca9fffbd50a6077dccd779e9a6c serial: msm_serial_hs: Move HS UART pins to known state 1072607 I622533807c7e4653a7aa3c51bf4e4f0db1a7a5ff ARM: dts: msm: Enable RPM clock support for MSMfalcon/Tr 1075775 I01dc0cc0d0fc734dbf1166d88d97bcc5102788bb defconfig: msmcortex: Enable early random driver 1070087 I271cf0ad12652421ab3ae8770714ccb78c043efa ASoC: wcd-spi: fix the maximum transfer unit setting 1074535 Ie153ae9cc00a72287b10623d63f29c08a1154cb9 usb: gadget: f_qc_rndis: Change function name from qcrnd 1078894 Iefcf85eaa5ea5542888269b7506b8f6e0e861243 driver: lmh_lite: Input correct dmac flush range argumen 1071309 I004dba474f41590db7d3f40d9deafe86e71359ac sched: Add the mechanics of top task tracking for freque 1071309 Ibafaf66eed756b0328704dfaa89c17ab0d84e359 sched: Optimize the next top task search logic upon task 1067296 Ibdec14a3e835df19876658d0ad7600da0200603b ARM: dts: msm: add the cma region for venus on msmtriton 1079183 I4bdced9942e6524e8cc21410532fa7231049454f media: dvb-core: dvb dmxdev filter callback function cha 1073679 I786d0774589ae64b298754286be28d67d394a66d qpnp-smb2: handle DC insertion Change-Id: If45ad0023b573e868316e64a6d14b465addc51d6 CRs-Fixed: 1071309, 1064870, 1078894, 1078316, 1067296, 1076446, 1066261, 1072607, 1070261, 1070087, 1079673, 1072672, 1073679, 1074535, 1079183, 1076441, 1078307, 1078743, 1078380, 1072739, 1073937, 1075775
Diffstat (limited to 'include')
-rw-r--r--include/linux/sched.h15
-rw-r--r--include/linux/sched/sysctl.h1
-rw-r--r--include/linux/types.h3
-rw-r--r--include/trace/events/sched.h48
4 files changed, 56 insertions, 11 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index a395d8a9ff73..06acefeffd4c 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -356,7 +356,7 @@ extern int lockdep_tasklist_lock_is_held(void);
extern void sched_init(void);
extern void sched_init_smp(void);
extern asmlinkage void schedule_tail(struct task_struct *prev);
-extern void init_idle(struct task_struct *idle, int cpu);
+extern void init_idle(struct task_struct *idle, int cpu, bool hotplug);
extern void init_idle_bootup_task(struct task_struct *idle);
extern cpumask_var_t cpu_isolated_map;
@@ -1332,11 +1332,15 @@ struct ravg {
* sysctl_sched_ravg_hist_size windows. 'demand' could drive frequency
* demand for tasks.
*
- * 'curr_window' represents task's contribution to cpu busy time
- * statistics (rq->curr_runnable_sum) in current window
+ * 'curr_window_cpu' represents task's contribution to cpu busy time on
+ * various CPUs in the current window
*
- * 'prev_window' represents task's contribution to cpu busy time
- * statistics (rq->prev_runnable_sum) in previous window
+ * 'prev_window_cpu' represents task's contribution to cpu busy time on
+ * various CPUs in the previous window
+ *
+ * 'curr_window' represents the sum of all entries in curr_window_cpu
+ *
+ * 'prev_window' represents the sum of all entries in prev_window_cpu
*
* 'pred_demand' represents task's current predicted cpu busy time
*
@@ -1346,6 +1350,7 @@ struct ravg {
u64 mark_start;
u32 sum, demand;
u32 sum_history[RAVG_HIST_SIZE_MAX];
+ u32 *curr_window_cpu, *prev_window_cpu;
u32 curr_window, prev_window;
u16 active_windows;
u32 pred_demand;
diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
index 9fe71c774543..6848454c5447 100644
--- a/include/linux/sched/sysctl.h
+++ b/include/linux/sched/sysctl.h
@@ -44,6 +44,7 @@ extern unsigned int sysctl_sched_wake_to_idle;
#ifdef CONFIG_SCHED_HMP
extern int sysctl_sched_freq_inc_notify;
extern int sysctl_sched_freq_dec_notify;
+extern unsigned int sysctl_sched_freq_reporting_policy;
extern unsigned int sysctl_sched_window_stats_policy;
extern unsigned int sysctl_sched_ravg_hist_size;
extern unsigned int sysctl_sched_cpu_high_irqload;
diff --git a/include/linux/types.h b/include/linux/types.h
index 70dd3dfde631..9f2d2f46b459 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -9,6 +9,9 @@
#define DECLARE_BITMAP(name,bits) \
unsigned long name[BITS_TO_LONGS(bits)]
+#define DECLARE_BITMAP_ARRAY(name,nr,bits) \
+ unsigned long name[nr][BITS_TO_LONGS(bits)]
+
typedef __u32 __kernel_dev_t;
typedef __kernel_fd_set fd_set;
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h
index daf69b7df534..cd15ae7b8b0c 100644
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -260,6 +260,30 @@ TRACE_EVENT(sched_set_boost,
TP_printk("ref_count=%d", __entry->ref_count)
);
+#if defined(CREATE_TRACE_POINTS) && defined(CONFIG_SCHED_HMP)
+static inline void __window_data(u32 *dst, u32 *src)
+{
+ if (src)
+ memcpy(dst, src, nr_cpu_ids * sizeof(u32));
+ else
+ memset(dst, 0, nr_cpu_ids * sizeof(u32));
+}
+
+struct trace_seq;
+const char *__window_print(struct trace_seq *p, const u32 *buf, int buf_len)
+{
+ int i;
+ const char *ret = p->buffer + seq_buf_used(&p->seq);
+
+ for (i = 0; i < buf_len; i++)
+ trace_seq_printf(p, "%u ", buf[i]);
+
+ trace_seq_putc(p, 0);
+
+ return ret;
+}
+#endif
+
TRACE_EVENT(sched_update_task_ravg,
TP_PROTO(struct task_struct *p, struct rq *rq, enum task_event evt,
@@ -288,13 +312,17 @@ TRACE_EVENT(sched_update_task_ravg,
__field( u64, rq_ps )
__field( u64, grp_cs )
__field( u64, grp_ps )
- __field( u64, grp_nt_cs )
- __field( u64, grp_nt_ps )
+ __field( u64, grp_nt_cs )
+ __field( u64, grp_nt_ps )
__field( u32, curr_window )
__field( u32, prev_window )
+ __dynamic_array(u32, curr_sum, nr_cpu_ids )
+ __dynamic_array(u32, prev_sum, nr_cpu_ids )
__field( u64, nt_cs )
__field( u64, nt_ps )
__field( u32, active_windows )
+ __field( u8, curr_top )
+ __field( u8, prev_top )
),
TP_fast_assign(
@@ -321,22 +349,30 @@ TRACE_EVENT(sched_update_task_ravg,
__entry->grp_nt_ps = cpu_time ? cpu_time->nt_prev_runnable_sum : 0;
__entry->curr_window = p->ravg.curr_window;
__entry->prev_window = p->ravg.prev_window;
+ __window_data(__get_dynamic_array(curr_sum), p->ravg.curr_window_cpu);
+ __window_data(__get_dynamic_array(prev_sum), p->ravg.prev_window_cpu);
__entry->nt_cs = rq->nt_curr_runnable_sum;
__entry->nt_ps = rq->nt_prev_runnable_sum;
__entry->active_windows = p->ravg.active_windows;
+ __entry->curr_top = rq->curr_top;
+ __entry->prev_top = rq->prev_top;
),
- TP_printk("wc %llu ws %llu delta %llu event %s cpu %d cur_freq %u cur_pid %d task %d (%s) ms %llu delta %llu demand %u sum %u irqtime %llu pred_demand %u rq_cs %llu rq_ps %llu cur_window %u prev_window %u nt_cs %llu nt_ps %llu active_wins %u grp_cs %lld grp_ps %lld, grp_nt_cs %llu, grp_nt_ps: %llu"
- , __entry->wallclock, __entry->win_start, __entry->delta,
+ TP_printk("wc %llu ws %llu delta %llu event %s cpu %d cur_freq %u cur_pid %d task %d (%s) ms %llu delta %llu demand %u sum %u irqtime %llu pred_demand %u rq_cs %llu rq_ps %llu cur_window %u (%s) prev_window %u (%s) nt_cs %llu nt_ps %llu active_wins %u grp_cs %lld grp_ps %lld, grp_nt_cs %llu, grp_nt_ps: %llu curr_top %u prev_top %u",
+ __entry->wallclock, __entry->win_start, __entry->delta,
task_event_names[__entry->evt], __entry->cpu,
__entry->cur_freq, __entry->cur_pid,
__entry->pid, __entry->comm, __entry->mark_start,
__entry->delta_m, __entry->demand,
__entry->sum, __entry->irqtime, __entry->pred_demand,
__entry->rq_cs, __entry->rq_ps, __entry->curr_window,
- __entry->prev_window, __entry->nt_cs, __entry->nt_ps,
+ __window_print(p, __get_dynamic_array(curr_sum), nr_cpu_ids),
+ __entry->prev_window,
+ __window_print(p, __get_dynamic_array(prev_sum), nr_cpu_ids),
+ __entry->nt_cs, __entry->nt_ps,
__entry->active_windows, __entry->grp_cs,
- __entry->grp_ps, __entry->grp_nt_cs, __entry->grp_nt_ps)
+ __entry->grp_ps, __entry->grp_nt_cs, __entry->grp_nt_ps,
+ __entry->curr_top, __entry->prev_top)
);
TRACE_EVENT(sched_get_task_cpu_cycles,