From 64ae074863058d8097f25465865804cadcee2bc4 Mon Sep 17 00:00:00 2001 From: Li Huang Date: Wed, 18 May 2022 17:33:13 +0800 Subject: [PATCH] video: rockchip: rga3: debugger support dump pid info Signed-off-by: Li Huang Change-Id: I4ee2f64e31e33fa95ea85d0db07d55d8d3626142 --- drivers/video/rockchip/rga3/include/rga_common.h | 2 ++ drivers/video/rockchip/rga3/include/rga_drv.h | 3 +++ drivers/video/rockchip/rga3/rga_debugger.c | 14 ++++++++++++++ drivers/video/rockchip/rga3/rga_drv.c | 4 ++++ 4 files changed, 23 insertions(+) diff --git a/drivers/video/rockchip/rga3/include/rga_common.h b/drivers/video/rockchip/rga3/include/rga_common.h index 12d15df390a2..e66e44448254 100644 --- a/drivers/video/rockchip/rga3/include/rga_common.h +++ b/drivers/video/rockchip/rga3/include/rga_common.h @@ -9,6 +9,8 @@ #ifndef __LINUX_RKRGA_COMMON_H_ #define __LINUX_RKRGA_COMMON_H_ +#include "rga_drv.h" + #define RGA_GET_PAGE_COUNT(size) (((size) >> PAGE_SHIFT) + (((size) & (~PAGE_MASK)) ? 1 : 0)) bool rga_is_rgb_format(uint32_t format); diff --git a/drivers/video/rockchip/rga3/include/rga_drv.h b/drivers/video/rockchip/rga3/include/rga_drv.h index 86870427fdcd..8ef7b9025425 100644 --- a/drivers/video/rockchip/rga3/include/rga_drv.h +++ b/drivers/video/rockchip/rga3/include/rga_drv.h @@ -42,6 +42,7 @@ #include #include #include +#include #include @@ -210,6 +211,8 @@ struct rga_session { int id; pid_t tgid; + + char *pname; }; struct rga_job_buffer { diff --git a/drivers/video/rockchip/rga3/rga_debugger.c b/drivers/video/rockchip/rga3/rga_debugger.c index c1c6efbc91bc..8f4056262154 100644 --- a/drivers/video/rockchip/rga3/rga_debugger.c +++ b/drivers/video/rockchip/rga3/rga_debugger.c @@ -166,11 +166,16 @@ static int rga_version_show(struct seq_file *m, void *data) static int rga_load_show(struct seq_file *m, void *data) { struct rga_scheduler_t *scheduler = NULL; + struct rga_session_manager *session_manager = NULL; + struct rga_session *session = NULL; unsigned long flags; + int id = 0; int i; int load; u32 busy_time_total; + session_manager = rga_drvdata->session_manager; + seq_printf(m, "num of scheduler = %d\n", rga_drvdata->num_of_scheduler); seq_printf(m, "================= load ==================\n"); @@ -193,6 +198,15 @@ static int rga_load_show(struct seq_file *m, void *data) seq_printf(m, "\t load = %d%%\n", load); seq_printf(m, "-----------------------------------\n"); } + + mutex_lock(&session_manager->lock); + + idr_for_each_entry(&session_manager->ctx_id_idr, session, id) + seq_printf(m, "\t process %d: pid = %d, name: %s\n", id, + session->tgid, session->pname); + + mutex_unlock(&session_manager->lock); + return 0; } diff --git a/drivers/video/rockchip/rga3/rga_drv.c b/drivers/video/rockchip/rga3/rga_drv.c index 0424d29ad7e3..a317eef77196 100644 --- a/drivers/video/rockchip/rga3/rga_drv.c +++ b/drivers/video/rockchip/rga3/rga_drv.c @@ -18,6 +18,7 @@ #include "rga2_mmu_info.h" #include "rga_debugger.h" +#include "rga_common.h" struct rga_drvdata_t *rga_drvdata; @@ -499,6 +500,7 @@ static struct rga_session *rga_session_init(void) mutex_unlock(&session_manager->lock); session->tgid = current->tgid; + session->pname = kstrdup_quotable_cmdline(current, GFP_KERNEL); return session; } @@ -531,6 +533,8 @@ static int rga_session_deinit(struct rga_session *session) rga_mm_session_release_buffer(session); rga_session_free_remove_idr(session); + + kfree(session->pname); kfree(session); return 0;