video: rockchip: rga3: optimize 'time' debug log

1. Add flush cache cost time
2. Fix wrong time-consuming statistics of set_reg

Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com>
Change-Id: I35254e49cd18e49d3ac691fc06ff67d2e36d3149
This commit is contained in:
Yu Qiaowei
2024-08-09 11:06:28 +08:00
committed by 余乔伟
parent 14ce427bb0
commit ad9aebd65b
4 changed files with 42 additions and 1 deletions

View File

@@ -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_dma_data_direction_str(enum dma_data_direction dir);
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);

View File

@@ -3053,7 +3053,7 @@ static int rga2_set_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
if (DEBUGGER_EN(TIME))
pr_info("request[%d], set register cost time %lld us\n",
job->request_id, ktime_us_delta(now, job->timestamp));
job->request_id, ktime_us_delta(ktime_get(), now));
job->hw_running_time = now;
job->hw_recoder_time = now;

View File

@@ -633,6 +633,22 @@ const char *rga_get_mmu_type_str(enum rga_mmu mmu_type)
}
}
const char *rga_get_dma_data_direction_str(enum dma_data_direction dir)
{
switch (dir) {
case DMA_BIDIRECTIONAL:
return "bidirectional";
case DMA_TO_DEVICE:
return "to_device";
case DMA_FROM_DEVICE:
return "from_device";
case DMA_NONE:
return "none";
default:
return "unknown";
}
}
const char *rga_get_core_name(enum RGA_SCHEDULER_CORE core)
{
switch (core) {

View File

@@ -1325,6 +1325,7 @@ static int rga_mm_sync_dma_sg_for_device(struct rga_internal_buffer *buffer,
{
struct sg_table *sgt;
struct rga_scheduler_t *scheduler;
ktime_t timestamp = ktime_get();
scheduler = buffer->dma_buffer->scheduler;
if (scheduler == NULL) {
@@ -1347,6 +1348,11 @@ static int rga_mm_sync_dma_sg_for_device(struct rga_internal_buffer *buffer,
dma_sync_sg_for_device(scheduler->dev, sgt->sgl, sgt->orig_nents, dir);
}
if (DEBUGGER_EN(TIME))
pr_info("handle[%d], %s, flush CPU cache for device cost %lld us\n",
buffer->handle, rga_get_dma_data_direction_str(dir),
ktime_us_delta(ktime_get(), timestamp));
return 0;
}
@@ -1356,6 +1362,7 @@ static int rga_mm_sync_dma_sg_for_cpu(struct rga_internal_buffer *buffer,
{
struct sg_table *sgt;
struct rga_scheduler_t *scheduler;
ktime_t timestamp = ktime_get();
scheduler = buffer->dma_buffer->scheduler;
if (scheduler == NULL) {
@@ -1378,6 +1385,11 @@ static int rga_mm_sync_dma_sg_for_cpu(struct rga_internal_buffer *buffer,
dma_sync_sg_for_cpu(scheduler->dev, sgt->sgl, sgt->orig_nents, dir);
}
if (DEBUGGER_EN(TIME))
pr_info("handle[%d], %s, flush CPU cache for CPU cost %lld us\n",
buffer->handle, rga_get_dma_data_direction_str(dir),
ktime_us_delta(ktime_get(), timestamp));
return 0;
}
@@ -2287,6 +2299,7 @@ int rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
int ret = 0, new_id;
struct rga_mm *mm;
struct rga_internal_buffer *internal_buffer;
ktime_t timestamp = ktime_get();
mm = rga_drvdata->mm;
if (mm == NULL) {
@@ -2348,7 +2361,12 @@ int rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
rga_mm_dump_buffer(internal_buffer);
}
if (DEBUGGER_EN(TIME))
pr_info("handle[%d], import buffer cost %lld us\n",
internal_buffer->handle, ktime_us_delta(ktime_get(), timestamp));
mutex_unlock(&mm->lock);
return internal_buffer->handle;
FREE_INTERNAL_BUFFER:
@@ -2362,6 +2380,7 @@ int rga_mm_release_buffer(uint32_t handle)
{
struct rga_mm *mm;
struct rga_internal_buffer *internal_buffer;
ktime_t timestamp = ktime_get();
mm = rga_drvdata->mm;
if (mm == NULL) {
@@ -2387,7 +2406,12 @@ int rga_mm_release_buffer(uint32_t handle)
kref_put(&internal_buffer->refcount, rga_mm_kref_release_buffer);
if (DEBUGGER_EN(TIME))
pr_info("handle[%d], release buffer cost %lld us\n",
handle, ktime_us_delta(ktime_get(), timestamp));
mutex_unlock(&mm->lock);
return 0;
}