diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-10-19 19:19:58 -0600 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2016-10-19 19:19:59 -0600 |
| commit | 6d8759f66e5f585d58e952461d593f963d42b982 (patch) | |
| tree | ebae1e54df32487b5d87d1bcebf20fd8ad16e6e4 /include | |
| parent | c7282bc2c16b91e059bbcf8cb4928dbc1d4b2297 (diff) | |
| parent | fb1e57936b7dabbaf8a715fd7cbc4dee27f0b03b (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.h | 15 | ||||
| -rw-r--r-- | include/linux/sched/sysctl.h | 1 | ||||
| -rw-r--r-- | include/linux/types.h | 3 | ||||
| -rw-r--r-- | include/trace/events/sched.h | 48 |
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, |
