video: rockchip: rga3: refining time-consuming logs

1. Add map/unmap time-consuming
2. Use more intuitive log printing

Change-Id: Id70bc4cce42bb33580ceaf18220fe2454481e78d
Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com>
This commit is contained in:
Yu Qiaowei
2023-11-02 16:52:54 +08:00
committed by 余乔伟
parent 0011fa588c
commit 59b58f06c5
7 changed files with 75 additions and 16 deletions
@@ -86,6 +86,12 @@ enum rga_scale_down_mode {
RGA_SCALE_DOWN_AVG = 0x1,
};
enum RGA_SCHEDULER_CORE {
RGA_SCHEDULER_RGA3_CORE0 = 1 << 0,
RGA_SCHEDULER_RGA3_CORE1 = 1 << 1,
RGA_SCHEDULER_RGA2_CORE0 = 1 << 2,
};
/* RGA process mode enum */
enum {
BITBLT_MODE = 0x0,
@@ -37,6 +37,7 @@ const char *rga_get_rotate_mode_str(uint8_t mode);
const char *rga_get_blend_mode_str(enum rga_alpha_blend_mode mode);
const char *rga_get_memory_type_str(uint8_t type);
const char *rga_get_mmu_type_str(enum rga_mmu mmu_type);
const char *rga_get_core_name(enum RGA_SCHEDULER_CORE core);
void rga_convert_addr(struct rga_img_info_t *img, bool before_vir_get_channel);
void rga_swap_pd_mode(struct rga_req *req_rga);
+7 -2
View File
@@ -2323,6 +2323,7 @@ static int rga2_init_reg(struct rga_job *job)
struct rga2_req req;
int ret = 0;
struct rga_scheduler_t *scheduler = NULL;
ktime_t timestamp = ktime_get();
scheduler = job->scheduler;
if (unlikely(scheduler == NULL)) {
@@ -2396,6 +2397,10 @@ static int rga2_init_reg(struct rga_job *job)
return -EINVAL;
}
if (DEBUGGER_EN(TIME))
pr_info("request[%d], generate register cost time %lld us\n",
job->request_id, ktime_us_delta(ktime_get(), timestamp));
return ret;
}
@@ -2599,8 +2604,8 @@ static int rga2_set_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
rga_read(RGA2_INT, scheduler));
if (DEBUGGER_EN(TIME))
pr_info("set cmd use time = %lld\n",
ktime_us_delta(now, job->timestamp));
pr_info("request[%d], set register cost time %lld us\n",
job->request_id, ktime_us_delta(now, job->timestamp));
job->hw_running_time = now;
job->hw_recoder_time = now;
+7 -1
View File
@@ -1955,6 +1955,7 @@ static int rga3_init_reg(struct rga_job *job)
struct rga3_req req;
int ret = 0;
struct rga_scheduler_t *scheduler = NULL;
ktime_t timestamp = ktime_get();
scheduler = job->scheduler;
if (unlikely(scheduler == NULL)) {
@@ -1984,6 +1985,10 @@ static int rga3_init_reg(struct rga_job *job)
return -EINVAL;
}
if (DEBUGGER_EN(TIME))
pr_info("request[%d], generate register cost time %lld us\n",
job->request_id, ktime_us_delta(ktime_get(), timestamp));
return ret;
}
@@ -2070,7 +2075,8 @@ static int rga3_set_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
}
if (DEBUGGER_EN(TIME))
pr_info("set cmd use time = %lld\n", ktime_us_delta(now, job->timestamp));
pr_info("request[%d], set register cost time %lld us\n",
job->request_id, ktime_us_delta(now, job->timestamp));
job->hw_running_time = now;
job->hw_recoder_time = now;
+14
View File
@@ -604,6 +604,20 @@ const char *rga_get_mmu_type_str(enum rga_mmu mmu_type)
}
}
const char *rga_get_core_name(enum RGA_SCHEDULER_CORE core)
{
switch (core) {
case RGA_SCHEDULER_RGA3_CORE0:
return "RGA3_core0";
case RGA_SCHEDULER_RGA3_CORE1:
return "RGA3_core1";
case RGA_SCHEDULER_RGA2_CORE0:
return "RGA2_core0";
default:
return "unknown_core";
}
}
void rga_convert_addr(struct rga_img_info_t *img, bool before_vir_get_channel)
{
/*
+18 -11
View File
@@ -13,6 +13,7 @@
#include "rga_mm.h"
#include "rga_iommu.h"
#include "rga_debugger.h"
#include "rga_common.h"
static void rga_job_free(struct rga_job *job)
{
@@ -40,12 +41,13 @@ static void rga_job_get(struct rga_job *job)
static int rga_job_cleanup(struct rga_job *job)
{
if (DEBUGGER_EN(TIME))
pr_err("(pid:%d) job clean use time = %lld\n", job->pid,
ktime_us_delta(ktime_get(), job->timestamp));
rga_job_put(job);
if (DEBUGGER_EN(TIME))
pr_info("request[%d], job cleanup total cost time %lld us\n",
job->request_id,
ktime_us_delta(ktime_get(), job->timestamp));
return 0;
}
@@ -272,11 +274,11 @@ struct rga_job *rga_job_done(struct rga_scheduler_t *scheduler)
if (DEBUGGER_EN(DUMP_IMAGE))
rga_dump_job_image(job);
if (DEBUGGER_EN(TIME)) {
pr_info("hw use time = %lld\n", ktime_us_delta(now, job->hw_running_time));
pr_info("(pid:%d) job done use time = %lld\n", job->pid,
ktime_us_delta(now, job->timestamp));
}
if (DEBUGGER_EN(TIME))
pr_info("request[%d], hardware[%s] cost time %lld us\n",
job->request_id,
rga_get_core_name(scheduler->core),
ktime_us_delta(now, job->hw_running_time));
rga_mm_unmap_job_info(job);
@@ -918,8 +920,6 @@ int rga_request_release_signal(struct rga_scheduler_t *scheduler, struct rga_job
spin_unlock_irqrestore(&request->lock, flags);
rga_job_cleanup(job);
if ((failed_count + finished_count) >= request->task_count) {
spin_lock_irqsave(&request->lock, flags);
@@ -953,6 +953,13 @@ int rga_request_release_signal(struct rga_scheduler_t *scheduler, struct rga_job
mutex_unlock(&request_manager->lock);
if (DEBUGGER_EN(TIME))
pr_info("request[%d], job done total cost time %lld us\n",
job->request_id,
ktime_us_delta(ktime_get(), job->timestamp));
rga_job_cleanup(job);
return 0;
}
+22 -2
View File
@@ -1996,6 +1996,7 @@ error_unmap_buffer:
int rga_mm_map_job_info(struct rga_job *job)
{
int ret;
ktime_t timestamp = ktime_get();
if (job->flags & RGA_JOB_USE_HANDLE) {
ret = rga_mm_get_handle_info(job);
@@ -2003,12 +2004,20 @@ int rga_mm_map_job_info(struct rga_job *job)
pr_err("failed to get buffer from handle\n");
return ret;
}
if (DEBUGGER_EN(TIME))
pr_info("request[%d], get buffer_handle info cost %lld us\n",
job->request_id, ktime_us_delta(ktime_get(), timestamp));
} else {
ret = rga_mm_map_buffer_info(job);
if (ret < 0) {
pr_err("failed to map buffer\n");
return ret;
}
if (DEBUGGER_EN(TIME))
pr_info("request[%d], map buffer cost %lld us\n",
job->request_id, ktime_us_delta(ktime_get(), timestamp));
}
return 0;
@@ -2016,10 +2025,21 @@ int rga_mm_map_job_info(struct rga_job *job)
void rga_mm_unmap_job_info(struct rga_job *job)
{
if (job->flags & RGA_JOB_USE_HANDLE)
ktime_t timestamp = ktime_get();
if (job->flags & RGA_JOB_USE_HANDLE) {
rga_mm_put_handle_info(job);
else
if (DEBUGGER_EN(TIME))
pr_info("request[%d], put buffer_handle info cost %lld us\n",
job->request_id, ktime_us_delta(ktime_get(), timestamp));
} else {
rga_mm_unmap_buffer_info(job);
if (DEBUGGER_EN(TIME))
pr_info("request[%d], unmap buffer cost %lld us\n",
job->request_id, ktime_us_delta(ktime_get(), timestamp));
}
}
uint32_t rga_mm_import_buffer(struct rga_external_buffer *external_buffer,