aosp/android-mainline: Squash down related trivial NOUPSTREAM vendor hook patches

Signed-off-by: Lee Jones <lee.jones@linaro.org>
Change-Id: Idcd3349d99ae083f327e7c5af01b6987b8b881a0
diff --git a/android-mainline/NOUPSTREAM-ANDROID-Add-vendor-hooks-to-the-scheduler.patch b/android-mainline/NOUPSTREAM-ANDROID-Add-vendor-hooks-to-the-scheduler.patch
index 30f2c36..64c2ebb 100644
--- a/android-mainline/NOUPSTREAM-ANDROID-Add-vendor-hooks-to-the-scheduler.patch
+++ b/android-mainline/NOUPSTREAM-ANDROID-Add-vendor-hooks-to-the-scheduler.patch
@@ -29,6 +29,7 @@
 Bug: 183306209
 Bug: 183543978
 Bug: 200103201
+Bug: 177416721
 
 Change-Id: I926458b0a911d564e5932e200125b12406c2deee
 Signed-off-by: Park Bumgyu <bumgyu.park@samsung.com>
@@ -49,40 +50,40 @@
     ANDROID: sched: Add rvh for cpu controller cgroup can attach
     ANDROID: sched: add em_cpu_energy vendor hook
     ANDROID: sched: move vendor hook to check scheduling nice value
+    NOUPSTREAM: ANDROID: simplify vendor hooks for non-GKI builds
 Signed-off-by: Lee Jones <lee.jones@linaro.org>
 ---
- drivers/android/vendor_hooks.c   |  59 +++++++
- include/linux/sched.h            |   1 +
- include/trace/hooks/dtask.h      |  35 ++++
- include/trace/hooks/sched.h      | 270 +++++++++++++++++++++++++++++++
- kernel/locking/mutex.c           |   1 -
- kernel/locking/rwsem.c           |   7 +
- kernel/sched/core.c              |  81 +++++++++-
- kernel/sched/cpufreq_schedutil.c |  15 +-
- kernel/sched/cputime.c           |   3 +
- kernel/sched/fair.c              |  94 ++++++++++-
- kernel/sched/rt.c                |  23 ++-
- kernel/sched/topology.c          |  12 +-
- 12 files changed, 584 insertions(+), 17 deletions(-)
+ drivers/android/vendor_hooks.c     |  59 +++++++
+ include/linux/sched.h              |   1 +
+ include/trace/hooks/dtask.h        |  35 +++++
+ include/trace/hooks/sched.h        | 241 +++++++++++++++++++++++++++++
+ include/trace/hooks/vendor_hooks.h |   9 ++
+ kernel/locking/mutex.c             |   1 -
+ kernel/locking/rwsem.c             |   7 +
+ kernel/sched/core.c                |  81 +++++++++-
+ kernel/sched/cpufreq_schedutil.c   |  15 +-
+ kernel/sched/cputime.c             |   3 +
+ kernel/sched/fair.c                |  94 ++++++++++-
+ kernel/sched/rt.c                  |  23 ++-
+ kernel/sched/topology.c            |  12 +-
+ 13 files changed, 564 insertions(+), 17 deletions(-)
  create mode 100644 include/trace/hooks/dtask.h
  create mode 100644 include/trace/hooks/sched.h
 
 diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
 --- a/drivers/android/vendor_hooks.c
 +++ b/drivers/android/vendor_hooks.c
-@@ -8,9 +8,11 @@
+@@ -8,7 +8,9 @@
  
  #define CREATE_TRACE_POINTS
  #include <trace/hooks/vendor_hooks.h>
 +#include <trace/hooks/sched.h>
  #include <trace/hooks/fpsimd.h>
- #include <trace/hooks/rwsem.h>
- #include <trace/hooks/futex.h>
 +#include <trace/hooks/dtask.h>
  #include <trace/hooks/mpam.h>
- #include <trace/hooks/wqlockup.h>
  #include <trace/hooks/debug.h>
-@@ -20,14 +22,71 @@
+ #include <trace/hooks/iommu.h>
+@@ -17,7 +19,64 @@
   * Export tracepoints that act as a bare tracehook (ie: have no trace event
   * associated with them) to allow external modules to probe them.
   */
@@ -100,22 +101,14 @@
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_user_nice);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_setscheduler);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_init);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_start);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_finish);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_start);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dump_throttled_rt_tasks);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_newidle_balance);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_nohz_balancer_kick);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_queue);
@@ -150,6 +143,7 @@
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_exec);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_map_util_freq);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_em_cpu_energy);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
@@ -209,7 +203,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/include/trace/hooks/sched.h
-@@ -0,0 +1,270 @@
+@@ -0,0 +1,241 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +#undef TRACE_SYSTEM
 +#define TRACE_SYSTEM sched
@@ -222,7 +216,6 @@
 + * Following tracepoints are not exported in tracefs and provide a
 + * mechanism for vendor modules to hook and extend functionality
 + */
-+#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
 +struct task_struct;
 +DECLARE_RESTRICTED_HOOK(android_rvh_select_task_rq_fair,
 +	TP_PROTO(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags, int *new_cpu),
@@ -449,37 +442,32 @@
 +		 bool *repick, bool simple),
 +	TP_ARGS(rq, p, se, repick, simple), 1);
 +
-+#else
-+#define trace_android_rvh_select_task_rq_fair(p, prev_cpu, sd_flag, wake_flags, new_cpu)
-+#define trace_android_rvh_select_task_rq_rt(p, prev_cpu, sd_flag, wake_flags, new_cpu)
-+#define trace_android_rvh_select_fallback_rq(cpu, p, dest_cpu)
-+#define trace_android_vh_scheduler_tick(rq)
-+#define trace_android_rvh_enqueue_task(rq, p, flags)
-+#define trace_android_rvh_dequeue_task(rq, p, flags)
-+#define trace_android_rvh_can_migrate_task(p, dst_cpu, can_migrate)
-+#define trace_android_rvh_find_lowest_rq(p, local_cpu_mask, ret, lowest_cpu)
-+#define trace_android_rvh_prepare_prio_fork(p)
-+#define trace_android_rvh_finish_prio_fork(p)
-+#define trace_android_rvh_rtmutex_prepare_setprio(p, pi_task)
-+#define trace_android_rvh_set_user_nice(p, nice)
-+#define trace_android_rvh_setscheduler(p)
-+#define trace_android_rvh_find_busiest_group(busiest, dst_rq, out_balance)
-+#define trace_android_vh_dump_throttled_rt_tasks(cpu, clock, rt_period, rt_runtime, rt_period_timer_expires)
-+#define trace_android_rvh_sched_newidle_balance(this_rq, rf, pulled_task, done)
-+#define trace_android_rvh_sched_nohz_balancer_kick(rq, flags, done)
-+#define trace_android_rvh_find_busiest_queue(dst_cpu, group, env_cpus, busiest, done)
-+#define trace_android_rvh_migrate_queued_task(rq, rf, p, new_cpu, detached)
-+#define trace_android_rvh_find_energy_efficient_cpu(p, prev_cpu, sync, new_cpu)
-+#define trace_android_vh_set_sugov_sched_attr(attr)
-+#define trace_android_rvh_set_iowait(p, should_iowait_boost)
-+#define trace_android_rvh_set_sugov_update(sg_policy, next_freq, should_update)
-+#define trace_android_rvh_sched_setaffinity(p, in_mask, retval)
-+#define trace_android_rvh_cpu_cgroup_attach(tset)
-+#endif
-+
 +#endif /* _TRACE_HOOK_SCHED_H */
 +/* This part must be outside protection */
 +#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/vendor_hooks.h b/include/trace/hooks/vendor_hooks.h
+--- a/include/trace/hooks/vendor_hooks.h
++++ b/include/trace/hooks/vendor_hooks.h
+@@ -9,6 +9,8 @@
+ 
+ #include <linux/tracepoint.h>
+ 
++#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
++
+ #define DECLARE_HOOK DECLARE_TRACE
+ 
+ int android_rvh_probe_register(struct tracepoint *tp, void *probe, void *data);
+@@ -109,3 +111,10 @@ int android_rvh_probe_register(struct tracepoint *tp, void *probe, void *data);
+ 			PARAMS(void *__data, proto))
+ 
+ #endif /* TRACE_HEADER_MULTI_READ */
++
++#else /* !CONFIG_TRACEPOINTS || !CONFIG_ANDROID_VENDOR_HOOKS */
++/* suppress trace hooks */
++#define DECLARE_HOOK DECLARE_EVENT_NOP
++#define DECLARE_RESTRICTED_HOOK(name, proto, args, cond)		\
++	DECLARE_EVENT_NOP(name, PARAMS(proto), PARAMS(args))
++#endif
 diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c
 --- a/kernel/locking/mutex.c
 +++ b/kernel/locking/mutex.c
@@ -494,15 +482,15 @@
 diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
 --- a/kernel/locking/rwsem.c
 +++ b/kernel/locking/rwsem.c
-@@ -31,6 +31,7 @@
+@@ -30,6 +30,7 @@
+ 
  #ifndef CONFIG_PREEMPT_RT
  #include "lock_events.h"
- #include <trace/hooks/rwsem.h>
 +#include <trace/hooks/dtask.h>
  
  /*
   * The least significant 2 bits of the owner value has the following
-@@ -984,6 +985,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
+@@ -976,6 +977,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
  	wake_up_q(&wake_q);
  
  	/* wait to be given the lock */
@@ -510,7 +498,7 @@
  	for (;;) {
  		set_current_state(state);
  		if (!smp_load_acquire(&waiter.task)) {
-@@ -1003,6 +1005,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
+@@ -995,6 +997,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
  	}
  
  	__set_current_state(TASK_RUNNING);
@@ -518,7 +506,7 @@
  	lockevent_inc(rwsem_rlock);
  	return sem;
  
-@@ -1014,6 +1017,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
+@@ -1006,6 +1009,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
  	}
  	raw_spin_unlock_irq(&sem->wait_lock);
  	__set_current_state(TASK_RUNNING);
@@ -526,15 +514,15 @@
  	lockevent_inc(rwsem_rlock_fail);
  	return ERR_PTR(-EINTR);
  }
-@@ -1092,6 +1096,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
+@@ -1078,6 +1082,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
+ 
  wait:
- 	trace_android_vh_rwsem_wake(sem);
  	/* wait until we successfully acquire the lock */
 +	trace_android_vh_rwsem_write_wait_start(sem);
  	set_current_state(state);
  	for (;;) {
  		if (rwsem_try_write_lock(sem, wstate)) {
-@@ -1151,6 +1156,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
+@@ -1137,6 +1142,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
  		raw_spin_lock_irq(&sem->wait_lock);
  	}
  	__set_current_state(TASK_RUNNING);
@@ -542,7 +530,7 @@
  	list_del(&waiter.list);
  	raw_spin_unlock_irq(&sem->wait_lock);
  	lockevent_inc(rwsem_wlock);
-@@ -1159,6 +1165,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
+@@ -1145,6 +1151,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
  
  out_nolock:
  	__set_current_state(TASK_RUNNING);
diff --git a/android-mainline/NOUPSTREAM-ANDROID-Add-vendor-hooks-when-syscall-prctl-finished.patch b/android-mainline/NOUPSTREAM-ANDROID-Add-vendor-hooks-when-syscall-prctl-finished.patch
deleted file mode 100644
index 23eee5a..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-Add-vendor-hooks-when-syscall-prctl-finished.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Frankie Chang <frankie.chang@mediatek.com>
-Date: Wed, 13 Jan 2021 10:45:58 +0800
-Subject: NOUPSTREAM: ANDROID: Add vendor hooks when syscall prctl finished
-
-Add vendor hook when syscall prctl finished for vendor-specific tuning.
-
-[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 181819699
-
-Signed-off-by: Frankie Chang <frankie.chang@mediatek.com>
-Change-Id: Ica42d80ab4b540045330e9c5b211e0e814eed0ff
-(cherry picked from commit d150b26653e7a3d15383a09384aace140b537ff4)
----
- drivers/android/vendor_hooks.c |  2 ++
- include/trace/hooks/sys.h      | 17 +++++++++++++++++
- kernel/sys.c                   |  3 +++
- 3 files changed, 22 insertions(+)
- create mode 100644 include/trace/hooks/sys.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -23,6 +23,7 @@
- #include <trace/hooks/preemptirq.h>
- #include <trace/hooks/ftrace_dump.h>
- #include <trace/hooks/cgroup.h>
-+#include <trace/hooks/sys.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -109,6 +110,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
-diff --git a/include/trace/hooks/sys.h b/include/trace/hooks/sys.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/sys.h
-@@ -0,0 +1,17 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM sys
-+#undef TRACE_INCLUDE_PATH
-+#define TRACE_INCLUDE_PATH trace/hooks
-+#if !defined(_TRACE_HOOK_SYS_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_SYS_H
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+struct task_struct;
-+DECLARE_HOOK(android_vh_syscall_prctl_finished,
-+	TP_PROTO(int option, struct task_struct *task),
-+	TP_ARGS(option, task));
-+#endif
-+
-+#include <trace/define_trace.h>
-diff --git a/kernel/sys.c b/kernel/sys.c
---- a/kernel/sys.c
-+++ b/kernel/sys.c
-@@ -76,6 +76,8 @@
- 
- #include "uid16.h"
- 
-+#include <trace/hooks/sys.h>
-+
- #ifndef SET_UNALIGN_CTL
- # define SET_UNALIGN_CTL(a, b)	(-EINVAL)
- #endif
-@@ -2686,6 +2688,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
- 		error = -EINVAL;
- 		break;
- 	}
-+	trace_android_vh_syscall_prctl_finished(option, me);
- 	return error;
- }
- 
diff --git a/android-mainline/NOUPSTREAM-ANDROID-PM-Domains-add-vendor_hook-to-disallow-domain-idle-state.patch b/android-mainline/NOUPSTREAM-ANDROID-PM-Domains-add-vendor_hook-to-disallow-domain-idle-state.patch
deleted file mode 100644
index 7bfe67b..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-PM-Domains-add-vendor_hook-to-disallow-domain-idle-state.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Lina Iyer <ilina@codeaurora.org>
-Date: Tue, 12 Jan 2021 10:26:57 -0700
-Subject: NOUPSTREAM: ANDROID: PM / Domains: add vendor_hook to disallow domain
- idle state
-
-In order to debug critical domain and device power issues, it may be
-necessary to disallow certain idle states at runtime. Enable a vendor
-hook to check if a domain idle state is allowed for powering down the
-domain.
-
-[CPNOTE: 16/08/21] Lee: Vendor hooks
-
-Bug: 175718935
-Bug: 195914333
-Change-Id: I403c0c7d272439fb338bbf54a346861559385047
-Signed-off-by: Lina Iyer <ilina@codeaurora.org>
-Signed-off-by: Maulik Shah <mkshah@codeaurora.org>
----
- drivers/android/vendor_hooks.c       |  2 ++
- drivers/base/power/domain_governor.c |  7 +++++++
- include/trace/hooks/pm_domain.h      | 21 +++++++++++++++++++++
- 3 files changed, 30 insertions(+)
- create mode 100644 include/trace/hooks/pm_domain.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -34,6 +34,7 @@
- #include <trace/hooks/iommu.h>
- #include <trace/hooks/net.h>
- #include <trace/hooks/timer.h>
-+#include <trace/hooks/pm_domain.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -147,6 +148,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_allow_domain_state);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
-diff --git a/drivers/base/power/domain_governor.c b/drivers/base/power/domain_governor.c
---- a/drivers/base/power/domain_governor.c
-+++ b/drivers/base/power/domain_governor.c
-@@ -12,6 +12,8 @@
- #include <linux/cpumask.h>
- #include <linux/ktime.h>
- 
-+#include <trace/hooks/pm_domain.h>
-+
- static int dev_update_qos_constraint(struct device *dev, void *data)
- {
- 	s64 *constraint_ns_p = data;
-@@ -174,6 +176,11 @@ static bool __default_power_down_ok(struct dev_pm_domain *pd,
- 	struct pm_domain_data *pdd;
- 	s64 min_off_time_ns;
- 	s64 off_on_time_ns;
-+	bool allow = true;
-+
-+	trace_android_vh_allow_domain_state(genpd, state, &allow);
-+	if (!allow)
-+		return false;
- 
- 	off_on_time_ns = genpd->states[state].power_off_latency_ns +
- 		genpd->states[state].power_on_latency_ns;
-diff --git a/include/trace/hooks/pm_domain.h b/include/trace/hooks/pm_domain.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/pm_domain.h
-@@ -0,0 +1,21 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM pm_domain
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_PM_DOMAIN_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_PM_DOMAIN_H
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+struct generic_pm_domain;
-+DECLARE_HOOK(android_vh_allow_domain_state,
-+	TP_PROTO(struct generic_pm_domain *genpd, uint32_t idx, bool *allow),
-+	TP_ARGS(genpd, idx, allow))
-+
-+#endif /* _TRACE_HOOK_PM_DOMAIN_H */
-+
-+#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-add-vendor-hooks-to-override-show_cpufinfo_max_freq.patch b/android-mainline/NOUPSTREAM-ANDROID-add-vendor-hooks-to-override-show_cpufinfo_max_freq.patch
index 9c5e46f..dde3086 100644
--- a/android-mainline/NOUPSTREAM-ANDROID-add-vendor-hooks-to-override-show_cpufinfo_max_freq.patch
+++ b/android-mainline/NOUPSTREAM-ANDROID-add-vendor-hooks-to-override-show_cpufinfo_max_freq.patch
@@ -23,16 +23,16 @@
 diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
 --- a/drivers/android/vendor_hooks.c
 +++ b/drivers/android/vendor_hooks.c
-@@ -22,6 +22,7 @@
- #include <trace/hooks/debug.h>
+@@ -23,6 +23,7 @@
  #include <trace/hooks/printk.h>
+ #include <trace/hooks/gic_v3.h>
  #include <trace/hooks/epoch.h>
 +#include <trace/hooks/cpufreq.h>
  #include <trace/hooks/mm.h>
  #include <trace/hooks/preemptirq.h>
  #include <trace/hooks/ftrace_dump.h>
-@@ -73,6 +74,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_jiffies_update);
+@@ -81,6 +82,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_set_affinity);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_affinity_init);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_suspend_epoch_val);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val);
 +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_max_freq);
diff --git a/android-mainline/NOUPSTREAM-ANDROID-arm64-ARM64-related-vendor-hooks.patch b/android-mainline/NOUPSTREAM-ANDROID-arm64-ARM64-related-vendor-hooks.patch
new file mode 100644
index 0000000..f7d2498
--- /dev/null
+++ b/android-mainline/NOUPSTREAM-ANDROID-arm64-ARM64-related-vendor-hooks.patch
@@ -0,0 +1,279 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Wooyeon Kim <wooy88.kim@samsung.com>
+Date: Thu, 9 Jul 2020 14:43:13 +0900
+Subject: NOUPSTREAM: ANDROID: arm64: ARM64 related vendor hooks
+
+ - To use fpsimd in kernel task, vendor_hook call is needed to
+   save/restore fpsimd at scheduling time.
+ - ANDROID_VENDOR_DATA added to thread_struct.
+ - Vendor_hooks is called when thread is switching for save/restore
+   fpsimd states.
+  (trace_android_vh_is_fpsimd_save(prev, next))
+
+[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
+
+Squash:
+
+  NOUPSTREAM: ANDROID: mpam: add vendor hook to record MPAM
+  NOUPSTREAM: ANDROID: vendor_hooks: Add new android vendor hooks for ipi stop
+  NOUPSTREAM: ANDROID: iommu: Add vendor hook for setting up DMA ops for IOMMU clients
+
+Bug: 149632552
+Bug: 165333282
+Bug: 165956922
+Bug: 179291683
+Bug: 195574584
+Signed-off-by: Wooyeon Kim <wooy88.kim@samsung.com>
+Change-Id: I853e1b6a9a51e24f770423bbc39fdd84265d78fc
+---
+ arch/arm64/include/asm/processor.h |  3 +++
+ arch/arm64/kernel/process.c        | 10 ++++++++++
+ arch/arm64/kernel/smp.c            |  3 +++
+ arch/arm64/mm/dma-mapping.c        |  5 ++++-
+ drivers/android/vendor_hooks.c     |  9 ++++++++-
+ include/trace/hooks/debug.h        | 26 ++++++++++++++++++++++++++
+ include/trace/hooks/fpsimd.h       | 21 +++++++++++++++++++++
+ include/trace/hooks/iommu.h        | 30 ++++++++++++++++++++++++++++++
+ include/trace/hooks/mpam.h         | 21 +++++++++++++++++++++
+ 9 files changed, 126 insertions(+), 2 deletions(-)
+ create mode 100644 include/trace/hooks/debug.h
+ create mode 100644 include/trace/hooks/fpsimd.h
+ create mode 100644 include/trace/hooks/iommu.h
+ create mode 100644 include/trace/hooks/mpam.h
+
+diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
+--- a/arch/arm64/include/asm/processor.h
++++ b/arch/arm64/include/asm/processor.h
+@@ -30,6 +30,7 @@
+ #include <linux/stddef.h>
+ #include <linux/string.h>
+ #include <linux/thread_info.h>
++#include <linux/android_vendor.h>
+ 
+ #include <vdso/processor.h>
+ 
+@@ -145,6 +146,8 @@ struct thread_struct {
+ 		struct user_fpsimd_state fpsimd_state;
+ 	} uw;
+ 
++	ANDROID_VENDOR_DATA(1);
++
+ 	unsigned int		fpsimd_cpu;
+ 	void			*sve_state;	/* SVE registers, if any */
+ 	unsigned int		sve_vl;		/* SVE vector length */
+diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
+--- a/arch/arm64/kernel/process.c
++++ b/arch/arm64/kernel/process.c
+@@ -40,6 +40,8 @@
+ #include <linux/percpu.h>
+ #include <linux/thread_info.h>
+ #include <linux/prctl.h>
++#include <trace/hooks/fpsimd.h>
++#include <trace/hooks/mpam.h>
+ 
+ #include <asm/alternative.h>
+ #include <asm/compat.h>
+@@ -504,6 +506,12 @@ __notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
+ 	erratum_1418040_thread_switch(prev, next);
+ 	ptrauth_thread_switch_user(next);
+ 
++	/*
++	 *  vendor hook is needed before the dsb(),
++	 *  because MPAM is related to cache maintenance.
++	 */
++	trace_android_vh_mpam_set(prev, next);
++
+ 	/*
+ 	 * Complete any pending TLB or cache maintenance on this CPU in case
+ 	 * the thread migrates to a different CPU.
+@@ -522,6 +530,8 @@ __notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
+ 	if (prev->thread.sctlr_user != next->thread.sctlr_user)
+ 		update_sctlr_el1(next->thread.sctlr_user);
+ 
++	trace_android_vh_is_fpsimd_save(prev, next);
++
+ 	/* the actual thread switch */
+ 	last = cpu_switch_to(prev, next);
+ 
+diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
+--- a/arch/arm64/kernel/smp.c
++++ b/arch/arm64/kernel/smp.c
+@@ -53,6 +53,8 @@
+ 
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/ipi.h>
++#undef CREATE_TRACE_POINTS
++#include <trace/hooks/debug.h>
+ 
+ DEFINE_PER_CPU_READ_MOSTLY(int, cpu_number);
+ EXPORT_PER_CPU_SYMBOL(cpu_number);
+@@ -903,6 +905,7 @@ static void do_handle_IPI(int ipinr)
+ 		break;
+ 
+ 	case IPI_CPU_STOP:
++		trace_android_vh_ipi_stop_rcuidle(get_irq_regs());
+ 		local_cpu_stop();
+ 		break;
+ 
+diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
+--- a/arch/arm64/mm/dma-mapping.c
++++ b/arch/arm64/mm/dma-mapping.c
+@@ -10,6 +10,7 @@
+ #include <linux/dma-iommu.h>
+ #include <xen/xen.h>
+ #include <xen/swiotlb-xen.h>
++#include <trace/hooks/iommu.h>
+ 
+ #include <asm/cacheflush.h>
+ 
+@@ -49,8 +50,10 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
+ 		   ARCH_DMA_MINALIGN, cls);
+ 
+ 	dev->dma_coherent = coherent;
+-	if (iommu)
++	if (iommu) {
+ 		iommu_setup_dma_ops(dev, dma_base, dma_base + size - 1);
++		trace_android_vh_iommu_setup_dma_ops(dev, dma_base, dma_base + size - 1);
++	}
+ 
+ #ifdef CONFIG_XEN
+ 	if (xen_swiotlb_detect())
+diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
+--- a/drivers/android/vendor_hooks.c
++++ b/drivers/android/vendor_hooks.c
+@@ -8,9 +8,16 @@
+ 
+ #define CREATE_TRACE_POINTS
+ #include <trace/hooks/vendor_hooks.h>
++#include <trace/hooks/fpsimd.h>
++#include <trace/hooks/mpam.h>
++#include <trace/hooks/debug.h>
++#include <trace/hooks/iommu.h>
+ 
+ /*
+  * Export tracepoints that act as a bare tracehook (ie: have no trace event
+  * associated with them) to allow external modules to probe them.
+  */
+-
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
+diff --git a/include/trace/hooks/debug.h b/include/trace/hooks/debug.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/debug.h
+@@ -0,0 +1,26 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM debug
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_DEBUG_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_DEBUG_H
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
++struct pt_regs;
++
++DECLARE_HOOK(android_vh_ipi_stop,
++	TP_PROTO(struct pt_regs *regs),
++	TP_ARGS(regs))
++#else
++#define trace_android_vh_ipi_stop(regs)
++#define trace_android_vh_ipi_stop_rcuidle(regs)
++#endif
++
++#endif /* _TRACE_HOOK_DEBUG_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/fpsimd.h b/include/trace/hooks/fpsimd.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/fpsimd.h
+@@ -0,0 +1,21 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM fpsimd
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_FPSIMD_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_FPSIMD_H
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++struct task_struct;
++
++DECLARE_HOOK(android_vh_is_fpsimd_save,
++	TP_PROTO(struct task_struct *prev, struct task_struct *next),
++	TP_ARGS(prev, next))
++
++#endif /* _TRACE_HOOK_FPSIMD_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/iommu.h b/include/trace/hooks/iommu.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/iommu.h
+@@ -0,0 +1,30 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM iommu
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_IOMMU_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_IOMMU_H
++
++#include <linux/types.h>
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
++
++DECLARE_HOOK(android_vh_iommu_setup_dma_ops,
++	TP_PROTO(struct device *dev, u64 dma_base, u64 dma_limit),
++	TP_ARGS(dev, dma_base, dma_limit));
++
++#else
++
++#define trace_android_vh_iommu_setup_dma_ops(dev, dma_base, dma_limit)
++
++#endif
++
++#endif /* _TRACE_HOOK_IOMMU_H */
++
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/mpam.h b/include/trace/hooks/mpam.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/mpam.h
+@@ -0,0 +1,21 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM mpam
++#undef TRACE_INCLUDE_PATH
++#define TRACE_INCLUDE_PATH trace/hooks
++#if !defined(_TRACE_HOOK_MPAM_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_MPAM_H
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++/*
++ * Following tracepoints are not exported in tracefs and provide a
++ * mechanism for vendor modules to hook and extend functionality
++ */
++struct task_struct;
++DECLARE_HOOK(android_vh_mpam_set,
++	TP_PROTO(struct task_struct *prev, struct task_struct *next),
++	TP_ARGS(prev, next));
++
++#endif /* _TRACE_HOOK_MPAM_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-sched-add-vendor-hooks-to-arch_topology.patch b/android-mainline/NOUPSTREAM-ANDROID-base-Base-related-vendor-hooks.patch
similarity index 62%
rename from android-mainline/NOUPSTREAM-ANDROID-sched-add-vendor-hooks-to-arch_topology.patch
rename to android-mainline/NOUPSTREAM-ANDROID-base-Base-related-vendor-hooks.patch
index cc19814..6553b40 100644
--- a/android-mainline/NOUPSTREAM-ANDROID-sched-add-vendor-hooks-to-arch_topology.patch
+++ b/android-mainline/NOUPSTREAM-ANDROID-base-Base-related-vendor-hooks.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Yun Hsiang <yun.hsiang@mediatek.com>
 Date: Thu, 13 Aug 2020 14:41:46 +0800
-Subject: NOUPSTREAM: ANDROID: sched: add vendor hooks to arch_topology
+Subject: NOUPSTREAM: ANDROID: base: Base related vendor hooks
 
 Current CPU capacity is scaled by frequency
 but it will sometime overestimate.
@@ -12,8 +12,13 @@
 
 [CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
 
+Squash
+  NOUPSTREAM: ANDROID: PM / Domains: add vendor_hook to disallow domain idle state
+
 Bug: 163935827
 Bug: 200103201
+Bug: 175718935
+Bug: 195914333
 
 Signed-off-by: Yun Hsiang <yun.hsiang@mediatek.com>
 Change-Id: I054740a7f60301d5a3b085bfa540d52853f5eec5
@@ -21,10 +26,13 @@
            d6d9bb4ff41b ("ANDROID: fix kernelci build break")]
 Signed-off-by: Eric Biggers <ebiggers@google.com>
 ---
- drivers/android/vendor_hooks.c |  3 +++
- drivers/base/arch_topology.c   |  4 ++++
- include/trace/hooks/topology.h | 25 +++++++++++++++++++++++++
- 3 files changed, 32 insertions(+)
+ drivers/android/vendor_hooks.c       |  3 +++
+ drivers/base/arch_topology.c         |  4 ++++
+ drivers/base/power/domain_governor.c |  7 +++++++
+ include/trace/hooks/pm_domain.h      | 21 +++++++++++++++++++++
+ include/trace/hooks/topology.h       | 25 +++++++++++++++++++++++++
+ 5 files changed, 60 insertions(+)
+ create mode 100644 include/trace/hooks/pm_domain.h
  create mode 100644 include/trace/hooks/topology.h
 
 diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
@@ -38,7 +46,7 @@
  #include <trace/hooks/mpam.h>
  #include <trace/hooks/wqlockup.h>
  #include <trace/hooks/debug.h>
-@@ -36,6 +37,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_prepare_prio_fork);
+@@ -46,6 +47,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_prepare_prio_fork);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_finish_prio_fork);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_user_nice);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_setscheduler);
@@ -46,7 +54,7 @@
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_init);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
-@@ -93,3 +95,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
+@@ -126,3 +128,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_build_sched_domains);
@@ -79,6 +87,56 @@
  	pr_debug("sched_domain hierarchy rebuilt, flags updated\n");
  	update_topology = 0;
  }
+diff --git a/drivers/base/power/domain_governor.c b/drivers/base/power/domain_governor.c
+--- a/drivers/base/power/domain_governor.c
++++ b/drivers/base/power/domain_governor.c
+@@ -12,6 +12,8 @@
+ #include <linux/cpumask.h>
+ #include <linux/ktime.h>
+ 
++#include <trace/hooks/pm_domain.h>
++
+ static int dev_update_qos_constraint(struct device *dev, void *data)
+ {
+ 	s64 *constraint_ns_p = data;
+@@ -174,6 +176,11 @@ static bool __default_power_down_ok(struct dev_pm_domain *pd,
+ 	struct pm_domain_data *pdd;
+ 	s64 min_off_time_ns;
+ 	s64 off_on_time_ns;
++	bool allow = true;
++
++	trace_android_vh_allow_domain_state(genpd, state, &allow);
++	if (!allow)
++		return false;
+ 
+ 	off_on_time_ns = genpd->states[state].power_off_latency_ns +
+ 		genpd->states[state].power_on_latency_ns;
+diff --git a/include/trace/hooks/pm_domain.h b/include/trace/hooks/pm_domain.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/pm_domain.h
+@@ -0,0 +1,21 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM pm_domain
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_PM_DOMAIN_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_PM_DOMAIN_H
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++struct generic_pm_domain;
++DECLARE_HOOK(android_vh_allow_domain_state,
++	TP_PROTO(struct generic_pm_domain *genpd, uint32_t idx, bool *allow),
++	TP_ARGS(genpd, idx, allow))
++
++#endif /* _TRACE_HOOK_PM_DOMAIN_H */
++
++#include <trace/define_trace.h>
 diff --git a/include/trace/hooks/topology.h b/include/trace/hooks/topology.h
 new file mode 100644
 --- /dev/null
diff --git a/android-mainline/NOUPSTREAM-ANDROID-binder-Add-vendor-hook-to-the-binder.patch b/android-mainline/NOUPSTREAM-ANDROID-binder-Add-vendor-hook-to-the-binder.patch
index 8005c98..9f40407 100644
--- a/android-mainline/NOUPSTREAM-ANDROID-binder-Add-vendor-hook-to-the-binder.patch
+++ b/android-mainline/NOUPSTREAM-ANDROID-binder-Add-vendor-hook-to-the-binder.patch
@@ -120,7 +120,7 @@
  #include <trace/hooks/rwsem.h>
  #include <trace/hooks/futex.h>
  #include <trace/hooks/dtask.h>
-@@ -45,6 +46,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_user_nice);
+@@ -50,6 +51,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_user_nice);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_setscheduler);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_arch_set_freq_scale);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
diff --git a/android-mainline/NOUPSTREAM-ANDROID-cgroup-Add-vendor-hook-to-the-cgroup.patch b/android-mainline/NOUPSTREAM-ANDROID-cgroup-Add-vendor-hook-to-the-cgroup.patch
deleted file mode 100644
index e03d885..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-cgroup-Add-vendor-hook-to-the-cgroup.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Frankie Chang <frankie.chang@mediatek.com>
-Date: Tue, 12 Jan 2021 14:07:38 +0800
-Subject: NOUPSTREAM: ANDROID: cgroup: Add vendor hook to the cgroup
-
-Add a vendor hook after attaching a task to a cgroup to
-recognize the group_id for performance tuning
-
-[CPNOTE: 02/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 181917687
-
-Signed-off-by: Frankie Chang <frankie.chang@mediatek.com>
-Change-Id: I603afa3d893dd575a7dcb97f83bd9eacb8315bab
-(cherry picked from commit de089a37a3d248608a1d5855a4ae82ebad3ec2ab)
-[Lee: Squash in subsequent commits]
-Signed-off-by: Lee Jones <lee.jones@linaro.org>
----
- drivers/android/vendor_hooks.c |  3 +++
- include/trace/hooks/cgroup.h   | 23 +++++++++++++++++++++++
- kernel/cgroup/cgroup-v1.c      |  2 ++
- kernel/cgroup/cgroup.c         |  4 ++++
- 4 files changed, 32 insertions(+)
- create mode 100644 include/trace/hooks/cgroup.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -22,6 +22,7 @@
- #include <trace/hooks/epoch.h>
- #include <trace/hooks/preemptirq.h>
- #include <trace/hooks/ftrace_dump.h>
-+#include <trace/hooks/cgroup.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -107,6 +108,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
-diff --git a/include/trace/hooks/cgroup.h b/include/trace/hooks/cgroup.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/cgroup.h
-@@ -0,0 +1,23 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM cgroup
-+#undef TRACE_INCLUDE_PATH
-+#define TRACE_INCLUDE_PATH trace/hooks
-+#if !defined(_TRACE_HOOK_CGROUP_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_CGROUP_H
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+struct task_struct;
-+DECLARE_HOOK(android_vh_cgroup_set_task,
-+	TP_PROTO(int ret, struct task_struct *task),
-+	TP_ARGS(ret, task));
-+
-+struct cgroup_subsys;
-+struct cgroup_taskset;
-+DECLARE_HOOK(android_vh_cgroup_attach,
-+	TP_PROTO(struct cgroup_subsys *ss, struct cgroup_taskset *tset),
-+	TP_ARGS(ss, tset))
-+#endif
-+
-+#include <trace/define_trace.h>
-diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c
---- a/kernel/cgroup/cgroup-v1.c
-+++ b/kernel/cgroup/cgroup-v1.c
-@@ -17,6 +17,7 @@
- #include <linux/fs_parser.h>
- 
- #include <trace/events/cgroup.h>
-+#include <trace/hooks/cgroup.h>
- 
- /*
-  * pidlists linger the following amount before being destroyed.  The goal
-@@ -522,6 +523,7 @@ static ssize_t __cgroup1_procs_write(struct kernfs_open_file *of,
- 		goto out_finish;
- 
- 	ret = cgroup_attach_task(cgrp, task, threadgroup);
-+	trace_android_vh_cgroup_set_task(ret, task);
- 
- out_finish:
- 	cgroup_procs_write_finish(task, locked);
-diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
---- a/kernel/cgroup/cgroup.c
-+++ b/kernel/cgroup/cgroup.c
-@@ -61,6 +61,9 @@
- 
- #define CREATE_TRACE_POINTS
- #include <trace/events/cgroup.h>
-+#undef CREATE_TRACE_POINTS
-+
-+#include <trace/hooks/cgroup.h>
- 
- #define CGROUP_FILE_NAME_MAX		(MAX_CGROUP_TYPE_NAMELEN +	\
- 					 MAX_CFTYPE_NAME + 2)
-@@ -2487,6 +2490,7 @@ static int cgroup_migrate_execute(struct cgroup_mgctx *mgctx)
- 		do_each_subsys_mask(ss, ssid, mgctx->ss_mask) {
- 			if (ss->attach) {
- 				tset->ssid = ssid;
-+				trace_android_vh_cgroup_attach(ss, tset);
- 				ss->attach(tset);
- 			}
- 		} while_each_subsys_mask();
diff --git a/android-mainline/NOUPSTREAM-ANDROID-cpuidle-CPU-Idle-related-vendor-hooks.patch b/android-mainline/NOUPSTREAM-ANDROID-cpuidle-CPU-Idle-related-vendor-hooks.patch
new file mode 100644
index 0000000..603371d
--- /dev/null
+++ b/android-mainline/NOUPSTREAM-ANDROID-cpuidle-CPU-Idle-related-vendor-hooks.patch
@@ -0,0 +1,205 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Park Bumgyu <bumgyu.park@samsung.com>
+Date: Thu, 20 Aug 2020 11:17:23 +0900
+Subject: NOUPSTREAM: ANDROID: cpuidle: CPU Idle related vendor hooks
+
+An event that gather the idle state that the cpu attempted to enter and
+actually entered is added. Through this, the idle statistics of the cpu
+can be obtained and used for vendor specific algorithms or for system
+analysis.
+
+[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
+
+Squash
+  NOUPSTREAM: ANDROID: cpuidle-psci: Add vendor hook for cpuidle psci enter and exit
+
+Bug: 162980647
+Bug: 176198732
+Bug: 183690687
+Bug: 192436062
+Bug: 195914333
+Bug: 190353898
+
+Change-Id: I9c2491d524722042e881864488f7b3cf7e903d1e
+Signed-off-by: Park Bumgyu <bumgyu.park@samsung.com>
+---
+ drivers/android/vendor_hooks.c     |  8 ++++++++
+ drivers/cpuidle/cpuidle-psci.c     |  5 +++++
+ drivers/cpuidle/cpuidle.c          | 17 +++++++++++++++--
+ include/trace/hooks/cpuidle.h      | 25 +++++++++++++++++++++++++
+ include/trace/hooks/cpuidle_psci.h | 25 +++++++++++++++++++++++++
+ 5 files changed, 78 insertions(+), 2 deletions(-)
+ create mode 100644 include/trace/hooks/cpuidle.h
+ create mode 100644 include/trace/hooks/cpuidle_psci.h
+
+diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
+--- a/drivers/android/vendor_hooks.c
++++ b/drivers/android/vendor_hooks.c
+@@ -13,6 +13,7 @@
+ #include <trace/hooks/rwsem.h>
+ #include <trace/hooks/futex.h>
+ #include <trace/hooks/dtask.h>
++#include <trace/hooks/cpuidle.h>
+ #include <trace/hooks/mpam.h>
+ #include <trace/hooks/wqlockup.h>
+ #include <trace/hooks/debug.h>
+@@ -25,6 +26,8 @@
+ #include <trace/hooks/iommu.h>
+ #include <trace/hooks/net.h>
+ #include <trace/hooks/timer.h>
++#include <trace/hooks/pm_domain.h>
++#include <trace/hooks/cpuidle_psci.h>
+ 
+ /*
+  * Export tracepoints that act as a bare tracehook (ie: have no trace event
+@@ -54,6 +57,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_finish);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_start);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
+@@ -114,6 +119,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_allow_domain_state);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpuidle_psci_enter);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpuidle_psci_exit);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
+diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c
+--- a/drivers/cpuidle/cpuidle-psci.c
++++ b/drivers/cpuidle/cpuidle-psci.c
+@@ -25,6 +25,7 @@
+ #include <linux/string.h>
+ 
+ #include <asm/cpuidle.h>
++#include <trace/hooks/cpuidle_psci.h>
+ 
+ #include "cpuidle-psci.h"
+ #include "dt_idle_states.h"
+@@ -67,6 +68,8 @@ static int __psci_enter_domain_idle_state(struct cpuidle_device *dev,
+ 	if (ret)
+ 		return -1;
+ 
++	trace_android_vh_cpuidle_psci_enter(dev, s2idle);
++
+ 	/* Do runtime PM to manage a hierarchical CPU toplogy. */
+ 	rcu_irq_enter_irqson();
+ 	if (s2idle)
+@@ -88,6 +91,8 @@ static int __psci_enter_domain_idle_state(struct cpuidle_device *dev,
+ 		pm_runtime_get_sync(pd_dev);
+ 	rcu_irq_exit_irqson();
+ 
++	trace_android_vh_cpuidle_psci_exit(dev, s2idle);
++
+ 	cpu_pm_exit();
+ 
+ 	/* Clear the domain state to start fresh when back from idle. */
+diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
+--- a/drivers/cpuidle/cpuidle.c
++++ b/drivers/cpuidle/cpuidle.c
+@@ -24,6 +24,7 @@
+ #include <linux/tick.h>
+ #include <linux/mmu_context.h>
+ #include <trace/events/power.h>
++#include <trace/hooks/cpuidle.h>
+ 
+ #include "cpuidle.h"
+ 
+@@ -202,10 +203,21 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
+ {
+ 	int entered_state;
+ 
+-	struct cpuidle_state *target_state = &drv->states[index];
+-	bool broadcast = !!(target_state->flags & CPUIDLE_FLAG_TIMER_STOP);
++	struct cpuidle_state *target_state;
++	bool broadcast;
+ 	ktime_t time_start, time_end;
+ 
++	/*
++	 * The vendor hook may modify index, which means target_state and
++	 * broadcast must be assigned after the vendor hook.
++	 */
++	trace_android_vh_cpu_idle_enter(&index, dev);
++	if (index < 0)
++		return index;
++
++	target_state = &drv->states[index];
++	broadcast = !!(target_state->flags & CPUIDLE_FLAG_TIMER_STOP);
++
+ 	/*
+ 	 * Tell the time framework to switch to a broadcast timer because our
+ 	 * local timer will be shut down.  If a local timer is used from another
+@@ -242,6 +254,7 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
+ 	sched_clock_idle_wakeup_event();
+ 	time_end = ns_to_ktime(local_clock());
+ 	trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
++	trace_android_vh_cpu_idle_exit(entered_state, dev);
+ 
+ 	/* The cpu is no longer idle or about to enter idle. */
+ 	sched_idle_set_state(NULL);
+diff --git a/include/trace/hooks/cpuidle.h b/include/trace/hooks/cpuidle.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/cpuidle.h
+@@ -0,0 +1,25 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM cpuidle
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_CPUIDLE_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_CPUIDLE_H
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++struct cpuidle_device;
++
++DECLARE_HOOK(android_vh_cpu_idle_enter,
++	TP_PROTO(int *state, struct cpuidle_device *dev),
++	TP_ARGS(state, dev))
++DECLARE_HOOK(android_vh_cpu_idle_exit,
++	TP_PROTO(int state, struct cpuidle_device *dev),
++	TP_ARGS(state, dev))
++
++#endif /* _TRACE_HOOK_CPUIDLE_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
++
+diff --git a/include/trace/hooks/cpuidle_psci.h b/include/trace/hooks/cpuidle_psci.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/cpuidle_psci.h
+@@ -0,0 +1,25 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM cpuidle_psci
++#define TRACE_INCLUDE_PATH trace/hooks
++#if !defined(_TRACE_HOOK_CPUIDLE_PSCI_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_CPUIDLE_PSCI_H
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++/*
++ * Following tracepoints are not exported in tracefs and provide a
++ * mechanism for vendor modules to hook and extend functionality
++ */
++
++struct cpuidle_device;
++DECLARE_HOOK(android_vh_cpuidle_psci_enter,
++	TP_PROTO(struct cpuidle_device *dev, bool s2idle),
++	TP_ARGS(dev, s2idle));
++
++DECLARE_HOOK(android_vh_cpuidle_psci_exit,
++	TP_PROTO(struct cpuidle_device *dev, bool s2idle),
++	TP_ARGS(dev, s2idle));
++
++#endif /* _TRACE_HOOK_CPUIDLE_PSCI_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-cpuidle-psci-Add-vendor-hook-for-cpuidle-psci-enter-and-exit.patch b/android-mainline/NOUPSTREAM-ANDROID-cpuidle-psci-Add-vendor-hook-for-cpuidle-psci-enter-and-exit.patch
deleted file mode 100644
index 27987cc..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-cpuidle-psci-Add-vendor-hook-for-cpuidle-psci-enter-and-exit.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Maulik Shah <mkshah@codeaurora.org>
-Date: Tue, 8 Jun 2021 14:33:31 +0530
-Subject: NOUPSTREAM: ANDROID: cpuidle-psci: Add vendor hook for cpuidle psci
- enter and exit
-
-Add vendor hook for cpuidle to allow vendor modules for s2idle
-enhancements.
-
-[CPNOTE: 16/08/21] Lee: Vendor hooks
-
-Bug: 190353898
-Bug: 195914333
-Change-Id: I02b1393e6119e32eae96010ba5951405dbdada2b
-Signed-off-by: Maulik Shah <mkshah@codeaurora.org>
----
- drivers/android/vendor_hooks.c     |  3 +++
- drivers/cpuidle/cpuidle-psci.c     |  5 +++++
- include/trace/hooks/cpuidle_psci.h | 25 +++++++++++++++++++++++++
- 3 files changed, 33 insertions(+)
- create mode 100644 include/trace/hooks/cpuidle_psci.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -35,6 +35,7 @@
- #include <trace/hooks/net.h>
- #include <trace/hooks/timer.h>
- #include <trace/hooks/pm_domain.h>
-+#include <trace/hooks/cpuidle_psci.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -149,6 +150,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_allow_domain_state);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpuidle_psci_enter);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpuidle_psci_exit);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
-diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c
---- a/drivers/cpuidle/cpuidle-psci.c
-+++ b/drivers/cpuidle/cpuidle-psci.c
-@@ -25,6 +25,7 @@
- #include <linux/string.h>
- 
- #include <asm/cpuidle.h>
-+#include <trace/hooks/cpuidle_psci.h>
- 
- #include "cpuidle-psci.h"
- #include "dt_idle_states.h"
-@@ -67,6 +68,8 @@ static int __psci_enter_domain_idle_state(struct cpuidle_device *dev,
- 	if (ret)
- 		return -1;
- 
-+	trace_android_vh_cpuidle_psci_enter(dev, s2idle);
-+
- 	/* Do runtime PM to manage a hierarchical CPU toplogy. */
- 	rcu_irq_enter_irqson();
- 	if (s2idle)
-@@ -88,6 +91,8 @@ static int __psci_enter_domain_idle_state(struct cpuidle_device *dev,
- 		pm_runtime_get_sync(pd_dev);
- 	rcu_irq_exit_irqson();
- 
-+	trace_android_vh_cpuidle_psci_exit(dev, s2idle);
-+
- 	cpu_pm_exit();
- 
- 	/* Clear the domain state to start fresh when back from idle. */
-diff --git a/include/trace/hooks/cpuidle_psci.h b/include/trace/hooks/cpuidle_psci.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/cpuidle_psci.h
-@@ -0,0 +1,25 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM cpuidle_psci
-+#define TRACE_INCLUDE_PATH trace/hooks
-+#if !defined(_TRACE_HOOK_CPUIDLE_PSCI_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_CPUIDLE_PSCI_H
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+/*
-+ * Following tracepoints are not exported in tracefs and provide a
-+ * mechanism for vendor modules to hook and extend functionality
-+ */
-+
-+struct cpuidle_device;
-+DECLARE_HOOK(android_vh_cpuidle_psci_enter,
-+	TP_PROTO(struct cpuidle_device *dev, bool s2idle),
-+	TP_ARGS(dev, s2idle));
-+
-+DECLARE_HOOK(android_vh_cpuidle_psci_exit,
-+	TP_PROTO(struct cpuidle_device *dev, bool s2idle),
-+	TP_ARGS(dev, s2idle));
-+
-+#endif /* _TRACE_HOOK_CPUIDLE_PSCI_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-ftrace-vendor-hook-for-ftrace-dump-on-oops.patch b/android-mainline/NOUPSTREAM-ANDROID-ftrace-vendor-hook-for-ftrace-dump-on-oops.patch
deleted file mode 100644
index 70eb022..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-ftrace-vendor-hook-for-ftrace-dump-on-oops.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Prateek Sood <prsood@codeaurora.org>
-Date: Mon, 28 Dec 2020 17:46:43 +0530
-Subject: NOUPSTREAM: ANDROID: ftrace: vendor hook for ftrace dump on oops
-
-Add following vendor hooks in ftrace oops path to allow
-vendor modules to get ftrace buffer data.
-
-1) android_vh_ftrace_oops_enter
-2) android_vh_ftrace_size_check
-3) android_vh_ftrace_format_check
-4) android_vh_ftrace_dump_buffer
-5) android_vh_ftrace_oops_exit
-
-Ftrace dump on oops can be controlled with kernel command
-line parameter ftrace_dump_on_oops.
-
-[CPNOTE: 02/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 177387994
-Change-Id: I898026bfc3e5c5c5ab1eaa0e86a019a6a720408e
-Signed-off-by: Prateek Sood <prsood@codeaurora.org>
-Signed-off-by: Mukesh Ojha <mojha@codeaurora.org>
----
- drivers/android/vendor_hooks.c    |  6 ++++
- include/trace/hooks/ftrace_dump.h | 50 +++++++++++++++++++++++++++++++
- kernel/trace/trace.c              | 37 +++++++++++++++++++++--
- 3 files changed, 91 insertions(+), 2 deletions(-)
- create mode 100644 include/trace/hooks/ftrace_dump.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -21,6 +21,7 @@
- #include <trace/hooks/printk.h>
- #include <trace/hooks/epoch.h>
- #include <trace/hooks/preemptirq.h>
-+#include <trace/hooks/ftrace_dump.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -101,6 +102,11 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_schedule_bug);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_exec);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_map_util_freq);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_em_cpu_energy);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_enter);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
-diff --git a/include/trace/hooks/ftrace_dump.h b/include/trace/hooks/ftrace_dump.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/ftrace_dump.h
-@@ -0,0 +1,50 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM ftrace_dump
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_FTRACE_DUMP_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_FTRACE_DUMP_H
-+
-+#include <linux/trace_seq.h>
-+#include <linux/trace_events.h>
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
-+
-+DECLARE_HOOK(android_vh_ftrace_oops_enter,
-+	TP_PROTO(bool *ftrace_check),
-+	TP_ARGS(ftrace_check));
-+
-+DECLARE_HOOK(android_vh_ftrace_oops_exit,
-+	TP_PROTO(bool *ftrace_check),
-+	TP_ARGS(ftrace_check));
-+
-+DECLARE_HOOK(android_vh_ftrace_size_check,
-+	TP_PROTO(unsigned long size, bool *ftrace_check),
-+	TP_ARGS(size, ftrace_check));
-+
-+DECLARE_HOOK(android_vh_ftrace_format_check,
-+	TP_PROTO(bool *ftrace_check),
-+	TP_ARGS(ftrace_check));
-+
-+DECLARE_HOOK(android_vh_ftrace_dump_buffer,
-+	TP_PROTO(struct trace_seq *trace_buf, bool *dump_printk),
-+	TP_ARGS(trace_buf, dump_printk));
-+
-+#else
-+
-+#define trace_android_vh_ftrace_oops_enter(ftrace_check)
-+#define trace_android_vh_ftrace_oops_exit(ftrace_check)
-+#define trace_android_vh_ftrace_size_check(size, ftrace_check)
-+#define trace_android_vh_ftrace_format_check(ftrace_check)
-+#define trace_android_vh_ftrace_dump_buffer(trace_buf, dump_printk)
-+
-+#endif
-+
-+#endif /* _TRACE_HOOK_FTRACE_DUMP_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
---- a/kernel/trace/trace.c
-+++ b/kernel/trace/trace.c
-@@ -49,6 +49,7 @@
- #include <linux/fsnotify.h>
- #include <linux/irq_work.h>
- #include <linux/workqueue.h>
-+#include <trace/hooks/ftrace_dump.h>
- 
- #include "trace.h"
- #include "trace_output.h"
-@@ -9718,8 +9719,17 @@ fs_initcall(tracer_init_tracefs);
- static int trace_panic_handler(struct notifier_block *this,
- 			       unsigned long event, void *unused)
- {
-+	bool ftrace_check = false;
-+
-+	trace_android_vh_ftrace_oops_enter(&ftrace_check);
-+
-+	if (ftrace_check)
-+		return NOTIFY_OK;
-+
- 	if (ftrace_dump_on_oops)
- 		ftrace_dump(ftrace_dump_on_oops);
-+
-+	trace_android_vh_ftrace_oops_exit(&ftrace_check);
- 	return NOTIFY_OK;
- }
- 
-@@ -9733,6 +9743,13 @@ static int trace_die_handler(struct notifier_block *self,
- 			     unsigned long val,
- 			     void *data)
- {
-+	bool ftrace_check = false;
-+
-+	trace_android_vh_ftrace_oops_enter(&ftrace_check);
-+
-+	if (ftrace_check)
-+		return NOTIFY_OK;
-+
- 	switch (val) {
- 	case DIE_OOPS:
- 		if (ftrace_dump_on_oops)
-@@ -9741,6 +9758,8 @@ static int trace_die_handler(struct notifier_block *self,
- 	default:
- 		break;
- 	}
-+
-+	trace_android_vh_ftrace_oops_exit(&ftrace_check);
- 	return NOTIFY_OK;
- }
- 
-@@ -9765,6 +9784,8 @@ static struct notifier_block trace_die_notifier = {
- void
- trace_printk_seq(struct trace_seq *s)
- {
-+	bool dump_printk = true;
-+
- 	/* Probably should print a warning here. */
- 	if (s->seq.len >= TRACE_MAX_PRINT)
- 		s->seq.len = TRACE_MAX_PRINT;
-@@ -9780,7 +9801,9 @@ trace_printk_seq(struct trace_seq *s)
- 	/* should be zero ended, but we are paranoid. */
- 	s->buffer[s->seq.len] = 0;
- 
--	printk(KERN_TRACE "%s", s->buffer);
-+	trace_android_vh_ftrace_dump_buffer(s, &dump_printk);
-+	if (dump_printk)
-+		printk(KERN_TRACE "%s", s->buffer);
- 
- 	trace_seq_init(s);
- }
-@@ -9813,6 +9836,8 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
- 	unsigned int old_userobj;
- 	unsigned long flags;
- 	int cnt = 0, cpu;
-+	bool ftrace_check = false;
-+	unsigned long size;
- 
- 	/* Only allow one dump user at a time. */
- 	if (atomic_inc_return(&dump_running) != 1) {
-@@ -9842,6 +9867,8 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
- 
- 	for_each_tracing_cpu(cpu) {
- 		atomic_inc(&per_cpu_ptr(iter.array_buffer->data, cpu)->disabled);
-+		size = ring_buffer_size(iter.array_buffer->buffer, cpu);
-+		trace_android_vh_ftrace_size_check(size, &ftrace_check);
- 	}
- 
- 	old_userobj = tr->trace_flags & TRACE_ITER_SYM_USEROBJ;
-@@ -9849,6 +9876,9 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
- 	/* don't look at user memory in panic mode */
- 	tr->trace_flags &= ~TRACE_ITER_SYM_USEROBJ;
- 
-+	if (ftrace_check)
-+		goto out_enable;
-+
- 	switch (oops_dump_mode) {
- 	case DUMP_ALL:
- 		iter.cpu_file = RING_BUFFER_ALL_CPUS;
-@@ -9879,6 +9909,7 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
- 	 */
- 
- 	while (!trace_empty(&iter)) {
-+		ftrace_check = true;
- 
- 		if (!cnt)
- 			printk(KERN_TRACE "---------------------------------\n");
-@@ -9886,7 +9917,9 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
- 		cnt++;
- 
- 		trace_iterator_reset(&iter);
--		iter.iter_flags |= TRACE_FILE_LAT_FMT;
-+		trace_android_vh_ftrace_format_check(&ftrace_check);
-+		if (ftrace_check)
-+			iter.iter_flags |= TRACE_FILE_LAT_FMT;
- 
- 		if (trace_find_next_entry_inc(&iter) != NULL) {
- 			int ret;
diff --git a/android-mainline/NOUPSTREAM-ANDROID-futex-Add-vendor-hook-for-wait-queue.patch b/android-mainline/NOUPSTREAM-ANDROID-futex-Add-vendor-hook-for-wait-queue.patch
deleted file mode 100644
index 2fca67d..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-futex-Add-vendor-hook-for-wait-queue.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: JianMin Liu <jian-min.liu@mediatek.com>
-Date: Tue, 11 Aug 2020 15:24:06 +0800
-Subject: NOUPSTREAM: ANDROID: futex: Add vendor hook for wait queue
-
-Add the hook for the waiter list of futex to allow
-vendor perform wait queue enhancement
-
-[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
-
-Bug: 163431711
-
-Signed-off-by: JianMin Liu <jian-min.liu@mediatek.com>
-Change-Id: I68218b89c35b23aa5529099bb0bbbd031bdeafef
----
- drivers/android/vendor_hooks.c |  2 ++
- include/trace/hooks/futex.h    | 22 ++++++++++++++++++++++
- kernel/futex.c                 |  6 +++++-
- 3 files changed, 29 insertions(+), 1 deletion(-)
- create mode 100644 include/trace/hooks/futex.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -10,6 +10,7 @@
- #include <trace/hooks/vendor_hooks.h>
- #include <trace/hooks/fpsimd.h>
- #include <trace/hooks/rwsem.h>
-+#include <trace/hooks/futex.h>
- #include <trace/hooks/mpam.h>
- #include <trace/hooks/debug.h>
- 
-@@ -22,5 +23,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_init);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
-diff --git a/include/trace/hooks/futex.h b/include/trace/hooks/futex.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/futex.h
-@@ -0,0 +1,22 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM futex
-+#undef TRACE_INCLUDE_PATH
-+#define TRACE_INCLUDE_PATH trace/hooks
-+#if !defined(_TRACE_HOOK_FUTEX_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_FUTEX_H
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+#include <linux/plist.h>
-+/*
-+ * Following tracepoints are not exported in tracefs and provide a
-+ * mechanism for vendor modules to hook and extend functionality
-+ */
-+DECLARE_HOOK(android_vh_alter_futex_plist_add,
-+	TP_PROTO(struct plist_node *node,
-+		 struct plist_head *head,
-+		 bool *already_on_hb),
-+	TP_ARGS(node, head, already_on_hb));
-+#endif /* _TRACE_HOOK_FUTEX_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-diff --git a/kernel/futex.c b/kernel/futex.c
---- a/kernel/futex.c
-+++ b/kernel/futex.c
-@@ -43,6 +43,7 @@
- #include <asm/futex.h>
- 
- #include "locking/rtmutex_common.h"
-+#include <trace/hooks/futex.h>
- 
- /*
-  * READ this before attempting to hack on futexes!
-@@ -2475,6 +2476,7 @@ queue_unlock(struct futex_hash_bucket *hb)
- static inline void __queue_me(struct futex_q *q, struct futex_hash_bucket *hb)
- {
- 	int prio;
-+	bool already_on_hb = false;
- 
- 	/*
- 	 * The priority used to register this element is
-@@ -2487,7 +2489,9 @@ static inline void __queue_me(struct futex_q *q, struct futex_hash_bucket *hb)
- 	prio = min(current->normal_prio, MAX_RT_PRIO);
- 
- 	plist_node_init(&q->list, prio);
--	plist_add(&q->list, &hb->chain);
-+	trace_android_vh_alter_futex_plist_add(&q->list, &hb->chain, &already_on_hb);
-+	if (!already_on_hb)
-+		plist_add(&q->list, &hb->chain);
- 	q->task = current;
- }
- 
diff --git a/android-mainline/NOUPSTREAM-ANDROID-gic-Add-vendor-hook-for-gic-v3-resume.patch b/android-mainline/NOUPSTREAM-ANDROID-gic-Add-vendor-hook-for-gic-v3-resume.patch
deleted file mode 100644
index d90b2b8..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-gic-Add-vendor-hook-for-gic-v3-resume.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Elliot Berman <eberman@codeaurora.org>
-Date: Mon, 14 Sep 2020 15:35:41 -0700
-Subject: NOUPSTREAM: ANDROID: gic: Add vendor hook for gic-v3 resume
-
-Add vendor hook for gic-v3 resume to allow vendor GIC enhancement.
-
-[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 168730134
-Change-Id: Id3298715355c8f592f58393db6aa903b18dd812c
-Signed-off-by: Elliot Berman <eberman@codeaurora.org>
----
- drivers/android/vendor_hooks.c |  2 ++
- drivers/irqchip/irq-gic-v3.c   | 24 ++++++++++++++++++++++++
- include/trace/hooks/gic.h      | 21 +++++++++++++++++++++
- 3 files changed, 47 insertions(+)
- create mode 100644 include/trace/hooks/gic.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -17,6 +17,7 @@
- #include <trace/hooks/cpuidle.h>
- #include <trace/hooks/topology.h>
- #include <trace/hooks/mpam.h>
-+#include <trace/hooks/gic.h>
- #include <trace/hooks/wqlockup.h>
- #include <trace/hooks/debug.h>
- #include <trace/hooks/printk.h>
-@@ -64,6 +65,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dump_throttled_rt_tasks);
-diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
---- a/drivers/irqchip/irq-gic-v3.c
-+++ b/drivers/irqchip/irq-gic-v3.c
-@@ -18,6 +18,7 @@
- #include <linux/percpu.h>
- #include <linux/refcount.h>
- #include <linux/slab.h>
-+#include <linux/syscore_ops.h>
- #include <linux/wakeup_reason.h>
- 
- 
-@@ -31,6 +32,8 @@
- #include <asm/smp_plat.h>
- #include <asm/virt.h>
- 
-+#include <trace/hooks/gic.h>
-+
- #include "irq-gic-common.h"
- 
- #define GICD_INT_NMI_PRI	(GICD_INT_DEF_PRI & ~0x80)
-@@ -1317,6 +1320,26 @@ static void gic_cpu_pm_init(void)
- static inline void gic_cpu_pm_init(void) { }
- #endif /* CONFIG_CPU_PM */
- 
-+#ifdef CONFIG_PM
-+static void gic_resume(void)
-+{
-+	trace_android_vh_gic_resume(gic_data.domain, gic_data.dist_base);
-+}
-+
-+static struct syscore_ops gic_syscore_ops = {
-+	.resume = gic_resume,
-+};
-+
-+static void gic_syscore_init(void)
-+{
-+	register_syscore_ops(&gic_syscore_ops);
-+}
-+
-+#else
-+static inline void gic_syscore_init(void) { }
-+#endif
-+
-+
- static struct irq_chip gic_chip = {
- 	.name			= "GICv3",
- 	.irq_mask		= gic_mask_irq,
-@@ -1801,6 +1824,7 @@ static int __init gic_init_bases(void __iomem *dist_base,
- 	gic_cpu_init();
- 	gic_smp_init();
- 	gic_cpu_pm_init();
-+	gic_syscore_init();
- 
- 	if (gic_dist_supports_lpis()) {
- 		its_init(handle, &gic_data.rdists, gic_data.domain);
-diff --git a/include/trace/hooks/gic.h b/include/trace/hooks/gic.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/gic.h
-@@ -0,0 +1,21 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM gic
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_GIC_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_GIC_H
-+
-+#include <linux/irqdomain.h>
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+DECLARE_HOOK(android_vh_gic_resume,
-+	TP_PROTO(struct irq_domain *domain, void __iomem *dist_base),
-+	TP_ARGS(domain, dist_base));
-+
-+#endif /* _TRACE_HOOK_GIC_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-gic-v3-Add-vendor-hook-to-GIC-v3.patch b/android-mainline/NOUPSTREAM-ANDROID-gic-v3-Add-vendor-hook-to-GIC-v3.patch
deleted file mode 100644
index c14f612..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-gic-v3-Add-vendor-hook-to-GIC-v3.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Neeraj Upadhyay <neeraju@codeaurora.org>
-Date: Fri, 6 Nov 2020 16:32:22 +0530
-Subject: NOUPSTREAM: ANDROID: gic-v3: Add vendor hook to GIC v3
-
-Add vendor hook for affinity settings to GIC v3 irqchip
-driver.
-
-[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 172637074
-Change-Id: I65ec8bedcb88c680ba1d6fcd2ffc5944c5a8a89c
-Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
-Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
----
- drivers/android/vendor_hooks.c |  3 +++
- drivers/irqchip/irq-gic-v3.c   | 10 ++++++++--
- include/trace/hooks/gic_v3.h   | 25 +++++++++++++++++++++++++
- 3 files changed, 36 insertions(+), 2 deletions(-)
- create mode 100644 include/trace/hooks/gic_v3.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -22,6 +22,7 @@
- #include <trace/hooks/debug.h>
- #include <trace/hooks/sysrqcrash.h>
- #include <trace/hooks/printk.h>
-+#include <trace/hooks/gic_v3.h>
- #include <trace/hooks/epoch.h>
- #include <trace/hooks/cpufreq.h>
- #include <trace/hooks/mm.h>
-@@ -74,6 +75,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sysrq_crash);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dump_throttled_rt_tasks);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_jiffies_update);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_set_affinity);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_affinity_init);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_suspend_epoch_val);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_max_freq);
-diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
---- a/drivers/irqchip/irq-gic-v3.c
-+++ b/drivers/irqchip/irq-gic-v3.c
-@@ -20,6 +20,7 @@
- #include <linux/slab.h>
- #include <linux/syscore_ops.h>
- #include <linux/wakeup_reason.h>
-+#include <trace/hooks/gic_v3.h>
- 
- 
- #include <linux/irqchip.h>
-@@ -830,11 +831,15 @@ static void __init gic_dist_init(void)
- 	 * enabled.
- 	 */
- 	affinity = gic_mpidr_to_affinity(cpu_logical_map(smp_processor_id()));
--	for (i = 32; i < GIC_LINE_NR; i++)
-+	for (i = 32; i < GIC_LINE_NR; i++) {
-+		trace_android_vh_gic_v3_affinity_init(i, GICD_IROUTER, &affinity);
- 		gic_write_irouter(affinity, base + GICD_IROUTER + i * 8);
-+	}
- 
--	for (i = 0; i < GIC_ESPI_NR; i++)
-+	for (i = 0; i < GIC_ESPI_NR; i++) {
-+		trace_android_vh_gic_v3_affinity_init(i, GICD_IROUTERnE, &affinity);
- 		gic_write_irouter(affinity, base + GICD_IROUTERnE + i * 8);
-+	}
- }
- 
- static int gic_iterate_rdists(int (*fn)(struct redist_region *, void __iomem *))
-@@ -1266,6 +1271,7 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
- 	reg = gic_dist_base(d) + offset + (index * 8);
- 	val = gic_mpidr_to_affinity(cpu_logical_map(cpu));
- 
-+	trace_android_vh_gic_v3_set_affinity(d, mask_val, &val);
- 	gic_write_irouter(val, reg);
- 
- 	/*
-diff --git a/include/trace/hooks/gic_v3.h b/include/trace/hooks/gic_v3.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/gic_v3.h
-@@ -0,0 +1,25 @@
-+/* SPDX-License-Identifier: GPL-2.0-only */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM gic_v3
-+#define TRACE_INCLUDE_PATH trace/hooks
-+#if !defined(_TRACE_HOOK_GIC_V3_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_GIC_V3_H
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+/*
-+ * Following tracepoints are not exported in tracefs and provide a
-+ * mechanism for vendor modules to hook and extend functionality
-+ */
-+struct irq_data;
-+struct cpumask;
-+DECLARE_HOOK(android_vh_gic_v3_affinity_init,
-+	TP_PROTO(int irq, u32 offset, u64 *affinity),
-+	TP_ARGS(irq, offset, affinity));
-+DECLARE_HOOK(android_vh_gic_v3_set_affinity,
-+	TP_PROTO(struct irq_data *d, const struct cpumask *mask_val,
-+		 u64 *affinity),
-+	TP_ARGS(d, mask_val, affinity));
-+
-+#endif /* _TRACE_HOOK_GIC_V3_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-iommu-Add-vendor-hook-for-setting-up-DMA-ops-for-IOMMU-clients.patch b/android-mainline/NOUPSTREAM-ANDROID-iommu-Add-vendor-hook-for-setting-up-DMA-ops-for-IOMMU-clients.patch
deleted file mode 100644
index d584a0b..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-iommu-Add-vendor-hook-for-setting-up-DMA-ops-for-IOMMU-clients.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Patrick Daly <pdaly@codeaurora.org>
-Date: Wed, 3 Feb 2021 15:47:52 -0800
-Subject: NOUPSTREAM: ANDROID: iommu: Add vendor hook for setting up DMA ops
- for IOMMU clients
-
-Add vendor hook for arch_setup_dma_ops to allow vendor enhancement. This
-hook can be used to setup vendor-specific DMA ops for certain IOMMU
-clients based on their IOMMU configuration.
-
-[CPNOTE: 04/08/21] Lee: Vendor hooks
-
-Bug: 179291683
-Bug: 195574584
-
-Change-Id: Ie847a14d6536eb151cbd0a93452f6895ee451930
-Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
-Signed-off-by: Chris Goldsworthy <cgoldswo@codeaurora.org>
-(cherry picked from commit 575ad9a2638d4d1ecd2063c1007a7bb71186ff38)
-Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
----
- arch/arm64/mm/dma-mapping.c    |  5 ++++-
- drivers/android/vendor_hooks.c |  2 ++
- include/trace/hooks/iommu.h    | 30 ++++++++++++++++++++++++++++++
- 3 files changed, 36 insertions(+), 1 deletion(-)
- create mode 100644 include/trace/hooks/iommu.h
-
-diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
---- a/arch/arm64/mm/dma-mapping.c
-+++ b/arch/arm64/mm/dma-mapping.c
-@@ -10,6 +10,7 @@
- #include <linux/dma-iommu.h>
- #include <xen/xen.h>
- #include <xen/swiotlb-xen.h>
-+#include <trace/hooks/iommu.h>
- 
- #include <asm/cacheflush.h>
- 
-@@ -49,8 +50,10 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
- 		   ARCH_DMA_MINALIGN, cls);
- 
- 	dev->dma_coherent = coherent;
--	if (iommu)
-+	if (iommu) {
- 		iommu_setup_dma_ops(dev, dma_base, dma_base + size - 1);
-+		trace_android_vh_iommu_setup_dma_ops(dev, dma_base, dma_base + size - 1);
-+	}
- 
- #ifdef CONFIG_XEN
- 	if (xen_swiotlb_detect())
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -30,6 +30,7 @@
- #include <trace/hooks/ftrace_dump.h>
- #include <trace/hooks/cgroup.h>
- #include <trace/hooks/sys.h>
-+#include <trace/hooks/iommu.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -131,6 +132,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
-diff --git a/include/trace/hooks/iommu.h b/include/trace/hooks/iommu.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/iommu.h
-@@ -0,0 +1,30 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM iommu
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_IOMMU_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_IOMMU_H
-+
-+#include <linux/types.h>
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
-+
-+DECLARE_HOOK(android_vh_iommu_setup_dma_ops,
-+	TP_PROTO(struct device *dev, u64 dma_base, u64 dma_limit),
-+	TP_ARGS(dev, dma_base, dma_limit));
-+
-+#else
-+
-+#define trace_android_vh_iommu_setup_dma_ops(dev, dma_base, dma_limit)
-+
-+#endif
-+
-+#endif /* _TRACE_HOOK_IOMMU_H */
-+
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-irqchip-IRQ-Chip-releated-vendor-hooks.patch b/android-mainline/NOUPSTREAM-ANDROID-irqchip-IRQ-Chip-releated-vendor-hooks.patch
new file mode 100644
index 0000000..c341a2c
--- /dev/null
+++ b/android-mainline/NOUPSTREAM-ANDROID-irqchip-IRQ-Chip-releated-vendor-hooks.patch
@@ -0,0 +1,194 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Elliot Berman <eberman@codeaurora.org>
+Date: Mon, 14 Sep 2020 15:35:41 -0700
+Subject: NOUPSTREAM: ANDROID: irqchip: IRQ Chip releated vendor hooks
+
+Add vendor hook for gic-v3 resume to allow vendor GIC enhancement.
+
+[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
+
+Squash
+  NOUPSTREAM: ANDROID: gic-v3: Add vendor hook to GIC v3
+
+Bug: 168730134
+Bug: 172637074
+Change-Id: Id3298715355c8f592f58393db6aa903b18dd812c
+Signed-off-by: Elliot Berman <eberman@codeaurora.org>
+---
+ drivers/android/vendor_hooks.c |  5 +++++
+ drivers/irqchip/irq-gic-v3.c   | 34 ++++++++++++++++++++++++++++++++--
+ include/trace/hooks/gic.h      | 21 +++++++++++++++++++++
+ include/trace/hooks/gic_v3.h   | 25 +++++++++++++++++++++++++
+ 4 files changed, 83 insertions(+), 2 deletions(-)
+ create mode 100644 include/trace/hooks/gic.h
+ create mode 100644 include/trace/hooks/gic_v3.h
+
+diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
+--- a/drivers/android/vendor_hooks.c
++++ b/drivers/android/vendor_hooks.c
+@@ -17,9 +17,11 @@
+ #include <trace/hooks/cpuidle.h>
+ #include <trace/hooks/topology.h>
+ #include <trace/hooks/mpam.h>
++#include <trace/hooks/gic.h>
+ #include <trace/hooks/wqlockup.h>
+ #include <trace/hooks/debug.h>
+ #include <trace/hooks/printk.h>
++#include <trace/hooks/gic_v3.h>
+ #include <trace/hooks/epoch.h>
+ #include <trace/hooks/mm.h>
+ #include <trace/hooks/preemptirq.h>
+@@ -69,11 +71,14 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dump_throttled_rt_tasks);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_jiffies_update);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_set_affinity);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_affinity_init);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_suspend_epoch_val);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_newidle_balance);
+diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
+--- a/drivers/irqchip/irq-gic-v3.c
++++ b/drivers/irqchip/irq-gic-v3.c
+@@ -18,7 +18,9 @@
+ #include <linux/percpu.h>
+ #include <linux/refcount.h>
+ #include <linux/slab.h>
++#include <linux/syscore_ops.h>
+ #include <linux/wakeup_reason.h>
++#include <trace/hooks/gic_v3.h>
+ 
+ 
+ #include <linux/irqchip.h>
+@@ -31,6 +33,8 @@
+ #include <asm/smp_plat.h>
+ #include <asm/virt.h>
+ 
++#include <trace/hooks/gic.h>
++
+ #include "irq-gic-common.h"
+ 
+ #define GICD_INT_NMI_PRI	(GICD_INT_DEF_PRI & ~0x80)
+@@ -827,11 +831,15 @@ static void __init gic_dist_init(void)
+ 	 * enabled.
+ 	 */
+ 	affinity = gic_mpidr_to_affinity(cpu_logical_map(smp_processor_id()));
+-	for (i = 32; i < GIC_LINE_NR; i++)
++	for (i = 32; i < GIC_LINE_NR; i++) {
++		trace_android_vh_gic_v3_affinity_init(i, GICD_IROUTER, &affinity);
+ 		gic_write_irouter(affinity, base + GICD_IROUTER + i * 8);
++	}
+ 
+-	for (i = 0; i < GIC_ESPI_NR; i++)
++	for (i = 0; i < GIC_ESPI_NR; i++) {
++		trace_android_vh_gic_v3_affinity_init(i, GICD_IROUTERnE, &affinity);
+ 		gic_write_irouter(affinity, base + GICD_IROUTERnE + i * 8);
++	}
+ }
+ 
+ static int gic_iterate_rdists(int (*fn)(struct redist_region *, void __iomem *))
+@@ -1263,6 +1271,7 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
+ 	reg = gic_dist_base(d) + offset + (index * 8);
+ 	val = gic_mpidr_to_affinity(cpu_logical_map(cpu));
+ 
++	trace_android_vh_gic_v3_set_affinity(d, mask_val, &val);
+ 	gic_write_irouter(val, reg);
+ 
+ 	/*
+@@ -1317,6 +1326,26 @@ static void gic_cpu_pm_init(void)
+ static inline void gic_cpu_pm_init(void) { }
+ #endif /* CONFIG_CPU_PM */
+ 
++#ifdef CONFIG_PM
++static void gic_resume(void)
++{
++	trace_android_vh_gic_resume(gic_data.domain, gic_data.dist_base);
++}
++
++static struct syscore_ops gic_syscore_ops = {
++	.resume = gic_resume,
++};
++
++static void gic_syscore_init(void)
++{
++	register_syscore_ops(&gic_syscore_ops);
++}
++
++#else
++static inline void gic_syscore_init(void) { }
++#endif
++
++
+ static struct irq_chip gic_chip = {
+ 	.name			= "GICv3",
+ 	.irq_mask		= gic_mask_irq,
+@@ -1801,6 +1830,7 @@ static int __init gic_init_bases(void __iomem *dist_base,
+ 	gic_cpu_init();
+ 	gic_smp_init();
+ 	gic_cpu_pm_init();
++	gic_syscore_init();
+ 
+ 	if (gic_dist_supports_lpis()) {
+ 		its_init(handle, &gic_data.rdists, gic_data.domain);
+diff --git a/include/trace/hooks/gic.h b/include/trace/hooks/gic.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/gic.h
+@@ -0,0 +1,21 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM gic
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_GIC_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_GIC_H
++
++#include <linux/irqdomain.h>
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++DECLARE_HOOK(android_vh_gic_resume,
++	TP_PROTO(struct irq_domain *domain, void __iomem *dist_base),
++	TP_ARGS(domain, dist_base));
++
++#endif /* _TRACE_HOOK_GIC_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/gic_v3.h b/include/trace/hooks/gic_v3.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/gic_v3.h
+@@ -0,0 +1,25 @@
++/* SPDX-License-Identifier: GPL-2.0-only */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM gic_v3
++#define TRACE_INCLUDE_PATH trace/hooks
++#if !defined(_TRACE_HOOK_GIC_V3_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_GIC_V3_H
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++/*
++ * Following tracepoints are not exported in tracefs and provide a
++ * mechanism for vendor modules to hook and extend functionality
++ */
++struct irq_data;
++struct cpumask;
++DECLARE_HOOK(android_vh_gic_v3_affinity_init,
++	TP_PROTO(int irq, u32 offset, u64 *affinity),
++	TP_ARGS(irq, offset, affinity));
++DECLARE_HOOK(android_vh_gic_v3_set_affinity,
++	TP_PROTO(struct irq_data *d, const struct cpumask *mask_val,
++		 u64 *affinity),
++	TP_ARGS(d, mask_val, affinity));
++
++#endif /* _TRACE_HOOK_GIC_V3_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-kernel-Core-kernel-related-vendor-hooks.patch b/android-mainline/NOUPSTREAM-ANDROID-kernel-Core-kernel-related-vendor-hooks.patch
new file mode 100644
index 0000000..a01e0a9
--- /dev/null
+++ b/android-mainline/NOUPSTREAM-ANDROID-kernel-Core-kernel-related-vendor-hooks.patch
@@ -0,0 +1,1116 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: JianMin Liu <jian-min.liu@mediatek.com>
+Date: Tue, 21 Jul 2020 13:36:22 +0800
+Subject: NOUPSTREAM: ANDROID: kernel: Core kernel related vendor hooks
+
+  - Add the hook to apply vendor's performance tune for owner
+    of rwsem.
+
+  - Add the hook for the waiter list of rwsem to allow
+    vendor perform waiting queue enhancement
+
+  - ANDROID_VENDOR_DATA added to rw_semaphore
+
+[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
+
+Squash:
+  NOUPSTREAM: ANDROID: futex: Add vendor hook for wait queue
+  NOUPSTREAM: ANDROID: workqueue: add vendor hook for wq lockup information
+  NOUPSTREAM: ANDROID: printk: add vendor hook for console flush
+  NOUPSTREAM: ANDROID: vendor_hooks: Add hook for jiffies updates
+  NOUPSTREAM: ANDROID: sched_clock: Add vendor hook to print epoch values
+  NOUPSTREAM: ANDROID: sched/cpuset: Add vendor hook to change tasks affinity
+  NOUPSTREAM: ANDROID: tracing: Add restricted vendor hooks for preemptirq events
+  NOUPSTREAM: ANDROID: ftrace: vendor hook for ftrace dump on oops
+  NOUPSTREAM: ANDROID: cgroup: Add vendor hook to the cgroup
+  NOUPSTREAM: ANDROID: Add vendor hooks when syscall prctl finished
+  NOUPSTREAM: ANDROID: timer: Add vendor hook for timer calc index
+
+Bug: 161400830
+Bug: 163431711
+Bug: 169374262
+Bug: 165340180
+Bug: 148928265
+Bug: 172945021
+Bug: 174125747
+Bug: 174541725
+Bug: 177387994
+Bug: 181917687
+Bug: 181819699
+Bug: 178758017
+
+Signed-off-by: JianMin Liu <jian-min.liu@mediatek.com>
+Change-Id: I007a5e26f3db2adaeaf4e5ccea414ce7abfa83b8
+---
+ drivers/android/vendor_hooks.c    | 38 +++++++++++++++++++++++
+ include/linux/rwsem.h             |  2 ++
+ include/trace/hooks/cgroup.h      | 23 ++++++++++++++
+ include/trace/hooks/epoch.h       | 23 ++++++++++++++
+ include/trace/hooks/ftrace_dump.h | 50 +++++++++++++++++++++++++++++++
+ include/trace/hooks/futex.h       | 22 ++++++++++++++
+ include/trace/hooks/preemptirq.h  | 32 ++++++++++++++++++++
+ include/trace/hooks/printk.h      | 19 ++++++++++++
+ include/trace/hooks/rwsem.h       | 32 ++++++++++++++++++++
+ include/trace/hooks/sched.h       |  9 ++++++
+ include/trace/hooks/sys.h         | 17 +++++++++++
+ include/trace/hooks/timer.h       | 19 ++++++++++++
+ include/trace/hooks/wqlockup.h    | 20 +++++++++++++
+ kernel/cgroup/cgroup-v1.c         |  2 ++
+ kernel/cgroup/cgroup.c            |  4 +++
+ kernel/cgroup/cpuset.c            | 18 +++++++++--
+ kernel/futex.c                    |  6 +++-
+ kernel/locking/rwsem.c            | 20 +++++++++++--
+ kernel/printk/printk.c            |  8 +++++
+ kernel/sys.c                      |  3 ++
+ kernel/time/sched_clock.c         |  3 ++
+ kernel/time/tick-common.c         |  2 ++
+ kernel/time/tick-sched.c          |  5 +++-
+ kernel/time/timer.c               |  3 ++
+ kernel/trace/trace.c              | 37 +++++++++++++++++++++--
+ kernel/trace/trace_preemptirq.c   | 40 ++++++++++++++++++++-----
+ kernel/workqueue.c                |  5 ++++
+ 27 files changed, 446 insertions(+), 16 deletions(-)
+ create mode 100644 include/trace/hooks/cgroup.h
+ create mode 100644 include/trace/hooks/epoch.h
+ create mode 100644 include/trace/hooks/ftrace_dump.h
+ create mode 100644 include/trace/hooks/futex.h
+ create mode 100644 include/trace/hooks/preemptirq.h
+ create mode 100644 include/trace/hooks/printk.h
+ create mode 100644 include/trace/hooks/rwsem.h
+ create mode 100644 include/trace/hooks/sys.h
+ create mode 100644 include/trace/hooks/timer.h
+ create mode 100644 include/trace/hooks/wqlockup.h
+
+diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
+--- a/drivers/android/vendor_hooks.c
++++ b/drivers/android/vendor_hooks.c
+@@ -10,10 +10,21 @@
+ #include <trace/hooks/vendor_hooks.h>
+ #include <trace/hooks/sched.h>
+ #include <trace/hooks/fpsimd.h>
++#include <trace/hooks/rwsem.h>
++#include <trace/hooks/futex.h>
+ #include <trace/hooks/dtask.h>
+ #include <trace/hooks/mpam.h>
++#include <trace/hooks/wqlockup.h>
+ #include <trace/hooks/debug.h>
++#include <trace/hooks/printk.h>
++#include <trace/hooks/epoch.h>
++#include <trace/hooks/preemptirq.h>
++#include <trace/hooks/ftrace_dump.h>
++#include <trace/hooks/cgroup.h>
++#include <trace/hooks/sys.h>
+ #include <trace/hooks/iommu.h>
++#include <trace/hooks/net.h>
++#include <trace/hooks/timer.h>
+ 
+ /*
+  * Export tracepoints that act as a bare tracehook (ie: have no trace event
+@@ -33,14 +44,25 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_finish_prio_fork);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_user_nice);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_setscheduler);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_init);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_start);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_finish);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_start);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dump_throttled_rt_tasks);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_jiffies_update);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_suspend_epoch_val);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_newidle_balance);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_nohz_balancer_kick);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_queue);
+@@ -50,6 +72,11 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_sugov_sched_attr);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_sugov_update);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_setaffinity);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpus_allowed);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_preempt_disable);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_preempt_enable);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_disable);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_enable);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_task_cpu);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_try_to_wake_up);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_try_to_wake_up_success);
+@@ -75,7 +102,18 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_schedule_bug);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_exec);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_map_util_freq);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_em_cpu_energy);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_enter);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
+diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
+--- a/include/linux/rwsem.h
++++ b/include/linux/rwsem.h
+@@ -32,6 +32,7 @@
+ #ifdef CONFIG_RWSEM_SPIN_ON_OWNER
+ #include <linux/osq_lock.h>
+ #endif
++#include <linux/android_vendor.h>
+ 
+ /*
+  * For an uncontended rwsem, count and owner are the only fields a task
+@@ -64,6 +65,7 @@ struct rw_semaphore {
+ #ifdef CONFIG_DEBUG_LOCK_ALLOC
+ 	struct lockdep_map	dep_map;
+ #endif
++	ANDROID_VENDOR_DATA(1);
+ };
+ 
+ /* In all implementations count != 0 means locked */
+diff --git a/include/trace/hooks/cgroup.h b/include/trace/hooks/cgroup.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/cgroup.h
+@@ -0,0 +1,23 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM cgroup
++#undef TRACE_INCLUDE_PATH
++#define TRACE_INCLUDE_PATH trace/hooks
++#if !defined(_TRACE_HOOK_CGROUP_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_CGROUP_H
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++struct task_struct;
++DECLARE_HOOK(android_vh_cgroup_set_task,
++	TP_PROTO(int ret, struct task_struct *task),
++	TP_ARGS(ret, task));
++
++struct cgroup_subsys;
++struct cgroup_taskset;
++DECLARE_HOOK(android_vh_cgroup_attach,
++	TP_PROTO(struct cgroup_subsys *ss, struct cgroup_taskset *tset),
++	TP_ARGS(ss, tset))
++#endif
++
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/epoch.h b/include/trace/hooks/epoch.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/epoch.h
+@@ -0,0 +1,23 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM epoch
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_EPOCH_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_EPOCH_H
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++DECLARE_HOOK(android_vh_show_suspend_epoch_val,
++	TP_PROTO(u64 suspend_ns, u64 suspend_cycles),
++	TP_ARGS(suspend_ns, suspend_cycles));
++
++DECLARE_HOOK(android_vh_show_resume_epoch_val,
++	TP_PROTO(u64 resume_cycles),
++	TP_ARGS(resume_cycles));
++
++#endif /* _TRACE_HOOK_EPOCH_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/ftrace_dump.h b/include/trace/hooks/ftrace_dump.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/ftrace_dump.h
+@@ -0,0 +1,50 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM ftrace_dump
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_FTRACE_DUMP_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_FTRACE_DUMP_H
++
++#include <linux/trace_seq.h>
++#include <linux/trace_events.h>
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
++
++DECLARE_HOOK(android_vh_ftrace_oops_enter,
++	TP_PROTO(bool *ftrace_check),
++	TP_ARGS(ftrace_check));
++
++DECLARE_HOOK(android_vh_ftrace_oops_exit,
++	TP_PROTO(bool *ftrace_check),
++	TP_ARGS(ftrace_check));
++
++DECLARE_HOOK(android_vh_ftrace_size_check,
++	TP_PROTO(unsigned long size, bool *ftrace_check),
++	TP_ARGS(size, ftrace_check));
++
++DECLARE_HOOK(android_vh_ftrace_format_check,
++	TP_PROTO(bool *ftrace_check),
++	TP_ARGS(ftrace_check));
++
++DECLARE_HOOK(android_vh_ftrace_dump_buffer,
++	TP_PROTO(struct trace_seq *trace_buf, bool *dump_printk),
++	TP_ARGS(trace_buf, dump_printk));
++
++#else
++
++#define trace_android_vh_ftrace_oops_enter(ftrace_check)
++#define trace_android_vh_ftrace_oops_exit(ftrace_check)
++#define trace_android_vh_ftrace_size_check(size, ftrace_check)
++#define trace_android_vh_ftrace_format_check(ftrace_check)
++#define trace_android_vh_ftrace_dump_buffer(trace_buf, dump_printk)
++
++#endif
++
++#endif /* _TRACE_HOOK_FTRACE_DUMP_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/futex.h b/include/trace/hooks/futex.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/futex.h
+@@ -0,0 +1,22 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM futex
++#undef TRACE_INCLUDE_PATH
++#define TRACE_INCLUDE_PATH trace/hooks
++#if !defined(_TRACE_HOOK_FUTEX_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_FUTEX_H
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++#include <linux/plist.h>
++/*
++ * Following tracepoints are not exported in tracefs and provide a
++ * mechanism for vendor modules to hook and extend functionality
++ */
++DECLARE_HOOK(android_vh_alter_futex_plist_add,
++	TP_PROTO(struct plist_node *node,
++		 struct plist_head *head,
++		 bool *already_on_hb),
++	TP_ARGS(node, head, already_on_hb));
++#endif /* _TRACE_HOOK_FUTEX_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/preemptirq.h b/include/trace/hooks/preemptirq.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/preemptirq.h
+@@ -0,0 +1,32 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM preemptirq
++
++#undef TRACE_INCLUDE_PATH
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_PREEMPTIRQ_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_PREEMPTIRQ_H
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++DECLARE_RESTRICTED_HOOK(android_rvh_preempt_disable,
++	TP_PROTO(unsigned long ip, unsigned long parent_ip),
++	TP_ARGS(ip, parent_ip), 1);
++
++DECLARE_RESTRICTED_HOOK(android_rvh_preempt_enable,
++	TP_PROTO(unsigned long ip, unsigned long parent_ip),
++	TP_ARGS(ip, parent_ip), 1);
++
++DECLARE_RESTRICTED_HOOK(android_rvh_irqs_disable,
++	TP_PROTO(unsigned long ip, unsigned long parent_ip),
++	TP_ARGS(ip, parent_ip), 1);
++
++DECLARE_RESTRICTED_HOOK(android_rvh_irqs_enable,
++	TP_PROTO(unsigned long ip, unsigned long parent_ip),
++	TP_ARGS(ip, parent_ip), 1);
++
++#endif /* _TRACE_HOOK_PREEMPTIRQ_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/printk.h b/include/trace/hooks/printk.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/printk.h
+@@ -0,0 +1,19 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM printk
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_PRINTK_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_PRINTK_H
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++DECLARE_HOOK(android_vh_printk_hotplug,
++	TP_PROTO(int *flag),
++	TP_ARGS(flag));
++
++#endif /* _TRACE_HOOK_PRINTK_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/rwsem.h b/include/trace/hooks/rwsem.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/rwsem.h
+@@ -0,0 +1,32 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM rwsem
++#define TRACE_INCLUDE_PATH trace/hooks
++#if !defined(_TRACE_HOOK_RWSEM_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_RWSEM_H
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++/*
++ * Following tracepoints are not exported in tracefs and provide a
++ * mechanism for vendor modules to hook and extend functionality
++ */
++struct rw_semaphore;
++struct rwsem_waiter;
++DECLARE_HOOK(android_vh_rwsem_init,
++	TP_PROTO(struct rw_semaphore *sem),
++	TP_ARGS(sem));
++DECLARE_HOOK(android_vh_rwsem_wake,
++	TP_PROTO(struct rw_semaphore *sem),
++	TP_ARGS(sem));
++DECLARE_HOOK(android_vh_rwsem_write_finished,
++	TP_PROTO(struct rw_semaphore *sem),
++	TP_ARGS(sem));
++DECLARE_HOOK(android_vh_alter_rwsem_list_add,
++	TP_PROTO(struct rwsem_waiter *waiter,
++		 struct rw_semaphore *sem,
++		 bool *already_on_list),
++	TP_ARGS(waiter, sem, already_on_list));
++
++#endif /* _TRACE_HOOK_RWSEM_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h
+--- a/include/trace/hooks/sched.h
++++ b/include/trace/hooks/sched.h
+@@ -75,6 +75,10 @@ DECLARE_HOOK(android_vh_dump_throttled_rt_tasks,
+ 			s64 rt_period_timer_expires),
+ 	TP_ARGS(cpu, clock, rt_period, rt_runtime, rt_period_timer_expires));
+ 
++DECLARE_HOOK(android_vh_jiffies_update,
++	TP_PROTO(void *unused),
++	TP_ARGS(unused));
++
+ struct rq_flags;
+ DECLARE_RESTRICTED_HOOK(android_rvh_sched_newidle_balance,
+ 	TP_PROTO(struct rq *this_rq, struct rq_flags *rf,
+@@ -115,6 +119,11 @@ DECLARE_RESTRICTED_HOOK(android_rvh_sched_setaffinity,
+ 	TP_PROTO(struct task_struct *p, const struct cpumask *in_mask, int *retval),
+ 	TP_ARGS(p, in_mask, retval), 1);
+ 
++DECLARE_RESTRICTED_HOOK(android_rvh_update_cpus_allowed,
++	TP_PROTO(struct task_struct *p, cpumask_var_t cpus_requested,
++		 const struct cpumask *new_mask, int *ret),
++	TP_ARGS(p, cpus_requested, new_mask, ret), 1);
++
+ DECLARE_RESTRICTED_HOOK(android_rvh_set_task_cpu,
+ 	TP_PROTO(struct task_struct *p, unsigned int new_cpu),
+ 	TP_ARGS(p, new_cpu), 1);
+diff --git a/include/trace/hooks/sys.h b/include/trace/hooks/sys.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/sys.h
+@@ -0,0 +1,17 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM sys
++#undef TRACE_INCLUDE_PATH
++#define TRACE_INCLUDE_PATH trace/hooks
++#if !defined(_TRACE_HOOK_SYS_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_SYS_H
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++struct task_struct;
++DECLARE_HOOK(android_vh_syscall_prctl_finished,
++	TP_PROTO(int option, struct task_struct *task),
++	TP_ARGS(option, task));
++#endif
++
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/timer.h b/include/trace/hooks/timer.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/timer.h
+@@ -0,0 +1,19 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM timer
++
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_TIMER_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_TIMER_H
++
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++
++DECLARE_HOOK(android_vh_timer_calc_index,
++	TP_PROTO(unsigned int lvl, unsigned long *expires),
++	TP_ARGS(lvl, expires));
++
++#endif /* _TRACE_HOOK_TIMER_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/include/trace/hooks/wqlockup.h b/include/trace/hooks/wqlockup.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/wqlockup.h
+@@ -0,0 +1,20 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM wqlockup
++#define TRACE_INCLUDE_PATH trace/hooks
++
++#if !defined(_TRACE_HOOK_WQLOCKUP_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_WQLOCKUP_H
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++/*
++ * Following tracepoints are not exported in tracefs and provide a
++ * mechanism for vendor modules to hook and extend functionality
++ */
++DECLARE_HOOK(android_vh_wq_lockup_pool,
++	TP_PROTO(int cpu, unsigned long pool_ts),
++	TP_ARGS(cpu, pool_ts));
++
++#endif /* _TRACE_HOOK_WQLOCKUP_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
+diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c
+--- a/kernel/cgroup/cgroup-v1.c
++++ b/kernel/cgroup/cgroup-v1.c
+@@ -17,6 +17,7 @@
+ #include <linux/fs_parser.h>
+ 
+ #include <trace/events/cgroup.h>
++#include <trace/hooks/cgroup.h>
+ 
+ /*
+  * pidlists linger the following amount before being destroyed.  The goal
+@@ -522,6 +523,7 @@ static ssize_t __cgroup1_procs_write(struct kernfs_open_file *of,
+ 		goto out_finish;
+ 
+ 	ret = cgroup_attach_task(cgrp, task, threadgroup);
++	trace_android_vh_cgroup_set_task(ret, task);
+ 
+ out_finish:
+ 	cgroup_procs_write_finish(task, locked);
+diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
+--- a/kernel/cgroup/cgroup.c
++++ b/kernel/cgroup/cgroup.c
+@@ -61,6 +61,9 @@
+ 
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/cgroup.h>
++#undef CREATE_TRACE_POINTS
++
++#include <trace/hooks/cgroup.h>
+ 
+ #define CGROUP_FILE_NAME_MAX		(MAX_CGROUP_TYPE_NAMELEN +	\
+ 					 MAX_CFTYPE_NAME + 2)
+@@ -2487,6 +2490,7 @@ static int cgroup_migrate_execute(struct cgroup_mgctx *mgctx)
+ 		do_each_subsys_mask(ss, ssid, mgctx->ss_mask) {
+ 			if (ss->attach) {
+ 				tset->ssid = ssid;
++				trace_android_vh_cgroup_attach(ss, tset);
+ 				ss->attach(tset);
+ 			}
+ 		} while_each_subsys_mask();
+diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
+--- a/kernel/cgroup/cpuset.c
++++ b/kernel/cgroup/cpuset.c
+@@ -66,6 +66,8 @@
+ #include <linux/cgroup.h>
+ #include <linux/wait.h>
+ 
++#include <trace/hooks/sched.h>
++
+ DEFINE_STATIC_KEY_FALSE(cpusets_pre_enable_key);
+ DEFINE_STATIC_KEY_FALSE(cpusets_enabled_key);
+ 
+@@ -1070,6 +1072,18 @@ void rebuild_sched_domains(void)
+ 	cpus_read_unlock();
+ }
+ 
++static int update_cpus_allowed(struct cpuset *cs, struct task_struct *p,
++				const struct cpumask *new_mask)
++{
++	int ret = -EINVAL;
++
++	trace_android_rvh_update_cpus_allowed(p, cs->cpus_requested, new_mask, &ret);
++	if (!ret)
++		return ret;
++
++	return set_cpus_allowed_ptr(p, new_mask);
++}
++
+ /**
+  * update_tasks_cpumask - Update the cpumasks of tasks in the cpuset.
+  * @cs: the cpuset in which each task's cpus_allowed mask needs to be changed
+@@ -1085,7 +1099,7 @@ static void update_tasks_cpumask(struct cpuset *cs)
+ 
+ 	css_task_iter_start(&cs->css, 0, &it);
+ 	while ((task = css_task_iter_next(&it)))
+-		set_cpus_allowed_ptr(task, cs->effective_cpus);
++		update_cpus_allowed(cs, task, cs->effective_cpus);
+ 	css_task_iter_end(&it);
+ }
+ 
+@@ -2250,7 +2264,7 @@ static void cpuset_attach(struct cgroup_taskset *tset)
+ 		 * can_attach beforehand should guarantee that this doesn't
+ 		 * fail.  TODO: have a better way to handle failure here
+ 		 */
+-		WARN_ON_ONCE(set_cpus_allowed_ptr(task, cpus_attach));
++		WARN_ON_ONCE(update_cpus_allowed(cs, task, cpus_attach));
+ 
+ 		cpuset_change_task_nodemask(task, &cpuset_attach_nodemask_to);
+ 		cpuset_update_task_spread_flag(cs, task);
+diff --git a/kernel/futex.c b/kernel/futex.c
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -43,6 +43,7 @@
+ #include <asm/futex.h>
+ 
+ #include "locking/rtmutex_common.h"
++#include <trace/hooks/futex.h>
+ 
+ /*
+  * READ this before attempting to hack on futexes!
+@@ -2475,6 +2476,7 @@ queue_unlock(struct futex_hash_bucket *hb)
+ static inline void __queue_me(struct futex_q *q, struct futex_hash_bucket *hb)
+ {
+ 	int prio;
++	bool already_on_hb = false;
+ 
+ 	/*
+ 	 * The priority used to register this element is
+@@ -2487,7 +2489,9 @@ static inline void __queue_me(struct futex_q *q, struct futex_hash_bucket *hb)
+ 	prio = min(current->normal_prio, MAX_RT_PRIO);
+ 
+ 	plist_node_init(&q->list, prio);
+-	plist_add(&q->list, &hb->chain);
++	trace_android_vh_alter_futex_plist_add(&q->list, &hb->chain, &already_on_hb);
++	if (!already_on_hb)
++		plist_add(&q->list, &hb->chain);
+ 	q->task = current;
+ }
+ 
+diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
+--- a/kernel/locking/rwsem.c
++++ b/kernel/locking/rwsem.c
+@@ -30,6 +30,7 @@
+ 
+ #ifndef CONFIG_PREEMPT_RT
+ #include "lock_events.h"
++#include <trace/hooks/rwsem.h>
+ #include <trace/hooks/dtask.h>
+ 
+ /*
+@@ -323,6 +324,7 @@ void __init_rwsem(struct rw_semaphore *sem, const char *name,
+ #ifdef CONFIG_RWSEM_SPIN_ON_OWNER
+ 	osq_lock_init(&sem->osq);
+ #endif
++	trace_android_vh_rwsem_init(sem);
+ }
+ EXPORT_SYMBOL(__init_rwsem);
+ 
+@@ -898,6 +900,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
+ 	struct rwsem_waiter waiter;
+ 	DEFINE_WAKE_Q(wake_q);
+ 	bool wake = false;
++	bool already_on_list = false;
+ 
+ 	/*
+ 	 * To prevent a constant stream of readers from starving a sleeping
+@@ -954,7 +957,11 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
+ 		}
+ 		adjustment += RWSEM_FLAG_WAITERS;
+ 	}
+-	list_add_tail(&waiter.list, &sem->wait_list);
++	trace_android_vh_alter_rwsem_list_add(
++					&waiter,
++					sem, &already_on_list);
++	if (!already_on_list)
++		list_add_tail(&waiter.list, &sem->wait_list);
+ 
+ 	/* we're now waiting on the lock, but no longer actively locking */
+ 	count = atomic_long_add_return(adjustment, &sem->count);
+@@ -973,6 +980,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
+ 		    (adjustment & RWSEM_FLAG_WAITERS)))
+ 		rwsem_mark_wake(sem, RWSEM_WAKE_ANY, &wake_q);
+ 
++	trace_android_vh_rwsem_wake(sem);
+ 	raw_spin_unlock_irq(&sem->wait_lock);
+ 	wake_up_q(&wake_q);
+ 
+@@ -1025,6 +1033,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
+ 	struct rwsem_waiter waiter;
+ 	struct rw_semaphore *ret = sem;
+ 	DEFINE_WAKE_Q(wake_q);
++	bool already_on_list = false;
+ 
+ 	/* do optimistic spinning and steal lock if possible */
+ 	if (rwsem_can_spin_on_owner(sem) && rwsem_optimistic_spin(sem)) {
+@@ -1045,7 +1054,11 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
+ 	/* account for this before adding a new element to the list */
+ 	wstate = list_empty(&sem->wait_list) ? WRITER_FIRST : WRITER_NOT_FIRST;
+ 
+-	list_add_tail(&waiter.list, &sem->wait_list);
++	trace_android_vh_alter_rwsem_list_add(
++					&waiter,
++					sem, &already_on_list);
++	if (!already_on_list)
++		list_add_tail(&waiter.list, &sem->wait_list);
+ 
+ 	/* we're now waiting on the lock */
+ 	if (wstate == WRITER_NOT_FIRST) {
+@@ -1081,6 +1094,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
+ 	}
+ 
+ wait:
++	trace_android_vh_rwsem_wake(sem);
+ 	/* wait until we successfully acquire the lock */
+ 	trace_android_vh_rwsem_write_wait_start(sem);
+ 	set_current_state(state);
+@@ -1574,6 +1588,7 @@ EXPORT_SYMBOL(up_read);
+ void up_write(struct rw_semaphore *sem)
+ {
+ 	rwsem_release(&sem->dep_map, _RET_IP_);
++	trace_android_vh_rwsem_write_finished(sem);
+ 	__up_write(sem);
+ }
+ EXPORT_SYMBOL(up_write);
+@@ -1584,6 +1599,7 @@ EXPORT_SYMBOL(up_write);
+ void downgrade_write(struct rw_semaphore *sem)
+ {
+ 	lock_downgrade(&sem->dep_map, _RET_IP_);
++	trace_android_vh_rwsem_write_finished(sem);
+ 	__downgrade_write(sem);
+ }
+ EXPORT_SYMBOL(downgrade_write);
+diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
+--- a/kernel/printk/printk.c
++++ b/kernel/printk/printk.c
+@@ -54,6 +54,8 @@
+ #include <trace/events/initcall.h>
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/printk.h>
++#undef CREATE_TRACE_POINTS
++#include <trace/hooks/printk.h>
+ 
+ #include "printk_ringbuffer.h"
+ #include "console_cmdline.h"
+@@ -2500,6 +2502,12 @@ void resume_console(void)
+  */
+ static int console_cpu_notify(unsigned int cpu)
+ {
++	int flag = 0;
++
++	trace_android_vh_printk_hotplug(&flag);
++	if (flag)
++		return 0;
++
+ 	if (!cpuhp_tasks_frozen) {
+ 		/* If trylock fails, someone else is doing the printing */
+ 		if (console_trylock())
+diff --git a/kernel/sys.c b/kernel/sys.c
+--- a/kernel/sys.c
++++ b/kernel/sys.c
+@@ -76,6 +76,8 @@
+ 
+ #include "uid16.h"
+ 
++#include <trace/hooks/sys.h>
++
+ #ifndef SET_UNALIGN_CTL
+ # define SET_UNALIGN_CTL(a, b)	(-EINVAL)
+ #endif
+@@ -2686,6 +2688,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
+ 		error = -EINVAL;
+ 		break;
+ 	}
++	trace_android_vh_syscall_prctl_finished(option, me);
+ 	return error;
+ }
+ 
+diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c
+--- a/kernel/time/sched_clock.c
++++ b/kernel/time/sched_clock.c
+@@ -16,6 +16,7 @@
+ #include <linux/sched_clock.h>
+ #include <linux/seqlock.h>
+ #include <linux/bitops.h>
++#include <trace/hooks/epoch.h>
+ 
+ #include "timekeeping.h"
+ 
+@@ -270,6 +271,7 @@ int sched_clock_suspend(void)
+ 	update_sched_clock();
+ 	hrtimer_cancel(&sched_clock_timer);
+ 	rd->read_sched_clock = suspended_sched_clock_read;
++	trace_android_vh_show_suspend_epoch_val(rd->epoch_ns, rd->epoch_cyc);
+ 
+ 	return 0;
+ }
+@@ -281,6 +283,7 @@ void sched_clock_resume(void)
+ 	rd->epoch_cyc = cd.actual_read_sched_clock();
+ 	hrtimer_start(&sched_clock_timer, cd.wrap_kt, HRTIMER_MODE_REL_HARD);
+ 	rd->read_sched_clock = cd.actual_read_sched_clock;
++	trace_android_vh_show_resume_epoch_val(rd->epoch_cyc);
+ }
+ 
+ static struct syscore_ops sched_clock_ops = {
+diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
+--- a/kernel/time/tick-common.c
++++ b/kernel/time/tick-common.c
+@@ -17,6 +17,7 @@
+ #include <linux/sched.h>
+ #include <linux/module.h>
+ #include <trace/events/power.h>
++#include <trace/hooks/sched.h>
+ 
+ #include <asm/irq_regs.h>
+ 
+@@ -95,6 +96,7 @@ static void tick_periodic(int cpu)
+ 		write_seqcount_end(&jiffies_seq);
+ 		raw_spin_unlock(&jiffies_lock);
+ 		update_wall_time();
++		trace_android_vh_jiffies_update(NULL);
+ 	}
+ 
+ 	update_process_times(user_mode(get_irq_regs()));
+diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -26,6 +26,7 @@
+ #include <linux/posix-timers.h>
+ #include <linux/context_tracking.h>
+ #include <linux/mm.h>
++#include <trace/hooks/sched.h>
+ 
+ #include <asm/irq_regs.h>
+ 
+@@ -193,8 +194,10 @@ static void tick_sched_do_timer(struct tick_sched *ts, ktime_t now)
+ #endif
+ 
+ 	/* Check, if the jiffies need an update */
+-	if (tick_do_timer_cpu == cpu)
++	if (tick_do_timer_cpu == cpu) {
+ 		tick_do_update_jiffies64(now);
++		trace_android_vh_jiffies_update(NULL);
++	}
+ 
+ 	if (ts->inidle)
+ 		ts->got_idle_tick = 1;
+diff --git a/kernel/time/timer.c b/kernel/time/timer.c
+--- a/kernel/time/timer.c
++++ b/kernel/time/timer.c
+@@ -55,6 +55,8 @@
+ 
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/timer.h>
++#undef CREATE_TRACE_POINTS
++#include <trace/hooks/timer.h>
+ 
+ __visible u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
+ 
+@@ -503,6 +505,7 @@ static inline unsigned calc_index(unsigned long expires, unsigned lvl,
+ 	 * Round up with level granularity to prevent this.
+ 	 */
+ 	expires = (expires + LVL_GRAN(lvl)) >> LVL_SHIFT(lvl);
++	trace_android_vh_timer_calc_index(lvl, &expires);
+ 	*bucket_expiry = expires << LVL_SHIFT(lvl);
+ 	return LVL_OFFS(lvl) + (expires & LVL_MASK);
+ }
+diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
+--- a/kernel/trace/trace.c
++++ b/kernel/trace/trace.c
+@@ -49,6 +49,7 @@
+ #include <linux/fsnotify.h>
+ #include <linux/irq_work.h>
+ #include <linux/workqueue.h>
++#include <trace/hooks/ftrace_dump.h>
+ 
+ #include "trace.h"
+ #include "trace_output.h"
+@@ -9718,8 +9719,17 @@ fs_initcall(tracer_init_tracefs);
+ static int trace_panic_handler(struct notifier_block *this,
+ 			       unsigned long event, void *unused)
+ {
++	bool ftrace_check = false;
++
++	trace_android_vh_ftrace_oops_enter(&ftrace_check);
++
++	if (ftrace_check)
++		return NOTIFY_OK;
++
+ 	if (ftrace_dump_on_oops)
+ 		ftrace_dump(ftrace_dump_on_oops);
++
++	trace_android_vh_ftrace_oops_exit(&ftrace_check);
+ 	return NOTIFY_OK;
+ }
+ 
+@@ -9733,6 +9743,13 @@ static int trace_die_handler(struct notifier_block *self,
+ 			     unsigned long val,
+ 			     void *data)
+ {
++	bool ftrace_check = false;
++
++	trace_android_vh_ftrace_oops_enter(&ftrace_check);
++
++	if (ftrace_check)
++		return NOTIFY_OK;
++
+ 	switch (val) {
+ 	case DIE_OOPS:
+ 		if (ftrace_dump_on_oops)
+@@ -9741,6 +9758,8 @@ static int trace_die_handler(struct notifier_block *self,
+ 	default:
+ 		break;
+ 	}
++
++	trace_android_vh_ftrace_oops_exit(&ftrace_check);
+ 	return NOTIFY_OK;
+ }
+ 
+@@ -9765,6 +9784,8 @@ static struct notifier_block trace_die_notifier = {
+ void
+ trace_printk_seq(struct trace_seq *s)
+ {
++	bool dump_printk = true;
++
+ 	/* Probably should print a warning here. */
+ 	if (s->seq.len >= TRACE_MAX_PRINT)
+ 		s->seq.len = TRACE_MAX_PRINT;
+@@ -9780,7 +9801,9 @@ trace_printk_seq(struct trace_seq *s)
+ 	/* should be zero ended, but we are paranoid. */
+ 	s->buffer[s->seq.len] = 0;
+ 
+-	printk(KERN_TRACE "%s", s->buffer);
++	trace_android_vh_ftrace_dump_buffer(s, &dump_printk);
++	if (dump_printk)
++		printk(KERN_TRACE "%s", s->buffer);
+ 
+ 	trace_seq_init(s);
+ }
+@@ -9813,6 +9836,8 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
+ 	unsigned int old_userobj;
+ 	unsigned long flags;
+ 	int cnt = 0, cpu;
++	bool ftrace_check = false;
++	unsigned long size;
+ 
+ 	/* Only allow one dump user at a time. */
+ 	if (atomic_inc_return(&dump_running) != 1) {
+@@ -9842,6 +9867,8 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
+ 
+ 	for_each_tracing_cpu(cpu) {
+ 		atomic_inc(&per_cpu_ptr(iter.array_buffer->data, cpu)->disabled);
++		size = ring_buffer_size(iter.array_buffer->buffer, cpu);
++		trace_android_vh_ftrace_size_check(size, &ftrace_check);
+ 	}
+ 
+ 	old_userobj = tr->trace_flags & TRACE_ITER_SYM_USEROBJ;
+@@ -9849,6 +9876,9 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
+ 	/* don't look at user memory in panic mode */
+ 	tr->trace_flags &= ~TRACE_ITER_SYM_USEROBJ;
+ 
++	if (ftrace_check)
++		goto out_enable;
++
+ 	switch (oops_dump_mode) {
+ 	case DUMP_ALL:
+ 		iter.cpu_file = RING_BUFFER_ALL_CPUS;
+@@ -9879,6 +9909,7 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
+ 	 */
+ 
+ 	while (!trace_empty(&iter)) {
++		ftrace_check = true;
+ 
+ 		if (!cnt)
+ 			printk(KERN_TRACE "---------------------------------\n");
+@@ -9886,7 +9917,9 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
+ 		cnt++;
+ 
+ 		trace_iterator_reset(&iter);
+-		iter.iter_flags |= TRACE_FILE_LAT_FMT;
++		trace_android_vh_ftrace_format_check(&ftrace_check);
++		if (ftrace_check)
++			iter.iter_flags |= TRACE_FILE_LAT_FMT;
+ 
+ 		if (trace_find_next_entry_inc(&iter) != NULL) {
+ 			int ret;
+diff --git a/kernel/trace/trace_preemptirq.c b/kernel/trace/trace_preemptirq.c
+--- a/kernel/trace/trace_preemptirq.c
++++ b/kernel/trace/trace_preemptirq.c
+@@ -14,6 +14,8 @@
+ 
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/preemptirq.h>
++#undef CREATE_TRACE_POINTS
++#include <trace/hooks/preemptirq.h>
+ 
+ #ifdef CONFIG_TRACE_IRQFLAGS
+ /* Per-cpu variable to prevent redundant calls when IRQs already off */
+@@ -28,8 +30,11 @@ static DEFINE_PER_CPU(int, tracing_irq_cpu);
+ void trace_hardirqs_on_prepare(void)
+ {
+ 	if (this_cpu_read(tracing_irq_cpu)) {
+-		if (!in_nmi())
++		if (!in_nmi()) {
+ 			trace_irq_enable(CALLER_ADDR0, CALLER_ADDR1);
++			trace_android_rvh_irqs_enable(CALLER_ADDR0,
++						      CALLER_ADDR1);
++		}
+ 		tracer_hardirqs_on(CALLER_ADDR0, CALLER_ADDR1);
+ 		this_cpu_write(tracing_irq_cpu, 0);
+ 	}
+@@ -40,8 +45,11 @@ NOKPROBE_SYMBOL(trace_hardirqs_on_prepare);
+ void trace_hardirqs_on(void)
+ {
+ 	if (this_cpu_read(tracing_irq_cpu)) {
+-		if (!in_nmi())
++		if (!in_nmi()) {
+ 			trace_irq_enable_rcuidle(CALLER_ADDR0, CALLER_ADDR1);
++			trace_android_rvh_irqs_enable(CALLER_ADDR0,
++						      CALLER_ADDR1);
++		}
+ 		tracer_hardirqs_on(CALLER_ADDR0, CALLER_ADDR1);
+ 		this_cpu_write(tracing_irq_cpu, 0);
+ 	}
+@@ -63,8 +71,11 @@ void trace_hardirqs_off_finish(void)
+ 	if (!this_cpu_read(tracing_irq_cpu)) {
+ 		this_cpu_write(tracing_irq_cpu, 1);
+ 		tracer_hardirqs_off(CALLER_ADDR0, CALLER_ADDR1);
+-		if (!in_nmi())
++		if (!in_nmi()) {
+ 			trace_irq_disable(CALLER_ADDR0, CALLER_ADDR1);
++			trace_android_rvh_irqs_disable(CALLER_ADDR0,
++						       CALLER_ADDR1);
++		}
+ 	}
+ 
+ }
+@@ -78,8 +89,11 @@ void trace_hardirqs_off(void)
+ 	if (!this_cpu_read(tracing_irq_cpu)) {
+ 		this_cpu_write(tracing_irq_cpu, 1);
+ 		tracer_hardirqs_off(CALLER_ADDR0, CALLER_ADDR1);
+-		if (!in_nmi())
++		if (!in_nmi()) {
+ 			trace_irq_disable_rcuidle(CALLER_ADDR0, CALLER_ADDR1);
++			trace_android_rvh_irqs_disable(CALLER_ADDR0,
++						       CALLER_ADDR1);
++		}
+ 	}
+ }
+ EXPORT_SYMBOL(trace_hardirqs_off);
+@@ -88,8 +102,11 @@ NOKPROBE_SYMBOL(trace_hardirqs_off);
+ __visible void trace_hardirqs_on_caller(unsigned long caller_addr)
+ {
+ 	if (this_cpu_read(tracing_irq_cpu)) {
+-		if (!in_nmi())
++		if (!in_nmi()) {
+ 			trace_irq_enable_rcuidle(CALLER_ADDR0, caller_addr);
++			trace_android_rvh_irqs_enable(CALLER_ADDR0,
++						      caller_addr);
++		}
+ 		tracer_hardirqs_on(CALLER_ADDR0, caller_addr);
+ 		this_cpu_write(tracing_irq_cpu, 0);
+ 	}
+@@ -107,8 +124,11 @@ __visible void trace_hardirqs_off_caller(unsigned long caller_addr)
+ 	if (!this_cpu_read(tracing_irq_cpu)) {
+ 		this_cpu_write(tracing_irq_cpu, 1);
+ 		tracer_hardirqs_off(CALLER_ADDR0, caller_addr);
+-		if (!in_nmi())
++		if (!in_nmi()) {
+ 			trace_irq_disable_rcuidle(CALLER_ADDR0, caller_addr);
++			trace_android_rvh_irqs_enable(CALLER_ADDR0,
++						      caller_addr);
++		}
+ 	}
+ }
+ EXPORT_SYMBOL(trace_hardirqs_off_caller);
+@@ -119,15 +139,19 @@ NOKPROBE_SYMBOL(trace_hardirqs_off_caller);
+ 
+ void trace_preempt_on(unsigned long a0, unsigned long a1)
+ {
+-	if (!in_nmi())
++	if (!in_nmi()) {
+ 		trace_preempt_enable_rcuidle(a0, a1);
++		trace_android_rvh_preempt_enable(a0, a1);
++	}
+ 	tracer_preempt_on(a0, a1);
+ }
+ 
+ void trace_preempt_off(unsigned long a0, unsigned long a1)
+ {
+-	if (!in_nmi())
++	if (!in_nmi()) {
+ 		trace_preempt_disable_rcuidle(a0, a1);
++		trace_android_rvh_preempt_disable(a0, a1);
++	}
+ 	tracer_preempt_off(a0, a1);
+ }
+ #endif
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -54,6 +54,10 @@
+ 
+ #include "workqueue_internal.h"
+ 
++#include <trace/hooks/wqlockup.h>
++/* events/workqueue.h uses default TRACE_INCLUDE_PATH */
++#undef TRACE_INCLUDE_PATH
++
+ enum {
+ 	/*
+ 	 * worker_pool flags
+@@ -5849,6 +5853,7 @@ static void wq_watchdog_timer_fn(struct timer_list *unused)
+ 			pr_cont_pool_info(pool);
+ 			pr_cont(" stuck for %us!\n",
+ 				jiffies_to_msecs(now - pool_ts) / 1000);
++			trace_android_vh_wq_lockup_pool(pool->cpu, pool_ts);
+ 		}
+ 	}
+ 
diff --git a/android-mainline/NOUPSTREAM-ANDROID-mm-Create-vendor-hooks-to-control-ZONE_MOVABLE-allocations.patch b/android-mainline/NOUPSTREAM-ANDROID-mm-Create-vendor-hooks-to-control-ZONE_MOVABLE-allocations.patch
index b573724..a91e54a 100644
--- a/android-mainline/NOUPSTREAM-ANDROID-mm-Create-vendor-hooks-to-control-ZONE_MOVABLE-allocations.patch
+++ b/android-mainline/NOUPSTREAM-ANDROID-mm-Create-vendor-hooks-to-control-ZONE_MOVABLE-allocations.patch
@@ -38,7 +38,7 @@
  #include <trace/hooks/preemptirq.h>
  #include <trace/hooks/ftrace_dump.h>
  #include <trace/hooks/cgroup.h>
-@@ -75,6 +76,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait);
+@@ -80,6 +81,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_sugov_update);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_setaffinity);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpus_allowed);
diff --git a/android-mainline/NOUPSTREAM-ANDROID-mpam-add-vendor-hook-to-record-MPAM.patch b/android-mainline/NOUPSTREAM-ANDROID-mpam-add-vendor-hook-to-record-MPAM.patch
deleted file mode 100644
index 733cd74..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-mpam-add-vendor-hook-to-record-MPAM.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "C-J.Chen" <C-J.Chen@mediatek.com>
-Date: Tue, 18 Aug 2020 08:38:07 +0800
-Subject: NOUPSTREAM: ANDROID: mpam: add vendor hook to record MPAM
-
-- To use MPAM in kernel task, vendor_hook call is needed to
-  set MPAM at scheduling time.
-- Vendor_hooks is call ed when task is switching for MPAM state
-
-[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
-
-Bug: 165333282
-Signed-off-by: C-J.Chen <C-J.Chen@mediatek.com>
-Change-Id: I30270c667c26e1a7039580b33011665bb3a8cce7
----
- arch/arm64/kernel/process.c    |  7 +++++++
- drivers/android/vendor_hooks.c |  2 ++
- include/trace/hooks/mpam.h     | 21 +++++++++++++++++++++
- 3 files changed, 30 insertions(+)
- create mode 100644 include/trace/hooks/mpam.h
-
-diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
---- a/arch/arm64/kernel/process.c
-+++ b/arch/arm64/kernel/process.c
-@@ -41,6 +41,7 @@
- #include <linux/thread_info.h>
- #include <linux/prctl.h>
- #include <trace/hooks/fpsimd.h>
-+#include <trace/hooks/mpam.h>
- 
- #include <asm/alternative.h>
- #include <asm/compat.h>
-@@ -505,6 +506,12 @@ __notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
- 	erratum_1418040_thread_switch(prev, next);
- 	ptrauth_thread_switch_user(next);
- 
-+	/*
-+	 *  vendor hook is needed before the dsb(),
-+	 *  because MPAM is related to cache maintenance.
-+	 */
-+	trace_android_vh_mpam_set(prev, next);
-+
- 	/*
- 	 * Complete any pending TLB or cache maintenance on this CPU in case
- 	 * the thread migrates to a different CPU.
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -9,9 +9,11 @@
- #define CREATE_TRACE_POINTS
- #include <trace/hooks/vendor_hooks.h>
- #include <trace/hooks/fpsimd.h>
-+#include <trace/hooks/mpam.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-  * associated with them) to allow external modules to probe them.
-  */
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
-diff --git a/include/trace/hooks/mpam.h b/include/trace/hooks/mpam.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/mpam.h
-@@ -0,0 +1,21 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM mpam
-+#undef TRACE_INCLUDE_PATH
-+#define TRACE_INCLUDE_PATH trace/hooks
-+#if !defined(_TRACE_HOOK_MPAM_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_MPAM_H
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+/*
-+ * Following tracepoints are not exported in tracefs and provide a
-+ * mechanism for vendor modules to hook and extend functionality
-+ */
-+struct task_struct;
-+DECLARE_HOOK(android_vh_mpam_set,
-+	TP_PROTO(struct task_struct *prev, struct task_struct *next),
-+	TP_ARGS(prev, next));
-+
-+#endif /* _TRACE_HOOK_MPAM_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-Add-vendor-hook-to-the-net.patch b/android-mainline/NOUPSTREAM-ANDROID-net-NET-related-vendor-hooks.patch
similarity index 71%
rename from android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-Add-vendor-hook-to-the-net.patch
rename to android-mainline/NOUPSTREAM-ANDROID-net-NET-related-vendor-hooks.patch
index 324acf5..8dfc9de 100644
--- a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-Add-vendor-hook-to-the-net.patch
+++ b/android-mainline/NOUPSTREAM-ANDROID-net-NET-related-vendor-hooks.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Bae Soukjin <soukjin.bae@samsung.com>
 Date: Wed, 19 Aug 2020 08:30:51 +0900
-Subject: NOUPSTREAM: ANDROID: vendor_hooks: Add vendor hook to the net
+Subject: NOUPSTREAM: ANDROID: net: NET related vendor hooks
 
   android_vh_ptype_head:
     To add a debugging chain to ptype list
@@ -18,34 +18,13 @@
 (cherry picked from commit d88b2969cfa78608ad4563e5f4fa84497cc0ffa6)
 (cherry picked from commit a8021ba684c584b8a4361d1680f6e466748ab012)
 ---
- drivers/android/vendor_hooks.c |  3 +++
- include/trace/hooks/net.h      | 25 +++++++++++++++++++++++++
- net/core/dev.c                 |  7 +++++++
- net/core/skbuff.c              |  2 ++
- net/ipv4/tcp_input.c           |  2 ++
- 5 files changed, 39 insertions(+)
+ include/trace/hooks/net.h | 25 +++++++++++++++++++++++++
+ net/core/dev.c            |  7 +++++++
+ net/core/skbuff.c         |  2 ++
+ net/ipv4/tcp_input.c      |  2 ++
+ 4 files changed, 36 insertions(+)
  create mode 100644 include/trace/hooks/net.h
 
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -31,6 +31,7 @@
- #include <trace/hooks/cgroup.h>
- #include <trace/hooks/sys.h>
- #include <trace/hooks/iommu.h>
-+#include <trace/hooks/net.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -133,6 +134,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
 diff --git a/include/trace/hooks/net.h b/include/trace/hooks/net.h
 new file mode 100644
 --- /dev/null
diff --git a/android-mainline/NOUPSTREAM-ANDROID-printk-add-vendor-hook-for-console-flush.patch b/android-mainline/NOUPSTREAM-ANDROID-printk-add-vendor-hook-for-console-flush.patch
deleted file mode 100644
index 52c512b..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-printk-add-vendor-hook-for-console-flush.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Prasad Sodagudi <psodagud@codeaurora.org>
-Date: Thu, 22 Oct 2020 04:26:09 -0700
-Subject: NOUPSTREAM: ANDROID: printk: add vendor hook for console flush
-
-Add vendor hook for skipping console flush in cpu hotplug.
-
-[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
-
-Bug: 165340180
-Change-Id: I167e1595bbb50e57371bfabfde638624761d5f8a
-Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
----
- drivers/android/vendor_hooks.c |  2 ++
- include/trace/hooks/printk.h   | 19 +++++++++++++++++++
- kernel/printk/printk.c         |  8 ++++++++
- 3 files changed, 29 insertions(+)
- create mode 100644 include/trace/hooks/printk.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -14,6 +14,7 @@
- #include <trace/hooks/mpam.h>
- #include <trace/hooks/wqlockup.h>
- #include <trace/hooks/debug.h>
-+#include <trace/hooks/printk.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -29,3 +30,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
-diff --git a/include/trace/hooks/printk.h b/include/trace/hooks/printk.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/printk.h
-@@ -0,0 +1,19 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM printk
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_PRINTK_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_PRINTK_H
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+DECLARE_HOOK(android_vh_printk_hotplug,
-+	TP_PROTO(int *flag),
-+	TP_ARGS(flag));
-+
-+#endif /* _TRACE_HOOK_PRINTK_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
---- a/kernel/printk/printk.c
-+++ b/kernel/printk/printk.c
-@@ -54,6 +54,8 @@
- #include <trace/events/initcall.h>
- #define CREATE_TRACE_POINTS
- #include <trace/events/printk.h>
-+#undef CREATE_TRACE_POINTS
-+#include <trace/hooks/printk.h>
- 
- #include "printk_ringbuffer.h"
- #include "console_cmdline.h"
-@@ -2500,6 +2502,12 @@ void resume_console(void)
-  */
- static int console_cpu_notify(unsigned int cpu)
- {
-+	int flag = 0;
-+
-+	trace_android_vh_printk_hotplug(&flag);
-+	if (flag)
-+		return 0;
-+
- 	if (!cpuhp_tasks_frozen) {
- 		/* If trylock fails, someone else is doing the printing */
- 		if (console_trylock())
diff --git a/android-mainline/NOUPSTREAM-ANDROID-rwsem-Add-vendor-hook-to-the-rw-semaphore.patch b/android-mainline/NOUPSTREAM-ANDROID-rwsem-Add-vendor-hook-to-the-rw-semaphore.patch
deleted file mode 100644
index 0e699bc..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-rwsem-Add-vendor-hook-to-the-rw-semaphore.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: JianMin Liu <jian-min.liu@mediatek.com>
-Date: Tue, 21 Jul 2020 13:36:22 +0800
-Subject: NOUPSTREAM: ANDROID: rwsem: Add vendor hook to the rw-semaphore
-
-  - Add the hook to apply vendor's performance tune for owner
-    of rwsem.
-
-  - Add the hook for the waiter list of rwsem to allow
-    vendor perform waiting queue enhancement
-
-  - ANDROID_VENDOR_DATA added to rw_semaphore
-
-[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
-
-Bug: 161400830
-
-Signed-off-by: JianMin Liu <jian-min.liu@mediatek.com>
-Change-Id: I007a5e26f3db2adaeaf4e5ccea414ce7abfa83b8
----
- drivers/android/vendor_hooks.c |  5 +++++
- include/linux/rwsem.h          |  2 ++
- include/trace/hooks/rwsem.h    | 32 ++++++++++++++++++++++++++++++++
- kernel/locking/rwsem.c         | 20 ++++++++++++++++++--
- 4 files changed, 57 insertions(+), 2 deletions(-)
- create mode 100644 include/trace/hooks/rwsem.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -9,6 +9,7 @@
- #define CREATE_TRACE_POINTS
- #include <trace/hooks/vendor_hooks.h>
- #include <trace/hooks/fpsimd.h>
-+#include <trace/hooks/rwsem.h>
- #include <trace/hooks/mpam.h>
- #include <trace/hooks/debug.h>
- 
-@@ -17,5 +18,9 @@
-  * associated with them) to allow external modules to probe them.
-  */
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_init);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
-diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
---- a/include/linux/rwsem.h
-+++ b/include/linux/rwsem.h
-@@ -32,6 +32,7 @@
- #ifdef CONFIG_RWSEM_SPIN_ON_OWNER
- #include <linux/osq_lock.h>
- #endif
-+#include <linux/android_vendor.h>
- 
- /*
-  * For an uncontended rwsem, count and owner are the only fields a task
-@@ -64,6 +65,7 @@ struct rw_semaphore {
- #ifdef CONFIG_DEBUG_LOCK_ALLOC
- 	struct lockdep_map	dep_map;
- #endif
-+	ANDROID_VENDOR_DATA(1);
- };
- 
- /* In all implementations count != 0 means locked */
-diff --git a/include/trace/hooks/rwsem.h b/include/trace/hooks/rwsem.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/rwsem.h
-@@ -0,0 +1,32 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM rwsem
-+#define TRACE_INCLUDE_PATH trace/hooks
-+#if !defined(_TRACE_HOOK_RWSEM_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_RWSEM_H
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+/*
-+ * Following tracepoints are not exported in tracefs and provide a
-+ * mechanism for vendor modules to hook and extend functionality
-+ */
-+struct rw_semaphore;
-+struct rwsem_waiter;
-+DECLARE_HOOK(android_vh_rwsem_init,
-+	TP_PROTO(struct rw_semaphore *sem),
-+	TP_ARGS(sem));
-+DECLARE_HOOK(android_vh_rwsem_wake,
-+	TP_PROTO(struct rw_semaphore *sem),
-+	TP_ARGS(sem));
-+DECLARE_HOOK(android_vh_rwsem_write_finished,
-+	TP_PROTO(struct rw_semaphore *sem),
-+	TP_ARGS(sem));
-+DECLARE_HOOK(android_vh_alter_rwsem_list_add,
-+	TP_PROTO(struct rwsem_waiter *waiter,
-+		 struct rw_semaphore *sem,
-+		 bool *already_on_list),
-+	TP_ARGS(waiter, sem, already_on_list));
-+
-+#endif /* _TRACE_HOOK_RWSEM_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
---- a/kernel/locking/rwsem.c
-+++ b/kernel/locking/rwsem.c
-@@ -30,6 +30,7 @@
- 
- #ifndef CONFIG_PREEMPT_RT
- #include "lock_events.h"
-+#include <trace/hooks/rwsem.h>
- 
- /*
-  * The least significant 2 bits of the owner value has the following
-@@ -322,6 +323,7 @@ void __init_rwsem(struct rw_semaphore *sem, const char *name,
- #ifdef CONFIG_RWSEM_SPIN_ON_OWNER
- 	osq_lock_init(&sem->osq);
- #endif
-+	trace_android_vh_rwsem_init(sem);
- }
- EXPORT_SYMBOL(__init_rwsem);
- 
-@@ -897,6 +899,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
- 	struct rwsem_waiter waiter;
- 	DEFINE_WAKE_Q(wake_q);
- 	bool wake = false;
-+	bool already_on_list = false;
- 
- 	/*
- 	 * To prevent a constant stream of readers from starving a sleeping
-@@ -953,7 +956,11 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
- 		}
- 		adjustment += RWSEM_FLAG_WAITERS;
- 	}
--	list_add_tail(&waiter.list, &sem->wait_list);
-+	trace_android_vh_alter_rwsem_list_add(
-+					&waiter,
-+					sem, &already_on_list);
-+	if (!already_on_list)
-+		list_add_tail(&waiter.list, &sem->wait_list);
- 
- 	/* we're now waiting on the lock, but no longer actively locking */
- 	count = atomic_long_add_return(adjustment, &sem->count);
-@@ -972,6 +979,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
- 		    (adjustment & RWSEM_FLAG_WAITERS)))
- 		rwsem_mark_wake(sem, RWSEM_WAKE_ANY, &wake_q);
- 
-+	trace_android_vh_rwsem_wake(sem);
- 	raw_spin_unlock_irq(&sem->wait_lock);
- 	wake_up_q(&wake_q);
- 
-@@ -1021,6 +1029,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
- 	struct rwsem_waiter waiter;
- 	struct rw_semaphore *ret = sem;
- 	DEFINE_WAKE_Q(wake_q);
-+	bool already_on_list = false;
- 
- 	/* do optimistic spinning and steal lock if possible */
- 	if (rwsem_can_spin_on_owner(sem) && rwsem_optimistic_spin(sem)) {
-@@ -1041,7 +1050,11 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
- 	/* account for this before adding a new element to the list */
- 	wstate = list_empty(&sem->wait_list) ? WRITER_FIRST : WRITER_NOT_FIRST;
- 
--	list_add_tail(&waiter.list, &sem->wait_list);
-+	trace_android_vh_alter_rwsem_list_add(
-+					&waiter,
-+					sem, &already_on_list);
-+	if (!already_on_list)
-+		list_add_tail(&waiter.list, &sem->wait_list);
- 
- 	/* we're now waiting on the lock */
- 	if (wstate == WRITER_NOT_FIRST) {
-@@ -1077,6 +1090,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
- 	}
- 
- wait:
-+	trace_android_vh_rwsem_wake(sem);
- 	/* wait until we successfully acquire the lock */
- 	set_current_state(state);
- 	for (;;) {
-@@ -1567,6 +1581,7 @@ EXPORT_SYMBOL(up_read);
- void up_write(struct rw_semaphore *sem)
- {
- 	rwsem_release(&sem->dep_map, _RET_IP_);
-+	trace_android_vh_rwsem_write_finished(sem);
- 	__up_write(sem);
- }
- EXPORT_SYMBOL(up_write);
-@@ -1577,6 +1592,7 @@ EXPORT_SYMBOL(up_write);
- void downgrade_write(struct rw_semaphore *sem)
- {
- 	lock_downgrade(&sem->dep_map, _RET_IP_);
-+	trace_android_vh_rwsem_write_finished(sem);
- 	__downgrade_write(sem);
- }
- EXPORT_SYMBOL(downgrade_write);
diff --git a/android-mainline/NOUPSTREAM-ANDROID-sched-cpuset-Add-vendor-hook-to-change-tasks-affinity.patch b/android-mainline/NOUPSTREAM-ANDROID-sched-cpuset-Add-vendor-hook-to-change-tasks-affinity.patch
deleted file mode 100644
index de581cd..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-sched-cpuset-Add-vendor-hook-to-change-tasks-affinity.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
-Date: Tue, 24 Nov 2020 03:38:47 -0800
-Subject: NOUPSTREAM: ANDROID: sched/cpuset: Add vendor hook to change tasks
- affinity
-
-Vendors might want to change tasks affinity settings when they are
-moving from one cpuset into the other. Add vendor hook to give control
-to vendor to implement what they need.
-
-[CPNOTE: 02/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 174125747
-Change-Id: Icee0405be0bca432002dae4a26ebe945082ce052
-Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
----
- drivers/android/vendor_hooks.c |  1 +
- include/trace/hooks/sched.h    |  6 ++++++
- kernel/cgroup/cpuset.c         | 18 ++++++++++++++++--
- 3 files changed, 23 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -70,6 +70,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_sugov_sched_attr);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_sugov_update);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_setaffinity);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpus_allowed);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_task_cpu);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_try_to_wake_up);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_try_to_wake_up_success);
-diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h
---- a/include/trace/hooks/sched.h
-+++ b/include/trace/hooks/sched.h
-@@ -120,6 +120,11 @@ DECLARE_RESTRICTED_HOOK(android_rvh_sched_setaffinity,
- 	TP_PROTO(struct task_struct *p, const struct cpumask *in_mask, int *retval),
- 	TP_ARGS(p, in_mask, retval), 1);
- 
-+DECLARE_RESTRICTED_HOOK(android_rvh_update_cpus_allowed,
-+	TP_PROTO(struct task_struct *p, cpumask_var_t cpus_requested,
-+		 const struct cpumask *new_mask, int *ret),
-+	TP_ARGS(p, cpus_requested, new_mask, ret), 1);
-+
- DECLARE_RESTRICTED_HOOK(android_rvh_set_task_cpu,
- 	TP_PROTO(struct task_struct *p, unsigned int new_cpu),
- 	TP_ARGS(p, new_cpu), 1);
-@@ -267,6 +272,7 @@ DECLARE_RESTRICTED_HOOK(android_rvh_replace_next_task_fair,
- #define trace_android_rvh_set_iowait(p, should_iowait_boost)
- #define trace_android_rvh_set_sugov_update(sg_policy, next_freq, should_update)
- #define trace_android_rvh_sched_setaffinity(p, in_mask, retval)
-+#define trace_android_rvh_update_cpus_allowed(p, cpus_requested, new_mask, ret)
- #define trace_android_rvh_cpu_cgroup_attach(tset)
- #endif
- 
-diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
---- a/kernel/cgroup/cpuset.c
-+++ b/kernel/cgroup/cpuset.c
-@@ -66,6 +66,8 @@
- #include <linux/cgroup.h>
- #include <linux/wait.h>
- 
-+#include <trace/hooks/sched.h>
-+
- DEFINE_STATIC_KEY_FALSE(cpusets_pre_enable_key);
- DEFINE_STATIC_KEY_FALSE(cpusets_enabled_key);
- 
-@@ -1070,6 +1072,18 @@ void rebuild_sched_domains(void)
- 	cpus_read_unlock();
- }
- 
-+static int update_cpus_allowed(struct cpuset *cs, struct task_struct *p,
-+				const struct cpumask *new_mask)
-+{
-+	int ret = -EINVAL;
-+
-+	trace_android_rvh_update_cpus_allowed(p, cs->cpus_requested, new_mask, &ret);
-+	if (!ret)
-+		return ret;
-+
-+	return set_cpus_allowed_ptr(p, new_mask);
-+}
-+
- /**
-  * update_tasks_cpumask - Update the cpumasks of tasks in the cpuset.
-  * @cs: the cpuset in which each task's cpus_allowed mask needs to be changed
-@@ -1085,7 +1099,7 @@ static void update_tasks_cpumask(struct cpuset *cs)
- 
- 	css_task_iter_start(&cs->css, 0, &it);
- 	while ((task = css_task_iter_next(&it)))
--		set_cpus_allowed_ptr(task, cs->effective_cpus);
-+		update_cpus_allowed(cs, task, cs->effective_cpus);
- 	css_task_iter_end(&it);
- }
- 
-@@ -2250,7 +2264,7 @@ static void cpuset_attach(struct cgroup_taskset *tset)
- 		 * can_attach beforehand should guarantee that this doesn't
- 		 * fail.  TODO: have a better way to handle failure here
- 		 */
--		WARN_ON_ONCE(set_cpus_allowed_ptr(task, cpus_attach));
-+		WARN_ON_ONCE(update_cpus_allowed(cs, task, cpus_attach));
- 
- 		cpuset_change_task_nodemask(task, &cpuset_attach_nodemask_to);
- 		cpuset_update_task_spread_flag(cs, task);
diff --git a/android-mainline/NOUPSTREAM-ANDROID-sched_clock-Add-vendor-hook-to-print-epoch-values.patch b/android-mainline/NOUPSTREAM-ANDROID-sched_clock-Add-vendor-hook-to-print-epoch-values.patch
deleted file mode 100644
index 4e2750a..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-sched_clock-Add-vendor-hook-to-print-epoch-values.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Murali Nalajala <mnalajal@codeaurora.org>
-Date: Tue, 10 Nov 2020 14:21:37 -0800
-Subject: NOUPSTREAM: ANDROID: sched_clock: Add vendor hook to print epoch
- values
-
-Add vendor hook to print epoch values when system enter and exit
-out of suspend and resume. These epoch values are useful to know
-how long the device is in suspend state. These values can be used
-to synchronize various subsystem timestamps and have an unique
-timestamp to correlate between various subsystems.
-
-[CPNOTE: 02/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 172945021
-Change-Id: I82a01e348d05a46c9c3921869cc9d2fc0fd28867
-Signed-off-by: Murali Nalajala <mnalajal@codeaurora.org>
----
- drivers/android/vendor_hooks.c |  3 +++
- include/trace/hooks/epoch.h    | 23 +++++++++++++++++++++++
- kernel/time/sched_clock.c      |  3 +++
- 3 files changed, 29 insertions(+)
- create mode 100644 include/trace/hooks/epoch.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -19,6 +19,7 @@
- #include <trace/hooks/wqlockup.h>
- #include <trace/hooks/debug.h>
- #include <trace/hooks/printk.h>
-+#include <trace/hooks/epoch.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -58,6 +59,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dump_throttled_rt_tasks);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_jiffies_update);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_suspend_epoch_val);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_newidle_balance);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_nohz_balancer_kick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_queue);
-diff --git a/include/trace/hooks/epoch.h b/include/trace/hooks/epoch.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/epoch.h
-@@ -0,0 +1,23 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM epoch
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_EPOCH_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_EPOCH_H
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+DECLARE_HOOK(android_vh_show_suspend_epoch_val,
-+	TP_PROTO(u64 suspend_ns, u64 suspend_cycles),
-+	TP_ARGS(suspend_ns, suspend_cycles));
-+
-+DECLARE_HOOK(android_vh_show_resume_epoch_val,
-+	TP_PROTO(u64 resume_cycles),
-+	TP_ARGS(resume_cycles));
-+
-+#endif /* _TRACE_HOOK_EPOCH_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c
---- a/kernel/time/sched_clock.c
-+++ b/kernel/time/sched_clock.c
-@@ -16,6 +16,7 @@
- #include <linux/sched_clock.h>
- #include <linux/seqlock.h>
- #include <linux/bitops.h>
-+#include <trace/hooks/epoch.h>
- 
- #include "timekeeping.h"
- 
-@@ -270,6 +271,7 @@ int sched_clock_suspend(void)
- 	update_sched_clock();
- 	hrtimer_cancel(&sched_clock_timer);
- 	rd->read_sched_clock = suspended_sched_clock_read;
-+	trace_android_vh_show_suspend_epoch_val(rd->epoch_ns, rd->epoch_cyc);
- 
- 	return 0;
- }
-@@ -281,6 +283,7 @@ void sched_clock_resume(void)
- 	rd->epoch_cyc = cd.actual_read_sched_clock();
- 	hrtimer_start(&sched_clock_timer, cd.wrap_kt, HRTIMER_MODE_REL_HARD);
- 	rd->read_sched_clock = cd.actual_read_sched_clock;
-+	trace_android_vh_show_resume_epoch_val(rd->epoch_cyc);
- }
- 
- static struct syscore_ops sched_clock_ops = {
diff --git a/android-mainline/NOUPSTREAM-ANDROID-scsi-SCSI-related-vendor-hooks.patch b/android-mainline/NOUPSTREAM-ANDROID-scsi-SCSI-related-vendor-hooks.patch
new file mode 100644
index 0000000..8cd149b
--- /dev/null
+++ b/android-mainline/NOUPSTREAM-ANDROID-scsi-SCSI-related-vendor-hooks.patch
@@ -0,0 +1,278 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Eric Biggers <ebiggers@google.com>
+Date: Sat, 22 Aug 2020 10:47:33 -0700
+Subject: NOUPSTREAM: ANDROID: scsi: SCSI related vendor hooks
+
+Add a 'fill_prdt' Android vendor hook so that UFS platform drivers can
+initialize variant-specific PRDT fields.
+
+This is needed for FMP support.
+
+[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
+
+Squash:
+  NOUPSTREAM: ANDROID: scsi: ufs: add a hook to prepare command
+  NOUPSTREAM: ANDROID: scsi: ufs: add a hook to add sysfs entries
+  NOUPSTREAM: ANDROID: scsi: ufs: add hooks to monitor stats of UFS traffic
+  NOUPSTREAM: ANDROID: scsi: ufs: add hooks to track ufs commands
+
+Bug: 166139333
+Bug: 162257402
+Bug: 181359082
+Bug: 158050260
+Bug: 172874931
+Bug: 172305874
+Bug: 176940922
+Change-Id: Icd07b5e475555ef3eaa0ae9e18a1ae9a4b981679
+Signed-off-by: Eric Biggers <ebiggers@google.com>
+---
+ drivers/android/vendor_hooks.c |  9 ++++++
+ drivers/scsi/ufs/ufs-sysfs.c   | 14 ++++++---
+ drivers/scsi/ufs/ufs-sysfs.h   |  2 +-
+ drivers/scsi/ufs/ufshcd.c      | 27 +++++++++++++++--
+ include/trace/hooks/ufshcd.h   | 54 ++++++++++++++++++++++++++++++++++
+ 5 files changed, 99 insertions(+), 7 deletions(-)
+ create mode 100644 include/trace/hooks/ufshcd.h
+
+diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
+--- a/drivers/android/vendor_hooks.c
++++ b/drivers/android/vendor_hooks.c
+@@ -28,6 +28,7 @@
+ #include <trace/hooks/mm.h>
+ #include <trace/hooks/preemptirq.h>
+ #include <trace/hooks/ftrace_dump.h>
++#include <trace/hooks/ufshcd.h>
+ #include <trace/hooks/cgroup.h>
+ #include <trace/hooks/sys.h>
+ #include <trace/hooks/iommu.h>
+@@ -133,8 +134,16 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_command);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_compl_command);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_uic_command);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_tm_command);
++EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_check_int_errors);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
+diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c
+--- a/drivers/scsi/ufs/ufs-sysfs.c
++++ b/drivers/scsi/ufs/ufs-sysfs.c
+@@ -9,6 +9,8 @@
+ #include "ufs.h"
+ #include "ufs-sysfs.h"
+ 
++#include <trace/hooks/ufshcd.h>
++
+ static const char *ufshcd_uic_link_state_to_string(
+ 			enum uic_link_state state)
+ {
+@@ -1250,15 +1252,19 @@ const struct attribute_group ufs_sysfs_lun_attributes_group = {
+ 	.attrs = ufs_sysfs_lun_attributes,
+ };
+ 
+-void ufs_sysfs_add_nodes(struct device *dev)
++void ufs_sysfs_add_nodes(struct ufs_hba *hba)
+ {
+ 	int ret;
+ 
+-	ret = sysfs_create_groups(&dev->kobj, ufs_sysfs_groups);
+-	if (ret)
+-		dev_err(dev,
++	ret = sysfs_create_groups(&hba->dev->kobj, ufs_sysfs_groups);
++	if (ret) {
++		dev_err(hba->dev,
+ 			"%s: sysfs groups creation failed (err = %d)\n",
+ 			__func__, ret);
++		return;
++	}
++
++	trace_android_vh_ufs_update_sysfs(hba);
+ }
+ 
+ void ufs_sysfs_remove_nodes(struct device *dev)
+diff --git a/drivers/scsi/ufs/ufs-sysfs.h b/drivers/scsi/ufs/ufs-sysfs.h
+--- a/drivers/scsi/ufs/ufs-sysfs.h
++++ b/drivers/scsi/ufs/ufs-sysfs.h
+@@ -9,7 +9,7 @@
+ 
+ #include "ufshcd.h"
+ 
+-void ufs_sysfs_add_nodes(struct device *dev);
++void ufs_sysfs_add_nodes(struct ufs_hba *hba);
+ void ufs_sysfs_remove_nodes(struct device *dev);
+ 
+ extern const struct attribute_group ufs_sysfs_unit_descriptor_group;
+diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
+--- a/drivers/scsi/ufs/ufshcd.c
++++ b/drivers/scsi/ufs/ufshcd.c
+@@ -31,6 +31,9 @@
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/ufs.h>
+ 
++#undef CREATE_TRACE_POINTS
++#include <trace/hooks/ufshcd.h>
++
+ #define UFSHCD_ENABLE_INTRS	(UTP_TRANSFER_REQ_COMPL |\
+ 				 UTP_TASK_REQ_COMPL |\
+ 				 UFSHCD_ERROR_MASK)
+@@ -320,6 +323,8 @@ static void ufshcd_add_tm_upiu_trace(struct ufs_hba *hba, unsigned int tag,
+ {
+ 	struct utp_task_req_desc *descp = &hba->utmrdl_base_addr[tag];
+ 
++	trace_android_vh_ufs_send_tm_command(hba, tag, (int)str_t);
++
+ 	if (!trace_ufshcd_upiu_enabled())
+ 		return;
+ 
+@@ -341,6 +346,8 @@ static void ufshcd_add_uic_command_trace(struct ufs_hba *hba,
+ {
+ 	u32 cmd;
+ 
++	trace_android_vh_ufs_send_uic_command(hba, ucmd, (int)str_t);
++
+ 	if (!trace_ufshcd_uic_command_enabled())
+ 		return;
+ 
+@@ -2091,6 +2098,7 @@ void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
+ 
+ 	lrbp->issue_time_stamp = ktime_get();
+ 	lrbp->compl_time_stamp = ktime_set(0, 0);
++	trace_android_vh_ufs_send_command(hba, lrbp);
+ 	ufshcd_add_command_trace(hba, task_tag, UFS_CMD_SEND);
+ 	ufshcd_clk_scaling_start_busy(hba);
+ 	if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))
+@@ -2352,6 +2360,7 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
+ 	struct scsi_cmnd *cmd;
+ 	int sg_segments;
+ 	int i;
++	int err;
+ 
+ 	cmd = lrbp->cmd;
+ 	sg_segments = scsi_dma_map(cmd);
+@@ -2383,7 +2392,9 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
+ 		lrbp->utr_descriptor_ptr->prd_table_length = 0;
+ 	}
+ 
+-	return 0;
++	err = 0;
++	trace_android_vh_ufs_fill_prdt(hba, lrbp, sg_segments, &err);
++	return err;
+ }
+ 
+ /**
+@@ -2736,6 +2747,14 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
+ 
+ 	ufshcd_prepare_lrbp_crypto(scsi_cmd_to_rq(cmd), lrbp);
+ 
++	trace_android_vh_ufs_prepare_command(hba, scsi_cmd_to_rq(cmd), lrbp,
++					     &err);
++	if (err) {
++		lrbp->cmd = NULL;
++		ufshcd_release(hba);
++		goto out;
++	}
++
+ 	lrbp->req_abort_skip = false;
+ 
+ 	err = ufshpb_prep(hba, lrbp);
+@@ -5254,6 +5273,7 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
+ 		lrbp->compl_time_stamp = ktime_get();
+ 		cmd = lrbp->cmd;
+ 		if (cmd) {
++			trace_android_vh_ufs_compl_command(hba, lrbp);
+ 			if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))
+ 				ufshcd_update_monitor(hba, lrbp);
+ 			ufshcd_add_command_trace(hba, index, UFS_CMD_COMP);
+@@ -5271,6 +5291,7 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
+ 		} else if (lrbp->command_type == UTP_CMD_TYPE_DEV_MANAGE ||
+ 			lrbp->command_type == UTP_CMD_TYPE_UFS_STORAGE) {
+ 			if (hba->dev_cmd.complete) {
++				trace_android_vh_ufs_compl_command(hba, lrbp);
+ 				ufshcd_add_command_trace(hba, index,
+ 							 UFS_DEV_COMP);
+ 				complete(hba->dev_cmd.complete);
+@@ -6344,6 +6365,8 @@ static irqreturn_t ufshcd_check_errors(struct ufs_hba *hba, u32 intr_status)
+ 		queue_eh_work = true;
+ 	}
+ 
++	trace_android_vh_ufs_check_int_errors(hba, queue_eh_work);
++
+ 	if (queue_eh_work) {
+ 		/*
+ 		 * update the transfer error masks to sticky bits, let's do this
+@@ -9686,7 +9709,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
+ 	ufshcd_set_ufs_dev_active(hba);
+ 
+ 	async_schedule(ufshcd_async_scan, hba);
+-	ufs_sysfs_add_nodes(hba->dev);
++	ufs_sysfs_add_nodes(hba);
+ 
+ 	device_enable_async_suspend(dev);
+ 	return 0;
+diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h
+new file mode 100644
+--- /dev/null
++++ b/include/trace/hooks/ufshcd.h
+@@ -0,0 +1,54 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM ufshcd
++#define TRACE_INCLUDE_PATH trace/hooks
++#if !defined(_TRACE_HOOK_UFSHCD_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_HOOK_UFSHCD_H
++#include <linux/tracepoint.h>
++#include <trace/hooks/vendor_hooks.h>
++/*
++ * Following tracepoints are not exported in tracefs and provide a
++ * mechanism for vendor modules to hook and extend functionality
++ */
++struct ufs_hba;
++struct request;
++struct ufshcd_lrb;
++
++DECLARE_HOOK(android_vh_ufs_fill_prdt,
++	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp,
++		 unsigned int segments, int *err),
++	TP_ARGS(hba, lrbp, segments, err));
++
++DECLARE_HOOK(android_vh_ufs_prepare_command,
++	TP_PROTO(struct ufs_hba *hba, struct request *rq,
++		 struct ufshcd_lrb *lrbp, int *err),
++	TP_ARGS(hba, rq, lrbp, err));
++
++DECLARE_HOOK(android_vh_ufs_update_sysfs,
++	TP_PROTO(struct ufs_hba *hba),
++	TP_ARGS(hba));
++
++DECLARE_HOOK(android_vh_ufs_send_command,
++	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp),
++	TP_ARGS(hba, lrbp));
++
++DECLARE_HOOK(android_vh_ufs_compl_command,
++	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp),
++	TP_ARGS(hba, lrbp));
++
++struct uic_command;
++DECLARE_HOOK(android_vh_ufs_send_uic_command,
++	TP_PROTO(struct ufs_hba *hba, struct uic_command *ucmd, int str_t),
++	TP_ARGS(hba, ucmd, str_t));
++
++DECLARE_HOOK(android_vh_ufs_send_tm_command,
++	TP_PROTO(struct ufs_hba *hba, int tag, int str_t),
++	TP_ARGS(hba, tag, str_t));
++
++DECLARE_HOOK(android_vh_ufs_check_int_errors,
++	TP_PROTO(struct ufs_hba *hba, bool queue_eh_work),
++	TP_ARGS(hba, queue_eh_work));
++
++#endif /* _TRACE_HOOK_UFSHCD_H */
++/* This part must be outside protection */
++#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-a-hook-to-add-sysfs-entries.patch b/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-a-hook-to-add-sysfs-entries.patch
deleted file mode 100644
index 90ded42..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-a-hook-to-add-sysfs-entries.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jaegeuk Kim <jaegeuk@google.com>
-Date: Sun, 13 Sep 2020 22:17:05 -0700
-Subject: NOUPSTREAM: ANDROID: scsi: ufs: add a hook to add sysfs entries
-
-This patch adds one vendor hook in UFS driver:
-
-DECLARE_HOOK(android_vh_ufs_update_sysfs,
-	TP_PROTO(struct ufs_hba *hba),
-	TP_ARGS(hba));
-
- -> called after creating sysfs for vendor to add more sysfs entries
-
-[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 158050260
-Bug: 181359082
-Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
-Change-Id: Id8c1197ec704e998e89dc25cc69b0f6a1b86e978
----
- drivers/android/vendor_hooks.c |  1 +
- drivers/scsi/ufs/ufs-sysfs.c   | 14 ++++++++++----
- drivers/scsi/ufs/ufs-sysfs.h   |  2 +-
- drivers/scsi/ufs/ufshcd.c      |  2 +-
- include/trace/hooks/ufshcd.h   |  4 ++++
- 5 files changed, 17 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -133,6 +133,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
-diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c
---- a/drivers/scsi/ufs/ufs-sysfs.c
-+++ b/drivers/scsi/ufs/ufs-sysfs.c
-@@ -9,6 +9,8 @@
- #include "ufs.h"
- #include "ufs-sysfs.h"
- 
-+#include <trace/hooks/ufshcd.h>
-+
- static const char *ufshcd_uic_link_state_to_string(
- 			enum uic_link_state state)
- {
-@@ -1250,15 +1252,19 @@ const struct attribute_group ufs_sysfs_lun_attributes_group = {
- 	.attrs = ufs_sysfs_lun_attributes,
- };
- 
--void ufs_sysfs_add_nodes(struct device *dev)
-+void ufs_sysfs_add_nodes(struct ufs_hba *hba)
- {
- 	int ret;
- 
--	ret = sysfs_create_groups(&dev->kobj, ufs_sysfs_groups);
--	if (ret)
--		dev_err(dev,
-+	ret = sysfs_create_groups(&hba->dev->kobj, ufs_sysfs_groups);
-+	if (ret) {
-+		dev_err(hba->dev,
- 			"%s: sysfs groups creation failed (err = %d)\n",
- 			__func__, ret);
-+		return;
-+	}
-+
-+	trace_android_vh_ufs_update_sysfs(hba);
- }
- 
- void ufs_sysfs_remove_nodes(struct device *dev)
-diff --git a/drivers/scsi/ufs/ufs-sysfs.h b/drivers/scsi/ufs/ufs-sysfs.h
---- a/drivers/scsi/ufs/ufs-sysfs.h
-+++ b/drivers/scsi/ufs/ufs-sysfs.h
-@@ -9,7 +9,7 @@
- 
- #include "ufshcd.h"
- 
--void ufs_sysfs_add_nodes(struct device *dev);
-+void ufs_sysfs_add_nodes(struct ufs_hba *hba);
- void ufs_sysfs_remove_nodes(struct device *dev);
- 
- extern const struct attribute_group ufs_sysfs_unit_descriptor_group;
-diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
---- a/drivers/scsi/ufs/ufshcd.c
-+++ b/drivers/scsi/ufs/ufshcd.c
-@@ -9700,7 +9700,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
- 	ufshcd_set_ufs_dev_active(hba);
- 
- 	async_schedule(ufshcd_async_scan, hba);
--	ufs_sysfs_add_nodes(hba->dev);
-+	ufs_sysfs_add_nodes(hba);
- 
- 	device_enable_async_suspend(dev);
- 	return 0;
-diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h
---- a/include/trace/hooks/ufshcd.h
-+++ b/include/trace/hooks/ufshcd.h
-@@ -24,6 +24,10 @@ DECLARE_HOOK(android_vh_ufs_prepare_command,
- 		 struct ufshcd_lrb *lrbp, int *err),
- 	TP_ARGS(hba, rq, lrbp, err));
- 
-+DECLARE_HOOK(android_vh_ufs_update_sysfs,
-+	TP_PROTO(struct ufs_hba *hba),
-+	TP_ARGS(hba));
-+
- #endif /* _TRACE_HOOK_UFSHCD_H */
- /* This part must be outside protection */
- #include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-a-hook-to-prepare-command.patch b/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-a-hook-to-prepare-command.patch
deleted file mode 100644
index b77e231..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-a-hook-to-prepare-command.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jaegeuk Kim <jaegeuk@google.com>
-Date: Wed, 16 Sep 2020 10:59:18 -0700
-Subject: NOUPSTREAM: ANDROID: scsi: ufs: add a hook to prepare command
-
-This patch adds one vendor hook in UFS driver:
-
-DECLARE_HOOK(android_vh_ufs_prepare_command,
-	TP_PROTO(struct ufs_hba *hba, struct request *rq,
-		 struct ufshcd_lrb *lrbp, int *err),
-	TP_ARGS(hba, rq, lrbp, err));
-
- -> called in the beginning of queuecommand to update the request, if needed
-
-[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 158050260
-Bug: 162257402
-Bug: 172874931
-Bug: 181359082
-Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
-[ebiggers: folded in
- "ANDROID: scsi: ufs: set crypto keyslot before prepare_command",
- which allows this hook to be used to remap keyslot numbers.]
-Signed-off-by: Eric Biggers <ebiggers@google.com>
-Change-Id: Ib91a735c2cbd215c1854ff57ef9a92642c41e005
----
- drivers/android/vendor_hooks.c | 1 +
- drivers/scsi/ufs/ufshcd.c      | 8 ++++++++
- include/trace/hooks/ufshcd.h   | 5 +++++
- 3 files changed, 14 insertions(+)
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -132,6 +132,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
-diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
---- a/drivers/scsi/ufs/ufshcd.c
-+++ b/drivers/scsi/ufs/ufshcd.c
-@@ -2742,6 +2742,14 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
- 
- 	ufshcd_prepare_lrbp_crypto(scsi_cmd_to_rq(cmd), lrbp);
- 
-+	trace_android_vh_ufs_prepare_command(hba, scsi_cmd_to_rq(cmd), lrbp,
-+					     &err);
-+	if (err) {
-+		lrbp->cmd = NULL;
-+		ufshcd_release(hba);
-+		goto out;
-+	}
-+
- 	lrbp->req_abort_skip = false;
- 
- 	err = ufshpb_prep(hba, lrbp);
-diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h
---- a/include/trace/hooks/ufshcd.h
-+++ b/include/trace/hooks/ufshcd.h
-@@ -19,6 +19,11 @@ DECLARE_HOOK(android_vh_ufs_fill_prdt,
- 		 unsigned int segments, int *err),
- 	TP_ARGS(hba, lrbp, segments, err));
- 
-+DECLARE_HOOK(android_vh_ufs_prepare_command,
-+	TP_PROTO(struct ufs_hba *hba, struct request *rq,
-+		 struct ufshcd_lrb *lrbp, int *err),
-+	TP_ARGS(hba, rq, lrbp, err));
-+
- #endif /* _TRACE_HOOK_UFSHCD_H */
- /* This part must be outside protection */
- #include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-fill_prdt-vendor-hook.patch b/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-fill_prdt-vendor-hook.patch
deleted file mode 100644
index 8f25b84..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-fill_prdt-vendor-hook.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Eric Biggers <ebiggers@google.com>
-Date: Sat, 22 Aug 2020 10:47:33 -0700
-Subject: NOUPSTREAM: ANDROID: scsi: ufs: add fill_prdt vendor hook
-
-Add a 'fill_prdt' Android vendor hook so that UFS platform drivers can
-initialize variant-specific PRDT fields.
-
-This is needed for FMP support.
-
-[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 166139333
-Bug: 162257402
-Bug: 181359082
-Change-Id: Icd07b5e475555ef3eaa0ae9e18a1ae9a4b981679
-Signed-off-by: Eric Biggers <ebiggers@google.com>
----
- drivers/android/vendor_hooks.c |  2 ++
- drivers/scsi/ufs/ufshcd.c      |  8 +++++++-
- include/trace/hooks/ufshcd.h   | 24 ++++++++++++++++++++++++
- 3 files changed, 33 insertions(+), 1 deletion(-)
- create mode 100644 include/trace/hooks/ufshcd.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -28,6 +28,7 @@
- #include <trace/hooks/mm.h>
- #include <trace/hooks/preemptirq.h>
- #include <trace/hooks/ftrace_dump.h>
-+#include <trace/hooks/ufshcd.h>
- #include <trace/hooks/cgroup.h>
- #include <trace/hooks/sys.h>
- #include <trace/hooks/iommu.h>
-@@ -130,6 +131,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
-diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
---- a/drivers/scsi/ufs/ufshcd.c
-+++ b/drivers/scsi/ufs/ufshcd.c
-@@ -31,6 +31,9 @@
- #define CREATE_TRACE_POINTS
- #include <trace/events/ufs.h>
- 
-+#undef CREATE_TRACE_POINTS
-+#include <trace/hooks/ufshcd.h>
-+
- #define UFSHCD_ENABLE_INTRS	(UTP_TRANSFER_REQ_COMPL |\
- 				 UTP_TASK_REQ_COMPL |\
- 				 UFSHCD_ERROR_MASK)
-@@ -2352,6 +2355,7 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
- 	struct scsi_cmnd *cmd;
- 	int sg_segments;
- 	int i;
-+	int err;
- 
- 	cmd = lrbp->cmd;
- 	sg_segments = scsi_dma_map(cmd);
-@@ -2383,7 +2387,9 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
- 		lrbp->utr_descriptor_ptr->prd_table_length = 0;
- 	}
- 
--	return 0;
-+	err = 0;
-+	trace_android_vh_ufs_fill_prdt(hba, lrbp, sg_segments, &err);
-+	return err;
- }
- 
- /**
-diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/ufshcd.h
-@@ -0,0 +1,24 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM ufshcd
-+#define TRACE_INCLUDE_PATH trace/hooks
-+#if !defined(_TRACE_HOOK_UFSHCD_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_UFSHCD_H
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+/*
-+ * Following tracepoints are not exported in tracefs and provide a
-+ * mechanism for vendor modules to hook and extend functionality
-+ */
-+struct ufs_hba;
-+struct request;
-+struct ufshcd_lrb;
-+
-+DECLARE_HOOK(android_vh_ufs_fill_prdt,
-+	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp,
-+		 unsigned int segments, int *err),
-+	TP_ARGS(hba, lrbp, segments, err));
-+
-+#endif /* _TRACE_HOOK_UFSHCD_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-hooks-to-monitor-stats-of-UFS-traffic.patch b/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-hooks-to-monitor-stats-of-UFS-traffic.patch
deleted file mode 100644
index b4a6712..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-hooks-to-monitor-stats-of-UFS-traffic.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jaegeuk Kim <jaegeuk@google.com>
-Date: Tue, 6 Oct 2020 17:45:55 -0700
-Subject: NOUPSTREAM: ANDROID: scsi: ufs: add hooks to monitor stats of UFS
- traffic
-
-This requires for UFS stat implementations.
-
-[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 158050260
-Bug: 181359082
-Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
-Change-Id: I7b692ad1dbca1aa3f37b10d7ab91e89499bb68cd
----
- drivers/android/vendor_hooks.c | 2 ++
- drivers/scsi/ufs/ufshcd.c      | 2 ++
- include/trace/hooks/ufshcd.h   | 8 ++++++++
- 3 files changed, 12 insertions(+)
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -134,6 +134,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_command);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_compl_command);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
-diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
---- a/drivers/scsi/ufs/ufshcd.c
-+++ b/drivers/scsi/ufs/ufshcd.c
-@@ -2094,6 +2094,7 @@ void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
- 
- 	lrbp->issue_time_stamp = ktime_get();
- 	lrbp->compl_time_stamp = ktime_set(0, 0);
-+	trace_android_vh_ufs_send_command(hba, lrbp);
- 	ufshcd_add_command_trace(hba, task_tag, UFS_CMD_SEND);
- 	ufshcd_clk_scaling_start_busy(hba);
- 	if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))
-@@ -5268,6 +5269,7 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
- 		lrbp->compl_time_stamp = ktime_get();
- 		cmd = lrbp->cmd;
- 		if (cmd) {
-+			trace_android_vh_ufs_compl_command(hba, lrbp);
- 			if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))
- 				ufshcd_update_monitor(hba, lrbp);
- 			ufshcd_add_command_trace(hba, index, UFS_CMD_COMP);
-diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h
---- a/include/trace/hooks/ufshcd.h
-+++ b/include/trace/hooks/ufshcd.h
-@@ -28,6 +28,14 @@ DECLARE_HOOK(android_vh_ufs_update_sysfs,
- 	TP_PROTO(struct ufs_hba *hba),
- 	TP_ARGS(hba));
- 
-+DECLARE_HOOK(android_vh_ufs_send_command,
-+	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp),
-+	TP_ARGS(hba, lrbp));
-+
-+DECLARE_HOOK(android_vh_ufs_compl_command,
-+	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp),
-+	TP_ARGS(hba, lrbp));
-+
- #endif /* _TRACE_HOOK_UFSHCD_H */
- /* This part must be outside protection */
- #include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-hooks-to-track-ufs-commands.patch b/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-hooks-to-track-ufs-commands.patch
deleted file mode 100644
index ce04cbe..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-scsi-ufs-add-hooks-to-track-ufs-commands.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jaegeuk Kim <jaegeuk@google.com>
-Date: Mon, 1 Mar 2021 17:21:30 -0800
-Subject: NOUPSTREAM: ANDROID: scsi: ufs: add hooks to track ufs commands
-
-This adds some missing hooks for ufs commands, including request,
-query, uic, task manager commands, and interrupt events for vendor.
-Those can be used for vendor module to understand command history.
-
-[CPNOTE: 03/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 172305874
-Bug: 176940922
-Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
-Change-Id: Ie447860290f4fbc1e03ad8ae5f50bd02121756cb
----
- drivers/android/vendor_hooks.c |  3 +++
- drivers/scsi/ufs/ufshcd.c      |  7 +++++++
- include/trace/hooks/ufshcd.h   | 13 +++++++++++++
- 3 files changed, 23 insertions(+)
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -138,6 +138,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_command);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_compl_command);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_uic_command);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_tm_command);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_check_int_errors);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
-diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
---- a/drivers/scsi/ufs/ufshcd.c
-+++ b/drivers/scsi/ufs/ufshcd.c
-@@ -323,6 +323,8 @@ static void ufshcd_add_tm_upiu_trace(struct ufs_hba *hba, unsigned int tag,
- {
- 	struct utp_task_req_desc *descp = &hba->utmrdl_base_addr[tag];
- 
-+	trace_android_vh_ufs_send_tm_command(hba, tag, (int)str_t);
-+
- 	if (!trace_ufshcd_upiu_enabled())
- 		return;
- 
-@@ -344,6 +346,8 @@ static void ufshcd_add_uic_command_trace(struct ufs_hba *hba,
- {
- 	u32 cmd;
- 
-+	trace_android_vh_ufs_send_uic_command(hba, ucmd, (int)str_t);
-+
- 	if (!trace_ufshcd_uic_command_enabled())
- 		return;
- 
-@@ -5287,6 +5291,7 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
- 		} else if (lrbp->command_type == UTP_CMD_TYPE_DEV_MANAGE ||
- 			lrbp->command_type == UTP_CMD_TYPE_UFS_STORAGE) {
- 			if (hba->dev_cmd.complete) {
-+				trace_android_vh_ufs_compl_command(hba, lrbp);
- 				ufshcd_add_command_trace(hba, index,
- 							 UFS_DEV_COMP);
- 				complete(hba->dev_cmd.complete);
-@@ -6360,6 +6365,8 @@ static irqreturn_t ufshcd_check_errors(struct ufs_hba *hba, u32 intr_status)
- 		queue_eh_work = true;
- 	}
- 
-+	trace_android_vh_ufs_check_int_errors(hba, queue_eh_work);
-+
- 	if (queue_eh_work) {
- 		/*
- 		 * update the transfer error masks to sticky bits, let's do this
-diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h
---- a/include/trace/hooks/ufshcd.h
-+++ b/include/trace/hooks/ufshcd.h
-@@ -36,6 +36,19 @@ DECLARE_HOOK(android_vh_ufs_compl_command,
- 	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp),
- 	TP_ARGS(hba, lrbp));
- 
-+struct uic_command;
-+DECLARE_HOOK(android_vh_ufs_send_uic_command,
-+	TP_PROTO(struct ufs_hba *hba, struct uic_command *ucmd, int str_t),
-+	TP_ARGS(hba, ucmd, str_t));
-+
-+DECLARE_HOOK(android_vh_ufs_send_tm_command,
-+	TP_PROTO(struct ufs_hba *hba, int tag, int str_t),
-+	TP_ARGS(hba, tag, str_t));
-+
-+DECLARE_HOOK(android_vh_ufs_check_int_errors,
-+	TP_PROTO(struct ufs_hba *hba, bool queue_eh_work),
-+	TP_ARGS(hba, queue_eh_work));
-+
- #endif /* _TRACE_HOOK_UFSHCD_H */
- /* This part must be outside protection */
- #include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-simplify-vendor-hooks-for-non-GKI-builds.patch b/android-mainline/NOUPSTREAM-ANDROID-simplify-vendor-hooks-for-non-GKI-builds.patch
deleted file mode 100644
index d5ac18a..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-simplify-vendor-hooks-for-non-GKI-builds.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Todd Kjos <tkjos@google.com>
-Date: Wed, 13 Jan 2021 14:09:53 -0800
-Subject: NOUPSTREAM: ANDROID: simplify vendor hooks for non-GKI builds
-
-Vendor hooks required explicitly defining macros or inline functions
-to handle the non-GKI build case (!CONFIG_ANDROID_VENDOR_HOOKS). Added
-support for generating them automatically so the macros are no longer
-required.
-
-Both models are now supported so we can transition.
-
-[CPNOTE: 02/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 177416721
-Signed-off-by: Todd Kjos <tkjos@google.com>
-Change-Id: I01acc389d315a5d509b0c48116854342a42e1058
----
- include/trace/hooks/sched.h        | 31 ------------------------------
- include/trace/hooks/vendor_hooks.h |  9 +++++++++
- 2 files changed, 9 insertions(+), 31 deletions(-)
-
-diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h
---- a/include/trace/hooks/sched.h
-+++ b/include/trace/hooks/sched.h
-@@ -10,7 +10,6 @@
-  * Following tracepoints are not exported in tracefs and provide a
-  * mechanism for vendor modules to hook and extend functionality
-  */
--#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
- struct task_struct;
- DECLARE_RESTRICTED_HOOK(android_rvh_select_task_rq_fair,
- 	TP_PROTO(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags, int *new_cpu),
-@@ -246,36 +245,6 @@ DECLARE_RESTRICTED_HOOK(android_rvh_replace_next_task_fair,
- 		 bool *repick, bool simple),
- 	TP_ARGS(rq, p, se, repick, simple), 1);
- 
--#else
--#define trace_android_rvh_select_task_rq_fair(p, prev_cpu, sd_flag, wake_flags, new_cpu)
--#define trace_android_rvh_select_task_rq_rt(p, prev_cpu, sd_flag, wake_flags, new_cpu)
--#define trace_android_rvh_select_fallback_rq(cpu, p, dest_cpu)
--#define trace_android_vh_scheduler_tick(rq)
--#define trace_android_rvh_enqueue_task(rq, p, flags)
--#define trace_android_rvh_dequeue_task(rq, p, flags)
--#define trace_android_rvh_can_migrate_task(p, dst_cpu, can_migrate)
--#define trace_android_rvh_find_lowest_rq(p, local_cpu_mask, ret, lowest_cpu)
--#define trace_android_rvh_prepare_prio_fork(p)
--#define trace_android_rvh_finish_prio_fork(p)
--#define trace_android_rvh_rtmutex_prepare_setprio(p, pi_task)
--#define trace_android_rvh_set_user_nice(p, nice)
--#define trace_android_rvh_setscheduler(p)
--#define trace_android_rvh_find_busiest_group(busiest, dst_rq, out_balance)
--#define trace_android_vh_dump_throttled_rt_tasks(cpu, clock, rt_period, rt_runtime, rt_period_timer_expires)
--#define trace_android_vh_jiffies_update(unused)
--#define trace_android_rvh_sched_newidle_balance(this_rq, rf, pulled_task, done)
--#define trace_android_rvh_sched_nohz_balancer_kick(rq, flags, done)
--#define trace_android_rvh_find_busiest_queue(dst_cpu, group, env_cpus, busiest, done)
--#define trace_android_rvh_migrate_queued_task(rq, rf, p, new_cpu, detached)
--#define trace_android_rvh_find_energy_efficient_cpu(p, prev_cpu, sync, new_cpu)
--#define trace_android_vh_set_sugov_sched_attr(attr)
--#define trace_android_rvh_set_iowait(p, should_iowait_boost)
--#define trace_android_rvh_set_sugov_update(sg_policy, next_freq, should_update)
--#define trace_android_rvh_sched_setaffinity(p, in_mask, retval)
--#define trace_android_rvh_update_cpus_allowed(p, cpus_requested, new_mask, ret)
--#define trace_android_rvh_cpu_cgroup_attach(tset)
--#endif
--
- #endif /* _TRACE_HOOK_SCHED_H */
- /* This part must be outside protection */
- #include <trace/define_trace.h>
-diff --git a/include/trace/hooks/vendor_hooks.h b/include/trace/hooks/vendor_hooks.h
---- a/include/trace/hooks/vendor_hooks.h
-+++ b/include/trace/hooks/vendor_hooks.h
-@@ -9,6 +9,8 @@
- 
- #include <linux/tracepoint.h>
- 
-+#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
-+
- #define DECLARE_HOOK DECLARE_TRACE
- 
- int android_rvh_probe_register(struct tracepoint *tp, void *probe, void *data);
-@@ -109,3 +111,10 @@ int android_rvh_probe_register(struct tracepoint *tp, void *probe, void *data);
- 			PARAMS(void *__data, proto))
- 
- #endif /* TRACE_HEADER_MULTI_READ */
-+
-+#else /* !CONFIG_TRACEPOINTS || !CONFIG_ANDROID_VENDOR_HOOKS */
-+/* suppress trace hooks */
-+#define DECLARE_HOOK DECLARE_EVENT_NOP
-+#define DECLARE_RESTRICTED_HOOK(name, proto, args, cond)		\
-+	DECLARE_EVENT_NOP(name, PARAMS(proto), PARAMS(args))
-+#endif
diff --git a/android-mainline/NOUPSTREAM-ANDROID-sysrq-add-vendor-hook-for-sysrq-crash-information.patch b/android-mainline/NOUPSTREAM-ANDROID-sysrq-add-vendor-hook-for-sysrq-crash-information.patch
index faa6521..241120b 100644
--- a/android-mainline/NOUPSTREAM-ANDROID-sysrq-add-vendor-hook-for-sysrq-crash-information.patch
+++ b/android-mainline/NOUPSTREAM-ANDROID-sysrq-add-vendor-hook-for-sysrq-crash-information.patch
@@ -30,9 +30,9 @@
  #include <trace/hooks/debug.h>
 +#include <trace/hooks/sysrqcrash.h>
  #include <trace/hooks/printk.h>
+ #include <trace/hooks/gic_v3.h>
  #include <trace/hooks/epoch.h>
- #include <trace/hooks/cpufreq.h>
-@@ -69,6 +70,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
+@@ -75,6 +76,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
  EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
diff --git a/android-mainline/NOUPSTREAM-ANDROID-timer-Add-vendor-hook-for-timer-calc-index.patch b/android-mainline/NOUPSTREAM-ANDROID-timer-Add-vendor-hook-for-timer-calc-index.patch
deleted file mode 100644
index 5d152ca..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-timer-Add-vendor-hook-for-timer-calc-index.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Huang Yiwei <hyiwei@codeaurora.org>
-Date: Fri, 29 Jan 2021 10:59:25 +0800
-Subject: NOUPSTREAM: ANDROID: timer: Add vendor hook for timer calc index
-
-Since we're expecting timers more precisely in short period, add
-a vendor hook to calc_index when adding timers. Then we can modify
-the index this timer used to make it accurate.
-
-[CPNOTE: 16/08/21] Lee: Vendor hooks
-
-Bug: 178758017
-Signed-off-by: Huang Yiwei <hyiwei@codeaurora.org>
-Change-Id: Ie0e6493ae7ad53b0cc57eb1bbcf8a0a11f652828
----
- drivers/android/vendor_hooks.c |  2 ++
- include/trace/hooks/timer.h    | 19 +++++++++++++++++++
- kernel/time/timer.c            |  3 +++
- 3 files changed, 24 insertions(+)
- create mode 100644 include/trace/hooks/timer.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -33,6 +33,7 @@
- #include <trace/hooks/sys.h>
- #include <trace/hooks/iommu.h>
- #include <trace/hooks/net.h>
-+#include <trace/hooks/timer.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -145,6 +146,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
-diff --git a/include/trace/hooks/timer.h b/include/trace/hooks/timer.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/timer.h
-@@ -0,0 +1,19 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM timer
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_TIMER_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_TIMER_H
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+DECLARE_HOOK(android_vh_timer_calc_index,
-+	TP_PROTO(unsigned int lvl, unsigned long *expires),
-+	TP_ARGS(lvl, expires));
-+
-+#endif /* _TRACE_HOOK_TIMER_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-diff --git a/kernel/time/timer.c b/kernel/time/timer.c
---- a/kernel/time/timer.c
-+++ b/kernel/time/timer.c
-@@ -55,6 +55,8 @@
- 
- #define CREATE_TRACE_POINTS
- #include <trace/events/timer.h>
-+#undef CREATE_TRACE_POINTS
-+#include <trace/hooks/timer.h>
- 
- __visible u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
- 
-@@ -503,6 +505,7 @@ static inline unsigned calc_index(unsigned long expires, unsigned lvl,
- 	 * Round up with level granularity to prevent this.
- 	 */
- 	expires = (expires + LVL_GRAN(lvl)) >> LVL_SHIFT(lvl);
-+	trace_android_vh_timer_calc_index(lvl, &expires);
- 	*bucket_expiry = expires << LVL_SHIFT(lvl);
- 	return LVL_OFFS(lvl) + (expires & LVL_MASK);
- }
diff --git a/android-mainline/NOUPSTREAM-ANDROID-tracing-Add-restricted-vendor-hooks-for-preemptirq-events.patch b/android-mainline/NOUPSTREAM-ANDROID-tracing-Add-restricted-vendor-hooks-for-preemptirq-events.patch
deleted file mode 100644
index 0b23812..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-tracing-Add-restricted-vendor-hooks-for-preemptirq-events.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Pavankumar Kondeti <pkondeti@codeaurora.org>
-Date: Tue, 1 Dec 2020 14:10:07 +0530
-Subject: NOUPSTREAM: ANDROID: tracing: Add restricted vendor hooks for
- preemptirq events
-
-We have debug infrastructure built on top of preempt/irq disable/enable
-events. This requires modifications to the kernel tracing code. Since
-this is not feasible with GKI, we started with registering to the
-existing preemptirq trace events. However the performance of wide
-variety of use cases are regressed as the rate of preemptirq events
-is super high and generic trace events are slow.
-
-Since GKI allows optimized trace events via restricted trace hooks,
-add the same for preemptirq event.
-
-[CPNOTE: 02/06/21] Lee: Vendor related code - maintain forever
-
-Bug: 174541725
-Change-Id: Ic8d3cdd1c1aa6a9267d0b755694fedffa2ea8e36
-Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
----
- drivers/android/vendor_hooks.c   |  5 ++++
- include/trace/hooks/preemptirq.h | 32 +++++++++++++++++++++++++
- kernel/trace/trace_preemptirq.c  | 40 +++++++++++++++++++++++++-------
- 3 files changed, 69 insertions(+), 8 deletions(-)
- create mode 100644 include/trace/hooks/preemptirq.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -20,6 +20,7 @@
- #include <trace/hooks/debug.h>
- #include <trace/hooks/printk.h>
- #include <trace/hooks/epoch.h>
-+#include <trace/hooks/preemptirq.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -71,6 +72,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_sugov_update);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_setaffinity);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpus_allowed);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_preempt_disable);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_preempt_enable);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_disable);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_enable);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_task_cpu);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_try_to_wake_up);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_try_to_wake_up_success);
-diff --git a/include/trace/hooks/preemptirq.h b/include/trace/hooks/preemptirq.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/preemptirq.h
-@@ -0,0 +1,32 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM preemptirq
-+
-+#undef TRACE_INCLUDE_PATH
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_PREEMPTIRQ_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_PREEMPTIRQ_H
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+DECLARE_RESTRICTED_HOOK(android_rvh_preempt_disable,
-+	TP_PROTO(unsigned long ip, unsigned long parent_ip),
-+	TP_ARGS(ip, parent_ip), 1);
-+
-+DECLARE_RESTRICTED_HOOK(android_rvh_preempt_enable,
-+	TP_PROTO(unsigned long ip, unsigned long parent_ip),
-+	TP_ARGS(ip, parent_ip), 1);
-+
-+DECLARE_RESTRICTED_HOOK(android_rvh_irqs_disable,
-+	TP_PROTO(unsigned long ip, unsigned long parent_ip),
-+	TP_ARGS(ip, parent_ip), 1);
-+
-+DECLARE_RESTRICTED_HOOK(android_rvh_irqs_enable,
-+	TP_PROTO(unsigned long ip, unsigned long parent_ip),
-+	TP_ARGS(ip, parent_ip), 1);
-+
-+#endif /* _TRACE_HOOK_PREEMPTIRQ_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-diff --git a/kernel/trace/trace_preemptirq.c b/kernel/trace/trace_preemptirq.c
---- a/kernel/trace/trace_preemptirq.c
-+++ b/kernel/trace/trace_preemptirq.c
-@@ -14,6 +14,8 @@
- 
- #define CREATE_TRACE_POINTS
- #include <trace/events/preemptirq.h>
-+#undef CREATE_TRACE_POINTS
-+#include <trace/hooks/preemptirq.h>
- 
- #ifdef CONFIG_TRACE_IRQFLAGS
- /* Per-cpu variable to prevent redundant calls when IRQs already off */
-@@ -28,8 +30,11 @@ static DEFINE_PER_CPU(int, tracing_irq_cpu);
- void trace_hardirqs_on_prepare(void)
- {
- 	if (this_cpu_read(tracing_irq_cpu)) {
--		if (!in_nmi())
-+		if (!in_nmi()) {
- 			trace_irq_enable(CALLER_ADDR0, CALLER_ADDR1);
-+			trace_android_rvh_irqs_enable(CALLER_ADDR0,
-+						      CALLER_ADDR1);
-+		}
- 		tracer_hardirqs_on(CALLER_ADDR0, CALLER_ADDR1);
- 		this_cpu_write(tracing_irq_cpu, 0);
- 	}
-@@ -40,8 +45,11 @@ NOKPROBE_SYMBOL(trace_hardirqs_on_prepare);
- void trace_hardirqs_on(void)
- {
- 	if (this_cpu_read(tracing_irq_cpu)) {
--		if (!in_nmi())
-+		if (!in_nmi()) {
- 			trace_irq_enable_rcuidle(CALLER_ADDR0, CALLER_ADDR1);
-+			trace_android_rvh_irqs_enable(CALLER_ADDR0,
-+						      CALLER_ADDR1);
-+		}
- 		tracer_hardirqs_on(CALLER_ADDR0, CALLER_ADDR1);
- 		this_cpu_write(tracing_irq_cpu, 0);
- 	}
-@@ -63,8 +71,11 @@ void trace_hardirqs_off_finish(void)
- 	if (!this_cpu_read(tracing_irq_cpu)) {
- 		this_cpu_write(tracing_irq_cpu, 1);
- 		tracer_hardirqs_off(CALLER_ADDR0, CALLER_ADDR1);
--		if (!in_nmi())
-+		if (!in_nmi()) {
- 			trace_irq_disable(CALLER_ADDR0, CALLER_ADDR1);
-+			trace_android_rvh_irqs_disable(CALLER_ADDR0,
-+						       CALLER_ADDR1);
-+		}
- 	}
- 
- }
-@@ -78,8 +89,11 @@ void trace_hardirqs_off(void)
- 	if (!this_cpu_read(tracing_irq_cpu)) {
- 		this_cpu_write(tracing_irq_cpu, 1);
- 		tracer_hardirqs_off(CALLER_ADDR0, CALLER_ADDR1);
--		if (!in_nmi())
-+		if (!in_nmi()) {
- 			trace_irq_disable_rcuidle(CALLER_ADDR0, CALLER_ADDR1);
-+			trace_android_rvh_irqs_disable(CALLER_ADDR0,
-+						       CALLER_ADDR1);
-+		}
- 	}
- }
- EXPORT_SYMBOL(trace_hardirqs_off);
-@@ -88,8 +102,11 @@ NOKPROBE_SYMBOL(trace_hardirqs_off);
- __visible void trace_hardirqs_on_caller(unsigned long caller_addr)
- {
- 	if (this_cpu_read(tracing_irq_cpu)) {
--		if (!in_nmi())
-+		if (!in_nmi()) {
- 			trace_irq_enable_rcuidle(CALLER_ADDR0, caller_addr);
-+			trace_android_rvh_irqs_enable(CALLER_ADDR0,
-+						      caller_addr);
-+		}
- 		tracer_hardirqs_on(CALLER_ADDR0, caller_addr);
- 		this_cpu_write(tracing_irq_cpu, 0);
- 	}
-@@ -107,8 +124,11 @@ __visible void trace_hardirqs_off_caller(unsigned long caller_addr)
- 	if (!this_cpu_read(tracing_irq_cpu)) {
- 		this_cpu_write(tracing_irq_cpu, 1);
- 		tracer_hardirqs_off(CALLER_ADDR0, caller_addr);
--		if (!in_nmi())
-+		if (!in_nmi()) {
- 			trace_irq_disable_rcuidle(CALLER_ADDR0, caller_addr);
-+			trace_android_rvh_irqs_enable(CALLER_ADDR0,
-+						      caller_addr);
-+		}
- 	}
- }
- EXPORT_SYMBOL(trace_hardirqs_off_caller);
-@@ -119,15 +139,19 @@ NOKPROBE_SYMBOL(trace_hardirqs_off_caller);
- 
- void trace_preempt_on(unsigned long a0, unsigned long a1)
- {
--	if (!in_nmi())
-+	if (!in_nmi()) {
- 		trace_preempt_enable_rcuidle(a0, a1);
-+		trace_android_rvh_preempt_enable(a0, a1);
-+	}
- 	tracer_preempt_on(a0, a1);
- }
- 
- void trace_preempt_off(unsigned long a0, unsigned long a1)
- {
--	if (!in_nmi())
-+	if (!in_nmi()) {
- 		trace_preempt_disable_rcuidle(a0, a1);
-+		trace_android_rvh_preempt_disable(a0, a1);
-+	}
- 	tracer_preempt_off(a0, a1);
- }
- #endif
diff --git a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-Add-hook-for-jiffies-updates.patch b/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-Add-hook-for-jiffies-updates.patch
deleted file mode 100644
index 3e5b3b9..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-Add-hook-for-jiffies-updates.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Amir Vajid <avajid@codeaurora.org>
-Date: Tue, 20 Oct 2020 15:58:14 -0700
-Subject: NOUPSTREAM: ANDROID: vendor_hooks: Add hook for jiffies updates
-
-Create a vendor hook for jiffies updates by the
-tick_do_timer_cpu.
-
-[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
-
-Bug: 148928265
-Change-Id: Ia442e20d446b8ce4f2b3f2be76655e72919c76eb
-Signed-off-by: Amir Vajid <avajid@codeaurora.org>
----
- drivers/android/vendor_hooks.c | 1 +
- include/trace/hooks/sched.h    | 5 +++++
- kernel/time/tick-common.c      | 2 ++
- kernel/time/tick-sched.c       | 5 ++++-
- 4 files changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -57,6 +57,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dump_throttled_rt_tasks);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_jiffies_update);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_newidle_balance);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_nohz_balancer_kick);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_queue);
-diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h
---- a/include/trace/hooks/sched.h
-+++ b/include/trace/hooks/sched.h
-@@ -76,6 +76,10 @@ DECLARE_HOOK(android_vh_dump_throttled_rt_tasks,
- 			s64 rt_period_timer_expires),
- 	TP_ARGS(cpu, clock, rt_period, rt_runtime, rt_period_timer_expires));
- 
-+DECLARE_HOOK(android_vh_jiffies_update,
-+	TP_PROTO(void *unused),
-+	TP_ARGS(unused));
-+
- struct rq_flags;
- DECLARE_RESTRICTED_HOOK(android_rvh_sched_newidle_balance,
- 	TP_PROTO(struct rq *this_rq, struct rq_flags *rf,
-@@ -253,6 +257,7 @@ DECLARE_RESTRICTED_HOOK(android_rvh_replace_next_task_fair,
- #define trace_android_rvh_setscheduler(p)
- #define trace_android_rvh_find_busiest_group(busiest, dst_rq, out_balance)
- #define trace_android_vh_dump_throttled_rt_tasks(cpu, clock, rt_period, rt_runtime, rt_period_timer_expires)
-+#define trace_android_vh_jiffies_update(unused)
- #define trace_android_rvh_sched_newidle_balance(this_rq, rf, pulled_task, done)
- #define trace_android_rvh_sched_nohz_balancer_kick(rq, flags, done)
- #define trace_android_rvh_find_busiest_queue(dst_cpu, group, env_cpus, busiest, done)
-diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
---- a/kernel/time/tick-common.c
-+++ b/kernel/time/tick-common.c
-@@ -17,6 +17,7 @@
- #include <linux/sched.h>
- #include <linux/module.h>
- #include <trace/events/power.h>
-+#include <trace/hooks/sched.h>
- 
- #include <asm/irq_regs.h>
- 
-@@ -95,6 +96,7 @@ static void tick_periodic(int cpu)
- 		write_seqcount_end(&jiffies_seq);
- 		raw_spin_unlock(&jiffies_lock);
- 		update_wall_time();
-+		trace_android_vh_jiffies_update(NULL);
- 	}
- 
- 	update_process_times(user_mode(get_irq_regs()));
-diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
---- a/kernel/time/tick-sched.c
-+++ b/kernel/time/tick-sched.c
-@@ -26,6 +26,7 @@
- #include <linux/posix-timers.h>
- #include <linux/context_tracking.h>
- #include <linux/mm.h>
-+#include <trace/hooks/sched.h>
- 
- #include <asm/irq_regs.h>
- 
-@@ -193,8 +194,10 @@ static void tick_sched_do_timer(struct tick_sched *ts, ktime_t now)
- #endif
- 
- 	/* Check, if the jiffies need an update */
--	if (tick_do_timer_cpu == cpu)
-+	if (tick_do_timer_cpu == cpu) {
- 		tick_do_update_jiffies64(now);
-+		trace_android_vh_jiffies_update(NULL);
-+	}
- 
- 	if (ts->inidle)
- 		ts->got_idle_tick = 1;
diff --git a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-Add-new-android-vendor-hooks-for-ipi-stop.patch b/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-Add-new-android-vendor-hooks-for-ipi-stop.patch
deleted file mode 100644
index 1f54b32..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-Add-new-android-vendor-hooks-for-ipi-stop.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Changki Kim <changki.kim@samsung.com>
-Date: Sun, 23 Aug 2020 14:36:48 +0900
-Subject: NOUPSTREAM: ANDROID: vendor_hooks: Add new android vendor hooks for
- ipi stop
-
-When a kernel panic occurred, it is sometimes caused by a other cpu
-than the panic cpu. When a panic cpu sends smp stop IPI, it can help to
-solve the problem even more if aonther cpu stores registers and
-run cache flush.
-
-[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
-
-Bug: 165956922
-
-Change-Id: I747f776456330d904015cfe4ae423e4b63f18f85
-Signed-off-by: Changki Kim <changki.kim@samsung.com>
-Signed-off-by: Will McVicker <willmcvicker@google.com>
-Signed-off-by: Jonglin Lee <jonglin@google.com>
----
- arch/arm64/kernel/smp.c        |  3 +++
- drivers/android/vendor_hooks.c |  2 ++
- include/trace/hooks/debug.h    | 26 ++++++++++++++++++++++++++
- 3 files changed, 31 insertions(+)
- create mode 100644 include/trace/hooks/debug.h
-
-diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
---- a/arch/arm64/kernel/smp.c
-+++ b/arch/arm64/kernel/smp.c
-@@ -53,6 +53,8 @@
- 
- #define CREATE_TRACE_POINTS
- #include <trace/events/ipi.h>
-+#undef CREATE_TRACE_POINTS
-+#include <trace/hooks/debug.h>
- 
- DEFINE_PER_CPU_READ_MOSTLY(int, cpu_number);
- EXPORT_PER_CPU_SYMBOL(cpu_number);
-@@ -903,6 +905,7 @@ static void do_handle_IPI(int ipinr)
- 		break;
- 
- 	case IPI_CPU_STOP:
-+		trace_android_vh_ipi_stop_rcuidle(get_irq_regs());
- 		local_cpu_stop();
- 		break;
- 
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -10,6 +10,7 @@
- #include <trace/hooks/vendor_hooks.h>
- #include <trace/hooks/fpsimd.h>
- #include <trace/hooks/mpam.h>
-+#include <trace/hooks/debug.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -17,3 +18,4 @@
-  */
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
-diff --git a/include/trace/hooks/debug.h b/include/trace/hooks/debug.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/debug.h
-@@ -0,0 +1,26 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM debug
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_DEBUG_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_DEBUG_H
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
-+struct pt_regs;
-+
-+DECLARE_HOOK(android_vh_ipi_stop,
-+	TP_PROTO(struct pt_regs *regs),
-+	TP_ARGS(regs))
-+#else
-+#define trace_android_vh_ipi_stop(regs)
-+#define trace_android_vh_ipi_stop_rcuidle(regs)
-+#endif
-+
-+#endif /* _TRACE_HOOK_DEBUG_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-FPSIMD-save-restore-by-using-vendor_hooks.patch b/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-FPSIMD-save-restore-by-using-vendor_hooks.patch
deleted file mode 100644
index c957f8b..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-FPSIMD-save-restore-by-using-vendor_hooks.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Wooyeon Kim <wooy88.kim@samsung.com>
-Date: Thu, 9 Jul 2020 14:43:13 +0900
-Subject: NOUPSTREAM: ANDROID: vendor_hooks: FPSIMD save/restore by using
- vendor_hooks
-
- - To use fpsimd in kernel task, vendor_hook call is needed to
-   save/restore fpsimd at scheduling time.
- - ANDROID_VENDOR_DATA added to thread_struct.
- - Vendor_hooks is called when thread is switching for save/restore
-   fpsimd states.
-  (trace_android_vh_is_fpsimd_save(prev, next))
-
-[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
-
-Bug: 149632552
-
-Signed-off-by: Wooyeon Kim <wooy88.kim@samsung.com>
-Change-Id: I853e1b6a9a51e24f770423bbc39fdd84265d78fc
----
- arch/arm64/include/asm/processor.h |  3 +++
- arch/arm64/kernel/process.c        |  3 +++
- drivers/android/vendor_hooks.c     |  3 ++-
- include/trace/hooks/fpsimd.h       | 21 +++++++++++++++++++++
- 4 files changed, 29 insertions(+), 1 deletion(-)
- create mode 100644 include/trace/hooks/fpsimd.h
-
-diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
---- a/arch/arm64/include/asm/processor.h
-+++ b/arch/arm64/include/asm/processor.h
-@@ -30,6 +30,7 @@
- #include <linux/stddef.h>
- #include <linux/string.h>
- #include <linux/thread_info.h>
-+#include <linux/android_vendor.h>
- 
- #include <vdso/processor.h>
- 
-@@ -145,6 +146,8 @@ struct thread_struct {
- 		struct user_fpsimd_state fpsimd_state;
- 	} uw;
- 
-+	ANDROID_VENDOR_DATA(1);
-+
- 	unsigned int		fpsimd_cpu;
- 	void			*sve_state;	/* SVE registers, if any */
- 	unsigned int		sve_vl;		/* SVE vector length */
-diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
---- a/arch/arm64/kernel/process.c
-+++ b/arch/arm64/kernel/process.c
-@@ -40,6 +40,7 @@
- #include <linux/percpu.h>
- #include <linux/thread_info.h>
- #include <linux/prctl.h>
-+#include <trace/hooks/fpsimd.h>
- 
- #include <asm/alternative.h>
- #include <asm/compat.h>
-@@ -522,6 +523,8 @@ __notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
- 	if (prev->thread.sctlr_user != next->thread.sctlr_user)
- 		update_sctlr_el1(next->thread.sctlr_user);
- 
-+	trace_android_vh_is_fpsimd_save(prev, next);
-+
- 	/* the actual thread switch */
- 	last = cpu_switch_to(prev, next);
- 
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -8,9 +8,10 @@
- 
- #define CREATE_TRACE_POINTS
- #include <trace/hooks/vendor_hooks.h>
-+#include <trace/hooks/fpsimd.h>
- 
- /*
-  * Export tracepoints that act as a bare tracehook (ie: have no trace event
-  * associated with them) to allow external modules to probe them.
-  */
--
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
-diff --git a/include/trace/hooks/fpsimd.h b/include/trace/hooks/fpsimd.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/fpsimd.h
-@@ -0,0 +1,21 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM fpsimd
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_FPSIMD_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_FPSIMD_H
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+struct task_struct;
-+
-+DECLARE_HOOK(android_vh_is_fpsimd_save,
-+	TP_PROTO(struct task_struct *prev, struct task_struct *next),
-+	TP_ARGS(prev, next))
-+
-+#endif /* _TRACE_HOOK_FPSIMD_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
diff --git a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-add-cpuidle-event.patch b/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-add-cpuidle-event.patch
deleted file mode 100644
index 4c4b359..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-vendor_hooks-add-cpuidle-event.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Park Bumgyu <bumgyu.park@samsung.com>
-Date: Thu, 20 Aug 2020 11:17:23 +0900
-Subject: NOUPSTREAM: ANDROID: vendor_hooks: add cpuidle event
-
-An event that gather the idle state that the cpu attempted to enter and
-actually entered is added. Through this, the idle statistics of the cpu
-can be obtained and used for vendor specific algorithms or for system
-analysis.
-
-[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
-
-Bug: 162980647
-Bug: 176198732
-Bug: 183690687
-Bug: 192436062
-Bug: 195914333
-
-Change-Id: I9c2491d524722042e881864488f7b3cf7e903d1e
-Signed-off-by: Park Bumgyu <bumgyu.park@samsung.com>
----
- drivers/android/vendor_hooks.c |  3 +++
- drivers/cpuidle/cpuidle.c      | 17 +++++++++++++++--
- include/trace/hooks/cpuidle.h  | 25 +++++++++++++++++++++++++
- 3 files changed, 43 insertions(+), 2 deletions(-)
- create mode 100644 include/trace/hooks/cpuidle.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -13,6 +13,7 @@
- #include <trace/hooks/rwsem.h>
- #include <trace/hooks/futex.h>
- #include <trace/hooks/dtask.h>
-+#include <trace/hooks/cpuidle.h>
- #include <trace/hooks/mpam.h>
- #include <trace/hooks/wqlockup.h>
- #include <trace/hooks/debug.h>
-@@ -46,6 +47,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_finish);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_start);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
-diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
---- a/drivers/cpuidle/cpuidle.c
-+++ b/drivers/cpuidle/cpuidle.c
-@@ -24,6 +24,7 @@
- #include <linux/tick.h>
- #include <linux/mmu_context.h>
- #include <trace/events/power.h>
-+#include <trace/hooks/cpuidle.h>
- 
- #include "cpuidle.h"
- 
-@@ -202,10 +203,21 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
- {
- 	int entered_state;
- 
--	struct cpuidle_state *target_state = &drv->states[index];
--	bool broadcast = !!(target_state->flags & CPUIDLE_FLAG_TIMER_STOP);
-+	struct cpuidle_state *target_state;
-+	bool broadcast;
- 	ktime_t time_start, time_end;
- 
-+	/*
-+	 * The vendor hook may modify index, which means target_state and
-+	 * broadcast must be assigned after the vendor hook.
-+	 */
-+	trace_android_vh_cpu_idle_enter(&index, dev);
-+	if (index < 0)
-+		return index;
-+
-+	target_state = &drv->states[index];
-+	broadcast = !!(target_state->flags & CPUIDLE_FLAG_TIMER_STOP);
-+
- 	/*
- 	 * Tell the time framework to switch to a broadcast timer because our
- 	 * local timer will be shut down.  If a local timer is used from another
-@@ -242,6 +254,7 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
- 	sched_clock_idle_wakeup_event();
- 	time_end = ns_to_ktime(local_clock());
- 	trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
-+	trace_android_vh_cpu_idle_exit(entered_state, dev);
- 
- 	/* The cpu is no longer idle or about to enter idle. */
- 	sched_idle_set_state(NULL);
-diff --git a/include/trace/hooks/cpuidle.h b/include/trace/hooks/cpuidle.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/cpuidle.h
-@@ -0,0 +1,25 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM cpuidle
-+
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_CPUIDLE_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_CPUIDLE_H
-+
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+
-+struct cpuidle_device;
-+
-+DECLARE_HOOK(android_vh_cpu_idle_enter,
-+	TP_PROTO(int *state, struct cpuidle_device *dev),
-+	TP_ARGS(state, dev))
-+DECLARE_HOOK(android_vh_cpu_idle_exit,
-+	TP_PROTO(int state, struct cpuidle_device *dev),
-+	TP_ARGS(state, dev))
-+
-+#endif /* _TRACE_HOOK_CPUIDLE_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-+
diff --git a/android-mainline/NOUPSTREAM-ANDROID-workqueue-add-vendor-hook-for-wq-lockup-information.patch b/android-mainline/NOUPSTREAM-ANDROID-workqueue-add-vendor-hook-for-wq-lockup-information.patch
deleted file mode 100644
index de11648..0000000
--- a/android-mainline/NOUPSTREAM-ANDROID-workqueue-add-vendor-hook-for-wq-lockup-information.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Sangmoon Kim <sangmoon.kim@samsung.com>
-Date: Tue, 29 Sep 2020 10:15:35 +0900
-Subject: NOUPSTREAM: ANDROID: workqueue: add vendor hook for wq lockup
- information
-
- - Add the hook to provide additional information like
-   a task scheduling log.
-
-[CPNOTE: 27/05/21] Lee: Vendor related code - maintain forever
-
-Bug: 169374262
-
-Signed-off-by: Sangmoon Kim <sangmoon.kim@samsung.com>
-Change-Id: I203dbc6faa77687ea48769f76658d28b29ef46fd
-(cherry picked from commit 2ea974a00c7bdbbee140d68d8867ddcbfb529ecc)
----
- drivers/android/vendor_hooks.c |  3 +++
- include/trace/hooks/wqlockup.h | 20 ++++++++++++++++++++
- kernel/workqueue.c             |  5 +++++
- 3 files changed, 28 insertions(+)
- create mode 100644 include/trace/hooks/wqlockup.h
-
-diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
---- a/drivers/android/vendor_hooks.c
-+++ b/drivers/android/vendor_hooks.c
-@@ -12,6 +12,7 @@
- #include <trace/hooks/rwsem.h>
- #include <trace/hooks/futex.h>
- #include <trace/hooks/mpam.h>
-+#include <trace/hooks/wqlockup.h>
- #include <trace/hooks/debug.h>
- 
- /*
-@@ -25,4 +26,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
-+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
- EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
-diff --git a/include/trace/hooks/wqlockup.h b/include/trace/hooks/wqlockup.h
-new file mode 100644
---- /dev/null
-+++ b/include/trace/hooks/wqlockup.h
-@@ -0,0 +1,20 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM wqlockup
-+#define TRACE_INCLUDE_PATH trace/hooks
-+
-+#if !defined(_TRACE_HOOK_WQLOCKUP_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_HOOK_WQLOCKUP_H
-+#include <linux/tracepoint.h>
-+#include <trace/hooks/vendor_hooks.h>
-+/*
-+ * Following tracepoints are not exported in tracefs and provide a
-+ * mechanism for vendor modules to hook and extend functionality
-+ */
-+DECLARE_HOOK(android_vh_wq_lockup_pool,
-+	TP_PROTO(int cpu, unsigned long pool_ts),
-+	TP_ARGS(cpu, pool_ts));
-+
-+#endif /* _TRACE_HOOK_WQLOCKUP_H */
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-diff --git a/kernel/workqueue.c b/kernel/workqueue.c
---- a/kernel/workqueue.c
-+++ b/kernel/workqueue.c
-@@ -54,6 +54,10 @@
- 
- #include "workqueue_internal.h"
- 
-+#include <trace/hooks/wqlockup.h>
-+/* events/workqueue.h uses default TRACE_INCLUDE_PATH */
-+#undef TRACE_INCLUDE_PATH
-+
- enum {
- 	/*
- 	 * worker_pool flags
-@@ -5849,6 +5853,7 @@ static void wq_watchdog_timer_fn(struct timer_list *unused)
- 			pr_cont_pool_info(pool);
- 			pr_cont(" stuck for %us!\n",
- 				jiffies_to_msecs(now - pool_ts) / 1000);
-+			trace_android_vh_wq_lockup_pool(pool->cpu, pool_ts);
- 		}
- 	}
- 
diff --git a/android-mainline/series b/android-mainline/series
index f437be7..12538e6 100644
--- a/android-mainline/series
+++ b/android-mainline/series
@@ -1,8 +1,8 @@
 #
 # android-mainline patches
 #
-# Applies onto upstream 60a9483534ed Linux v5.15-rc4-15-g60a9483534ed0
-# Matches android-mainline fad17703b529 ("ANDROID: sign-file: Fix warning when OPENSSL_NO_ENGINE is set")
+# Applies onto upstream 60a9483534ed0 Linux v5.15-rc4-15-g60a9483534ed0
+# Matches android-mainline fad17703b529e ("ANDROID: sign-file: Fix warning when OPENSSL_NO_ENGINE is set")
 #
 ANDROID-Revert-Enable-Werror-by-default-for-all-kernel-builds.patch
 Revert-sched-core-Prevent-race-condition-between-cpuset-and-__sched_setscheduler.patch
@@ -161,40 +161,18 @@
 _____ANNOTATION-Android-vendor-hooks_____.patch
 NOUPSTREAM-ANDROID-GKI-add-android_vendor.h.patch
 NOUPSTREAM-ANDROID-add-support-for-vendor-hooks.patch
-NOUPSTREAM-ANDROID-vendor_hooks-FPSIMD-save-restore-by-using-vendor_hooks.patch
-NOUPSTREAM-ANDROID-mpam-add-vendor-hook-to-record-MPAM.patch
-NOUPSTREAM-ANDROID-vendor_hooks-Add-new-android-vendor-hooks-for-ipi-stop.patch
-NOUPSTREAM-ANDROID-rwsem-Add-vendor-hook-to-the-rw-semaphore.patch
-NOUPSTREAM-ANDROID-futex-Add-vendor-hook-for-wait-queue.patch
-NOUPSTREAM-ANDROID-workqueue-add-vendor-hook-for-wq-lockup-information.patch
-NOUPSTREAM-ANDROID-printk-add-vendor-hook-for-console-flush.patch
+NOUPSTREAM-ANDROID-arm64-ARM64-related-vendor-hooks.patch
 NOUPSTREAM-ANDROID-Add-vendor-hooks-to-the-scheduler.patch
-NOUPSTREAM-ANDROID-vendor_hooks-add-cpuidle-event.patch
-NOUPSTREAM-ANDROID-sched-add-vendor-hooks-to-arch_topology.patch
-NOUPSTREAM-ANDROID-vendor_hooks-Add-hook-for-jiffies-updates.patch
-NOUPSTREAM-ANDROID-sched_clock-Add-vendor-hook-to-print-epoch-values.patch
-NOUPSTREAM-ANDROID-sched-cpuset-Add-vendor-hook-to-change-tasks-affinity.patch
-NOUPSTREAM-ANDROID-tracing-Add-restricted-vendor-hooks-for-preemptirq-events.patch
-NOUPSTREAM-ANDROID-simplify-vendor-hooks-for-non-GKI-builds.patch
-NOUPSTREAM-ANDROID-ftrace-vendor-hook-for-ftrace-dump-on-oops.patch
-NOUPSTREAM-ANDROID-cgroup-Add-vendor-hook-to-the-cgroup.patch
-NOUPSTREAM-ANDROID-Add-vendor-hooks-when-syscall-prctl-finished.patch
+NOUPSTREAM-ANDROID-kernel-Core-kernel-related-vendor-hooks.patch
+NOUPSTREAM-ANDROID-cpuidle-CPU-Idle-related-vendor-hooks.patch
+NOUPSTREAM-ANDROID-base-Base-related-vendor-hooks.patch
 NOUPSTREAM-ANDROID-mm-Create-vendor-hooks-to-control-ZONE_MOVABLE-allocations.patch
 NOUPSTREAM-ANDROID-binder-Add-vendor-hook-to-the-binder.patch
-NOUPSTREAM-ANDROID-gic-Add-vendor-hook-for-gic-v3-resume.patch
+NOUPSTREAM-ANDROID-irqchip-IRQ-Chip-releated-vendor-hooks.patch
 NOUPSTREAM-ANDROID-add-vendor-hooks-to-override-show_cpufinfo_max_freq.patch
 NOUPSTREAM-ANDROID-sysrq-add-vendor-hook-for-sysrq-crash-information.patch
-NOUPSTREAM-ANDROID-gic-v3-Add-vendor-hook-to-GIC-v3.patch
-NOUPSTREAM-ANDROID-iommu-Add-vendor-hook-for-setting-up-DMA-ops-for-IOMMU-clients.patch
-NOUPSTREAM-ANDROID-vendor_hooks-Add-vendor-hook-to-the-net.patch
-NOUPSTREAM-ANDROID-scsi-ufs-add-fill_prdt-vendor-hook.patch
-NOUPSTREAM-ANDROID-scsi-ufs-add-a-hook-to-prepare-command.patch
-NOUPSTREAM-ANDROID-scsi-ufs-add-a-hook-to-add-sysfs-entries.patch
-NOUPSTREAM-ANDROID-scsi-ufs-add-hooks-to-monitor-stats-of-UFS-traffic.patch
-NOUPSTREAM-ANDROID-scsi-ufs-add-hooks-to-track-ufs-commands.patch
-NOUPSTREAM-ANDROID-timer-Add-vendor-hook-for-timer-calc-index.patch
-NOUPSTREAM-ANDROID-PM-Domains-add-vendor_hook-to-disallow-domain-idle-state.patch
-NOUPSTREAM-ANDROID-cpuidle-psci-Add-vendor-hook-for-cpuidle-psci-enter-and-exit.patch
+NOUPSTREAM-ANDROID-net-NET-related-vendor-hooks.patch
+NOUPSTREAM-ANDROID-scsi-SCSI-related-vendor-hooks.patch
 _____ANNOTATION-Android-exports_____.patch
 NOUPSTREAM-ANDROID-scsi-SCSI-UFS-Exports.patch
 NOUPSTREAM-ANDROID-arm64-ARM64-Exports.patch