From 977770ec2702151f21b3bdec1e404645105c10d8 Mon Sep 17 00:00:00 2001 From: Keita Aihara Date: Fri, 29 Sep 2023 10:57:49 +0900 Subject: [PATCH] ANDROID: mmc: Add vendor hooks for sdcard failure diagnostics For sdcard failure diagnostics, add vendor hooks to monitor the sdcard bus speed mode change and the sdcard reset failure in the request recovery handling. Bug: 303549480 Change-Id: Id40337ffb09a31199335cdb8a273d76618415649 Signed-off-by: Keita Aihara --- drivers/android/vendor_hooks.c | 2 ++ drivers/mmc/core/block.c | 3 +++ drivers/mmc/core/sd.c | 4 ++++ include/trace/hooks/mmc.h | 9 +++++++++ 4 files changed, 18 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 289b292d7958..da1b7379dce2 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -351,3 +351,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_resume_begin); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_resume_end); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_early_resume_begin); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_get_folio); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_blk_mq_rw_recovery); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sd_update_bus_speed_mode); diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index 498333b769fd..50dbfd0838dd 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -49,6 +49,8 @@ #include +#include + #include "queue.h" #include "block.h" #include "core.h" @@ -1870,6 +1872,7 @@ static void mmc_blk_mq_rw_recovery(struct mmc_queue *mq, struct request *req) err && mmc_blk_reset(md, card->host, type)) { pr_err("%s: recovery failed!\n", req->q->disk->disk_name); mqrq->retries = MMC_NO_RETRIES; + trace_android_vh_mmc_blk_mq_rw_recovery(card); return; } diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index 246ce027ae0a..1ded32b60beb 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c @@ -21,6 +21,8 @@ #include #include +#include + #include "core.h" #include "card.h" #include "host.h" @@ -481,6 +483,8 @@ static void sd_update_bus_speed_mode(struct mmc_card *card) SD_MODE_UHS_SDR12)) { card->sd_bus_speed = UHS_SDR12_BUS_SPEED; } + + trace_android_vh_sd_update_bus_speed_mode(card); } static int sd_set_bus_speed_mode(struct mmc_card *card, u8 *status) diff --git a/include/trace/hooks/mmc.h b/include/trace/hooks/mmc.h index 3654c2a928ee..a5b6279b1934 100644 --- a/include/trace/hooks/mmc.h +++ b/include/trace/hooks/mmc.h @@ -7,11 +7,20 @@ #define _TRACE_HOOK_MMC_H #include struct mmc_host; +struct mmc_card; /* * Following tracepoints are not exported in tracefs and provide a * mechanism for vendor modules to hook and extend functionality */ +DECLARE_HOOK(android_vh_mmc_blk_mq_rw_recovery, + TP_PROTO(struct mmc_card *card), + TP_ARGS(card)); + +DECLARE_HOOK(android_vh_sd_update_bus_speed_mode, + TP_PROTO(struct mmc_card *card), + TP_ARGS(card)); + DECLARE_RESTRICTED_HOOK(android_rvh_mmc_suspend, TP_PROTO(struct mmc_host *host), TP_ARGS(host), 1);