From 6fa673a17109fd8d029af9216240eaead3ccdd6e Mon Sep 17 00:00:00 2001 From: "Xandy.Xiong" Date: Tue, 10 Sep 2024 16:05:23 +0800 Subject: [PATCH] ANDROID: vendor_hooks:add restricted hook for logbuf Fix the timestamp in front of the log is out of order when using android_vh_logbuf with CPU core is offline. Bug: 364443023 Change-Id: Ib37f4373d3511aaf765838bf581c84ed22992a77 Signed-off-by: Xandy.Xiong (cherry picked from commit 9b44f2fb794ccd5a17777e317bec959558d21f9e) --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/logbuf.h | 4 ++++ kernel/printk/printk.c | 1 + 3 files changed, 6 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 4006efb35833..aaad721bb82a 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -352,6 +352,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_this); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_up_q_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_report_bug); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_logbuf); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_logbuf); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_acct_update_power); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_swappiness); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_logbuf_pr_cont); diff --git a/include/trace/hooks/logbuf.h b/include/trace/hooks/logbuf.h index 72c34f7fbad0..166d9ea55d1f 100644 --- a/include/trace/hooks/logbuf.h +++ b/include/trace/hooks/logbuf.h @@ -12,6 +12,10 @@ struct printk_ringbuffer; struct printk_record; +DECLARE_RESTRICTED_HOOK(android_rvh_logbuf, + TP_PROTO(struct printk_ringbuffer *rb, struct printk_record *r), + TP_ARGS(rb, r), true) + DECLARE_HOOK(android_vh_logbuf, TP_PROTO(struct printk_ringbuffer *rb, struct printk_record *r), TP_ARGS(rb, r)) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 4510765f5458..a514532021ae 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2361,6 +2361,7 @@ int vprintk_store(int facility, int level, else prb_final_commit(&e); + trace_android_rvh_logbuf(prb, &r); trace_android_vh_logbuf(prb, &r); ret = text_len + trunc_msg_len; out: