summaryrefslogtreecommitdiff
path: root/include/trace
AgeCommit message (Collapse)Author
2016-03-23skb: Adding trace event for gso.Ravinder Konka
This patch adds trace events to help with debug for gso feature by identifying the packets(and their lenghts) that are using the segmentation offload feature. Change-Id: Ibfe1194cc63e74c75047040b0c540713d539992e Acked-by: Ashwanth Goli <ashwanth@qti.qualcomm.com> Signed-off-by: Ravinder Konka <rkonka@codeaurora.org>
2016-03-23PM / devfreq : Introduce a memory-latency governorRohit Gupta
Use performance counters to detect the memory latency sensitivity of CPU workloads and vote for higher DDR frequency if required. Change-Id: Ie77a3523bc5713fc0315bd0abc3913f485a96e0e Signed-off-by: Rohit Gupta <rohgup@codeaurora.org> Suggested-by: Saravana Kannan <skannan@codeaurora.org> [junjiew@codeaurora.org: dropped changes in arch/arm64/Kconfig] Signed-off-by: Junjie Wu <junjiew@codeaurora.org>
2016-03-23PM / devfreq: governor_cache_hwmon: Add mrps and freq vote tracesJunjie Wu
Replace measured mrps and frequency vote debug prints with trace events. Change-Id: I78370b068e3819a57635cbabaf5cdd053ebabce4 Signed-off-by: Junjie Wu <junjiew@codeaurora.org>
2016-03-23tracing: power: Add trace events for bw_hwmonSaravana Kannan
The bw_hwmon_meas trace event is to log measurement details and the bw_hwmon_update trace event is to log the final decision. Change-Id: I839ace50b1f1686227bcbf7d38a75f89092d26b1 Signed-off-by: Saravana Kannan <skannan@codeaurora.org> [junjiew@codeaurora.org: resolved trivial conflicts] Signed-off-by: Junjie Wu <junjiew@codeaurora.org>
2016-03-23cpufreq: interactive: Ramp up to policy->max for heavy new taskJunjie Wu
New tasks don't have sufficient history to predict its behavior, even with scheduler's help. Ramping up conservatively for a heavy task could hurt performance when it's needed. Therefore, separate out new tasks' load with scheduler's help and ramp up more aggressively if new tasks make up a significant portion of total load. Change-Id: Ia95c956369edb9b7a0768f3bdcb0b2fab367fdf7 Suggested-by: Saravana Kannan <skannan@codeaurora.org> Signed-off-by: Junjie Wu <junjiew@codeaurora.org>
2016-03-23cpufreq: interactive: Add cpuload trace eventsJunjie Wu
With per-cluster timer implementation, only max load across CPUs in cluster is traced in timer function. Add cpufreq_interactive_cpuload trace to provide per-cpu load information. Change-Id: Icea9f2574332a4bc472b14193e77d76100a896ed Signed-off-by: Junjie Wu <junjiew@codeaurora.org>
2016-03-23cpufreq: interactive: Re-evaluate immediately in load change callbackJunjie Wu
Previously, there was a limitation in load change callback that it can't attempt to wake up a task. Therefore the best we can do is to schedule timer at current jiffy. The timer function will only be executed at next timer tick. This could take up to 10ms. Now that this limitation is removed, re-evaluate load immediately upon receiving this callback. Change-Id: Iab3de4705b9aae96054655b1541e32fb040f7e60 Signed-off-by: Junjie Wu <junjiew@codeaurora.org>
2016-03-23trace: power: add cpu_frequency_switch_{start, end}Matt Wagantall
It is sometimes useful to profile how long CPU frequency switches take, since they often involve variable overhead (PLL lock times, voltage increase time, etc.). Add additional traces to to make this possible. Since the overhead involved may differ based on the frequencies being switched between, record both the start and the end frequencies as part of the trace. Change-Id: I2de743fc357dad3590fd4980f65f38f6073d426e Signed-off-by: Matt Wagantall <mattw@codeaurora.org> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> [abhimany: resolve trivial merge conflicts] Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
2016-03-23sched: select task's prev_cpu as the best CPU when it was chosen recentlyJoonwoo Park
Select given task's prev_cpu when the task slept for short period to reduce latency of task placement and migrations. A new tunable /proc/sys/kernel/sched_select_prev_cpu_us introduced to determine whether tasks are eligible to go through fast path. CRs-fixed: 947467 Change-Id: Ia507665b91f4e9f0e6ee1448d8df8994ead9739a [joonwoop@codeaurora.org: fixed conflict in include/linux/sched.h, include/linux/sched/sysctl.h, kernel/sched/core.c and kernel/sysctl.c] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: use ktime instead of sched_clock for load trackingJoonwoo Park
At present, HMP scheduler uses sched_clock to setup window boundary to be aligned with timer interrupt to ensure timer interrupt fires after window rollover. However this alignment won't last long since the timer interrupt rearms next timer based on time measured by ktime which isn't coupled with sched_clock. Convert sched_clock to ktime to avoid wallclock discrepancy between scheduler and timer so that we can ensure scheduler's window boundary is always aligned with timer. CRs-fixed: 933330 Change-Id: I4108819a4382f725b3ce6075eb46aab0cf670b7e [joonwoop@codeaurora.org: fixed minor conflict in include/linux/tick.h and kernel/sched/core.c. omitted fixes for kernel/sched/qhmp_core.c] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: Optimize scheduler trace events to reduce trace buffer usageSyed Rameez Mustafa
Scheduler ftrace events currently generate a lot of data when turned on. The excessive log messages often end up overflowing trace buffers for long use cases or crowding out other events. Optimize scheduler events so that the log spew is less and more manageable. To that end change the variable type for some event fields; introduce variants of sched_cpu_load that can be turned on/off for separate code paths and remove unused fields from various events. Change-Id: I2b313542b39ad5e09a01ad1303b5dfe2c4883b8a Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org> [joonwoop@codeaurora.org: fixed conflict in rt.c due to CONFIG_SCHED_QHMP.] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: Notify cpufreq governor early about potential big tasksSyed Rameez Mustafa
Tasks that are on the runqueue continuously for a certain amount of time have the potential to be big tasks at the end of the window in which they are runnable. In such scenarios ramping the CPU frequency early can boost performance rather than waiting till the end of a window for the governor to query load. Notify the governor early at every tick when a task has been observed to execute beyond some percentage of the tick period. The threshold beyond which a task is eligible for early detection can be changed via the tunable sched_early_detection_duration. The feature itself is enabled only when scheduler boost is in effect. Change-Id: I528b72bbc79a55b4593d1b8ab45450411c6d70f3 Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org> [joonwoop@codeaurora.org: fixed conflict in scheduler_tick() in kernel/sched/core.c. fixed minor conflicts in include/linux/sched.h, include/linux/sched/sysctl.h and kernel/sysctl.c due to CONFIG_SCHED_QHMP.] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: update sched_task_load trace eventJoonwoo Park
Add best_cpu and latency field to sched_task_load trace event. The latency field represents combined latency of update_task_ravg(), update_task_ravg() and select_best_cpu() which is useful to analyze latency overhead of HMP scheduler. Change-Id: Ie6d777c918d0414d361d758490e3cd7d509f5837 Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: account new task load so that governor can apply different policyJoonwoo Park
Account amount of load contributed by new tasks within CPU load so that governor can apply different policy when CPU is loaded by new tasks. To be able to distinguish new task load a new tunable sched_new_task_windows also introduced. The tunable defines tasks as new when the tasks are have been active less than configured windows. Change-Id: I2e2e62e4103882f7362154b792ab978b181b9f59 Suggested-by: Saravana Kannan <skannan@codeaurora.org> [joonwoop@codeaurora.org: ommited changes for drivers/cpufreq/cpufreq_interactive.c. cpufreq changes needs to be applied separately later. fixed conflict in include/linux/sched.h and include/linux/sched/sysctl.h. omitted changes for qhmp_core.c] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: Add tunables for static cpu and cluster costOlav Haugan
Add per-cpu tunable to set the extra cost to use a CPU that is idle. Add the same for a cluster. Change-Id: I4aa53f3c42c963df7abc7480980f747f0413d389 Signed-off-by: Olav Haugan <ohaugan@codeaurora.org> [joonwoop@codeaurora.org: omitted changes for qhmp*.[c,h] stripped out CONFIG_SCHED_QHMP in drivers/base/cpu.c and include/linux/sched.h] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: Update the wakeup placement logic for fair and rt tasksSyed Rameez Mustafa
For the fair sched class, update the select_best_cpu() policy to do power based placement. The hope is to minimize the voltage at which the CPU runs. While RT tasks already do power based placement, their placement preference has to now take into account the power cost of all tasks on a given CPU. Also remove the check for sched_boost since sched_boost no longer intends to elevate all tasks to the highest capacity cluster. Change-Id: Ic6a7625c97d567254d93b94cec3174a91727cb87 Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
2016-03-23sched: remove the notion of small tasks and small task packingSyed Rameez Mustafa
Task packing will now be determined solely on the basis of the power cost of task placement. All tasks are eligible for packing. Remove the notion of "small" tasks from the scheduler. Change-Id: I72d52d04b2677c6a8d0bc6aa7d50ff0f1a4f5ebb Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
2016-03-23sched: Keep track of average nr_big_tasksSrivatsa Vaddagiri
Extend sched_get_nr_running_avg() API to return average nr_big_tasks, in addition to average nr_running and average nr_io_wait tasks. Also add a new trace point to record values returned by sched_get_nr_running_avg() API. Change-Id: Id3591e6d04da8db484b4d1cb9d95dba075f5ab9a Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org> [rameezmustafa@codeaurora.org: Resolve trivial merge conflicts] Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
2016-03-23sched: Consolidate hmp stats into their own structSrivatsa Vaddagiri
Key hmp stats (nr_big_tasks, nr_small_tasks and cumulative_runnable_average) are currently maintained per-cpu in 'struct rq'. Merge those stats in their own structure (struct hmp_sched_stats) and modify impacted functions to deal with the newly introduced structure. This cleanup is required for a subsequent patch which fixes various issues with use of CFS_BANDWIDTH feature in HMP scheduler. Change-Id: Ieffc10a3b82a102f561331bc385d042c15a33998 Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org> [rameezmustafa@codeaurora.org: Port to msm-3.18] Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org> [joonwoop@codeaurora.org: fixed conflict in __update_load_avg().] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: Add temperature to cpu_load trace pointOlav Haugan
Add the current CPU temperature to the sched_cpu_load trace point. This will allow us to track the CPU temperature. CRs-Fixed: 764788 Change-Id: Ib2e3559bbbe3fe07a6b7c8115db606828bc36254 Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
2016-03-23sched: extend sched_task_load tracepoint to indicate prefer_idleSyed Rameez Mustafa
Prefer idle determines whether the scheduler prefers an idle CPU over a busy CPU or not to wake up a task on. Knowing the correct value of this tunable is essential in understanding placement decisions made in select_best_cpu(). Change-Id: I955d7577061abccb65d01f560e1911d9db70298a Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
2016-03-23sched: extend sched_task_load tracepoint to indicate sync wakeupSteve Muckle
Sync wakeups provide a hint to the scheduler about upcoming task activity. Knowing which wakeups are sync wakeups from logs will assist in workload analysis. Change-Id: I6ffe73f2337e56b8234d4097069d5d70ab045eda Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
2016-03-23sched: trace: extend sched_cpu_load to print irqloadSteve Muckle
The irqload is used in determining whether CPUs are mostly idle so it is useful to know this value while viewing scheduler traces. Change-Id: Icbb74fc1285be878f254ae54886bdb161b14a270 Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
2016-03-23sched: update governor notification logicSrivatsa Vaddagiri
Make criteria for notifying governor to be per-cpu. Governor is notified of any large change in cpu's busy time statistics (rq->prev_runnable_sum) since the last reported value. Change-Id: I727354d994d909b166d093b94d3dade7c7dddc0d Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
2016-03-23sched: window-stats: Enhance cpu busy time accountingSrivatsa Vaddagiri
rq->curr/prev_runnable_sum counters represent cpu demand from various tasks that have run on a cpu. Any task that runs on a cpu will have a representation in rq->curr_runnable_sum. Their partial_demand value will be included in rq->curr_runnable_sum. Since partial_demand is derived from historical load samples for a task, rq->curr_runnable_sum could represent "inflated/un-realistic" cpu usage. As an example, lets say that task with partial_demand of 10ms runs for only 1ms on a cpu. What is included in rq->curr_runnable_sum is 10ms (and not the actual execution time of 1ms). This leads to cpu busy time being reported on the upside causing frequency to stay higher than necessary. This patch fixes cpu busy accounting scheme to strictly represent actual usage. It also provides for conditional fixup of busy time upon migration and upon heavy-task wakeup. CRs-Fixed: 691443 Change-Id: Ic4092627668053934049af4dfef65d9b6b901e6b Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org> Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org> [joonwoop@codeaurora.org: fixed conflict in init_task_load(), se.avg.decay_count has deprecated.] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: window-stats: ftrace event improvementsSrivatsa Vaddagiri
Add two new ftrace event: * trace_sched_freq_alert, to log notifications sent to governor for requesting change in frequency. * trace_sched_get_busy, to log cpu busytime information returned by scheduler Extend existing ftrace events as follows: * sched_update_task_ravg() event to log irqtime parameter * sched_migration_update_sum() to log threadid which is being migrated (and thus responsible for update of curr_runnable_sum and prev_runnable_sum counters) Change-Id: Ia68ce0953a2d21d319a1db7f916c51ff6a91557c Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
2016-03-23sched: extend sched_task_load tracepoint to indicate small tasksSyed Rameez Mustafa
While debugging its always useful to know whether a task is small or not to determine the scheduling algorithm being used. Have the sched_task_load tracepoint indicate this information rather than having to do manual calculations for every task placement. Change-Id: Ibf390095f05c7da80df1ebfe00f4c5af66c97d12 Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
2016-03-23sched: Add C-state tracking to the sched_cpu_load trace eventSyed Rameez Mustafa
C-state information is used by the scheduler for small task placement decisions. Track this information in the sched_cpu_load trace event. Also add the trace event in best_small_task_cpu(). This will help better understand small task placement decisions. Change-Id: Ife5f05bba59f85c968fab999bd13b9fb6b1c184e Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
2016-03-23sched: window-stats: Remove unused prev_window variableSrivatsa Vaddagiri
Remove unused prev_window variable in 'struct ravg' Change-Id: I22ec040bae6fa5810f9f8771aa1cb873a2183746 Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
2016-03-23sched: Make RAVG_HIST_SIZE tunableOlav Haugan
Make RAVG_HIST_SIZE available from /proc/sys/kernel/sched_ravg_hist_size to allow tuning of the size of the history that is used in computation of task demand. CRs-fixed: 706138 Change-Id: Id54c1e4b6e974a62d787070a0af1b4e8ce3b4be6 Signed-off-by: Olav Haugan <ohaugan@codeaurora.org> [joonwoop@codeaurora.org: fixed minor conflict in sysctl.h] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23sched: Extend ftrace event to record boost and reason codeSrivatsa Vaddagiri
Add a new ftrace event to record changes to boost setting. Also extend sched_task_load() ftrace event to record boost setting and reason code passed to select_best_cpu(). This will be useful for debug purpose. Change-Id: Idac72f86d954472abe9f88a8db184343b7730287 Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
2016-03-23sched: Add new trace eventsSrivatsa Vaddagiri
Add trace events for update_task_ravg(), update_history(), and set_task_cpu(). These tracepoints are useful for monitoring the per-task and per-runqueue demand statistics. Change-Id: Ibec9f945074ff31d1fc1a76ae37c40c8fea8cda9 Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
2016-03-23sched: add affinity, task load information to sched tracepointsSteve Muckle
Knowing the affinity mask and CPU usage of a task is helpful in understanding the behavior of the system. Affinity information has been added to the enq_deq trace event, and the migration tracepoint now reports the load of the task migrated. Change-Id: I29d8a610292b4dfeeb8fe16174e9d4dc196649b7 Signed-off-by: Steve Muckle <smuckle@codeaurora.org> Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
2016-03-23sched: Update sched_enq_deq_task ftrace eventSrivatsa Vaddagiri
Extend sched_enq_deq_task ftrace event to record task's runnable_avg_sum_scaled, runnable_avg_period and demand metrics. This will be a valuable debug aid. Change-Id: I8deda0df0105cf97a3178cded96473d541e0d78a Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
2016-03-23sched: Add additional ftrace eventsSrivatsa Vaddagiri
This patch adds two ftrace events: sched_task_load -> records information of a task, such as scaled demand sched_cpu_load -> records information of a cpu, such as nr_running, nr_big_tasks etc This will be useful to debug HMP related task placement decisions by scheduler. Change-Id: If91587149bcd9bed157b5d2bfdecc3c3bf6652ff Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
2016-03-23tracing/sched: add load balancer tracepointSteve Muckle
When doing performance analysis it can be useful to see exactly what is going on with the load balancer - when it runs and why exactly it may not be redistributing load. This additional tracepoint will show the idle context of the load balance operation (idle, not idle, newly idle), various values from the load balancing operation, the final result, and the new balance interval. Change-Id: I1538c411c5f9d17d7d37d84ead6210756be2d884 Signed-off-by: Steve Muckle <smuckle@codeaurora.org> [rameezmustafa@codeaurora.org: Initialize variables in load_balance() to avoid crashes and inaccurate tracing.] Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org> [joonwoop@codeaurora.org: fixed minor conflict in include/trace/events/sched.h.] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23tracing/sched: Track per-cpu rt and non-rt cpu_load.Arun Bharadwaj
Add a new tracepoint trace_sched_enq_deq_task to track per-cpu rt and non-rt cpu_load during task enqueue and dequeue. This is useful to visualize and compare the load on different cpus and also to understand how balanced the load is at any point of time. Note: We only print cpu_load[0] because we only care about the most recent load history for tracking load balancer effectiveness. Change-Id: I46f0bb84e81652099ed5edf8c2686c70c8b8330c Signed-off-by: Arun Bharadwaj <abharadw@codeaurora.org>
2016-03-22iommu: Change trace unmap api to report unmapped sizeShuah Khan
Currently map and unmap are implemented as events under a common trace class declaration. The common class forces trace_unmap() to require a bogus physical address argument that it doesn't use. Changing unmap to report unmapped size will provide useful information for debugging. Remove common map_unmap trace class and change map and unmap into separate events as opposed to events under the same class to allow for differences in the reporting information. In addition, map and unmap are changed to handle size value as size_t instead of int to match the passed size value and avoid overflow. Change-Id: Ic231e28c2784fbfe41a6749175cc390920165e81 Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com> Suggested-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Joerg Roedel <jroedel@suse.de> [pdaly@codeaurora.org Keep map_unmap class]
2016-03-22iommu: add ftrace profiling for map and unmapLiam Mark
Add ftrace start and end logging for map, iommu_map_sg and unmap in order to facilitate performance testing. Change-Id: I9ddf241ffa6cf519f6abece7b0820640f5ce1975 Signed-off-by: Liam Mark <lmark@codeaurora.org>
2016-03-22iommu: Sync files for kernel upgradePatrick Daly
Reset the following files: arm-smmu.c iommu.c include/linux/iommu.h include/trace/events/iommu.h to the git merge base between 3.18 and 4.4: b2776bf7149bddd1f4161f14f79520f17fc1d71d Change-Id: I9aa58e08125e3a72d1e9742e26d4a6fab34b0ed5 Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
2016-03-22soc: qcom: idle: Snapshot of idle/sleep driver as of msm-3.18Mahesh Sivasubramanian
This is a snapshot of the Sleep driver and realted functionality as of e70ad0cd5efdd9dc91a77dcdac31d6132e1315c1 on msm-3.18 branch Change-Id: I98fec26849898c5c66abbb1b094439780c23964d
2016-03-22ion: add snapshot of ion support for MSMKumar Gala
This is a snapshot of the ION support as of msm-3.10 commit acdce027751d5a7488b283f0ce3111f873a5816d (Merge "defconfig: arm64: Enable ONESHOT_SYNC for msm8994") In addition, comment out the shrinker code and skip-zeroing bits as they aren't yet in the tree. Change-Id: Id9e1e7fa4c35ce5a9f9348837f05f002258865cf Signed-off-by: Kumar Gala <galak@codeaurora.org> [mitchelh: dropped MSM changes to ion_chunk_heap, dropped MSM changes to ion_carveout_heap] Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
2016-03-22platform: msm: msm_bus: Add support for bus scalingDavid Dai
This snapshot is taken as of msm-3.18 commit 1513280 (Merge "platform: msm: msm_bus: Fix memory leak during client unregister)" Change Kconfig option to say QCOM_BUS* instead of MSM_BUS* Change-Id: I6dd9aba5b26984a914714ca49ae7253c1f267b4b Signed-off-by: David Dai <daidavid1@codeaurora.org>
2016-03-22scsi: ufs: use symbolic print for tracingGilad Broner
Passing strings instead of enums for tracing events uses more of the tracing buffer. Instead, pass the enum integer value and convert to string when tracing event is formated using the __print_symbolic() macro. Change-Id: I91c4374fd079c6ea150373548975f2b259eb2d59 Signed-off-by: Gilad Broner <gbroner@codeaurora.org> [subhashj@codeaurora.org: resolved trivial merge conflicts] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org> [venkatg@codeaurora.org: resolved trivial merge conflicts] Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22tracing: ufs: create a trace event class template for common eventsGilad Broner
The following three trace events: ufshcd_clk_gating, ufshcd_hibern8_on_idle and ufshcd_auto_bkops_state share the same arguments and meaning - logging some state change in the UFS driver. Defining those as template instances takes up less memory compared to be defined as separate trace events. Change-Id: I92c2bf3eada6f876b8c9e8a7bfc4568c7886548f Signed-off-by: Gilad Broner <gbroner@codeaurora.org>
2016-03-22scsi: ufs: add trace event for ufs commandsLee Susman
Use the ftrace infrastructure to conditionally trace ufs command events. New trace event is created, which samples the following ufs command data: - device name - optional identification string - task tag - doorbell register - number of transfer bytes - interrupt status register - request start LBA - command opcode Currently we only fully trace read(10) and write(10) commands. All other commands which pass through ufshcd_send_command() will be printed with "-1" in the lba and transfer_len fields. Usage: echo 1 > /sys/kernel/debug/tracing/events/ufs/enable cat /sys/kernel/debug/tracing/trace_pipe Change-Id: Id6e16a8c0b2a833c5453ed9923384f641e374a71 Signed-off-by: Lee Susman <lsusman@codeaurora.org> [gbroner@codeaurora.org: fix merge conflict] Signed-off-by: Gilad Broner <gbroner@codeaurora.org> [subhashj@codeaurora.org: resolved merge conflicts and compilation error] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: add time profiling supportSubhash Jadavani
This patch adds the profiling support for some of the time critical operations like hibern8 enter/exit, clock gating & clock scaling. Change-Id: I4dde1078dcd2af47f051639b03c44c423ee344fa Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: add support for hibern8 on idleSubhash Jadavani
In order to save power we should put the UFS link into hibern8 as soon as UFS link is idle and power measurement of active usecases (like audio/video playback/recording) show that putting UFS link in hibern8 @ 10ms of idle (if not earlier) would save significant power. Our current available solution is to do hibern8 with clock gating @idle timeout of 150ms. As clock gating has huge latencies (7ms each in enter and exit), we cannot bring down the idle timeout to <=10ms without degrading UFS throughput. Hence this change has added support to enter into hibern8 with another idle timer. Change-Id: I5a31f18fc21015d4a68236da9fd94f3f016e1d44 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org> [subhashj@codeaurora.org: resolved trivial merge conflicts] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: add additional tracing messagesSubhash Jadavani
This patch adds following tracing messages: - Add support to trace the automatic background operations enable/disable events. - Add addition logs to trace the UFS device and UFS link state during suspend/resume and initialization. Change-Id: I732b255296042442e50278c2700c52bd166e1d8b Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org> [subhashj@codeaurora.org: resolved trivial merge conflicts] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: Add support for clock scaling using devfreq frameworkSahitya Tummala
The clocks for UFS device will be managed by generic DVFS (Dynamic Voltage and Frequency Scaling) framework within kernel. This devfreq framework works with different governors to scale the clocks. By default, UFS devices uses simple_ondemand governor which scales the clocks up if the load is more than upthreshold and scales down if the load is less than downthreshold. Change-Id: I1c3944a5b1771b967c1df3e441a75fd584d6e2a5 Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> [gbroner@codeaurora.org: fix usage of devfreq governor data] Signed-off-by: Gilad Broner <gbroner@codeaurora.org> [subhashj@codeaurora.org: resolved merge conflicts, dropped most of the changes as they are already present on baseline] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>