From bcfe28b62fb4307f7226d74c9718ba4d33224a66 Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Mon, 31 May 2021 15:19:54 -0700 Subject: [PATCH] ANDROID: vendor_hooks: Add vendor hook for tcpm logs Logs in /sys/kernel/debug/usb/tcpm* are key to debug issues related to USB charging or data. Given that debugfs is disabled in user builds, adding vendor hooks to enable dumping the same. bypass_log is set to true by the handler if logging into logbuffer is not needed. Bug: 189792358 Change-Id: Icacfed2264b6c49b8e803c62f8bd820a146c169a Signed-off-by: Badhri Jagan Sridharan --- drivers/android/vendor_hooks.c | 1 + drivers/usb/typec/tcpm/tcpm.c | 4 ++++ include/trace/hooks/typec.h | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index b72340f2b46e..4489fcd685f2 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -299,3 +299,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_stack_hash); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_track_hash); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_task_comm); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_acct_update_power); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_log); diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 83b15abc7ae7..a0ac93069add 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -586,6 +586,7 @@ static void _tcpm_log(struct tcpm_port *port, const char *fmt, va_list args) char tmpbuffer[LOG_BUFFER_ENTRY_SIZE]; u64 ts_nsec = local_clock(); unsigned long rem_nsec; + bool bypass_log = false; mutex_lock(&port->logbuffer_lock); if (!port->logbuffer[port->logbuffer_head]) { @@ -598,6 +599,9 @@ static void _tcpm_log(struct tcpm_port *port, const char *fmt, va_list args) } vsnprintf(tmpbuffer, sizeof(tmpbuffer), fmt, args); + trace_android_vh_typec_tcpm_log(tmpbuffer, &bypass_log); + if (bypass_log) + goto abort; if (tcpm_log_full(port)) { port->logbuffer_head = max(port->logbuffer_head - 1, 0); diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h index db3e5ea700ef..f87151124075 100644 --- a/include/trace/hooks/typec.h +++ b/include/trace/hooks/typec.h @@ -58,6 +58,10 @@ DECLARE_HOOK(android_vh_typec_tcpm_adj_current_limit, u32 *current_limit, bool *adjust), TP_ARGS(state, port_current_limit, port_voltage, pd_capable, current_limit, adjust)); +DECLARE_HOOK(android_vh_typec_tcpm_log, + TP_PROTO(const char *log, bool *bypass), + TP_ARGS(log, bypass)); + #endif /* _TRACE_HOOK_UFSHCD_H */ /* This part must be outside protection */ #include