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:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
/*
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user