From 411865675521ee379c3b9016b8c455b412c1f6eb Mon Sep 17 00:00:00 2001 From: Mahantesh Kumbar Date: Wed, 21 Jun 2017 22:54:28 +0530 Subject: gpu: nvgpu: use nvgpu_flcn_copy_from_dmem() - replace usage of pmu_copy_from_dmem() with nvgpu_flcn_copy_from_dmem() - delete nvgpu_flcn_copy_from_dmem() JIRA NVGPU-99 Change-Id: If0919187078f95a165d6a152f180549ac121beaa Signed-off-by: Mahantesh Kumbar Reviewed-on: https://git-master/r/1506534 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/pmu/pmu.c | 6 ++-- drivers/gpu/nvgpu/common/pmu/pmu_ipc.c | 4 +-- drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c | 3 +- drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 51 ++---------------------------- drivers/gpu/nvgpu/gk20a/pmu_gk20a.h | 2 -- drivers/gpu/nvgpu/gp106/pmu_gp106.c | 2 +- drivers/gpu/nvgpu/gp10b/pmu_gp10b.c | 2 +- 7 files changed, 12 insertions(+), 58 deletions(-) diff --git a/drivers/gpu/nvgpu/common/pmu/pmu.c b/drivers/gpu/nvgpu/common/pmu/pmu.c index 35422e0d..eb1c83fb 100644 --- a/drivers/gpu/nvgpu/common/pmu/pmu.c +++ b/drivers/gpu/nvgpu/common/pmu/pmu.c @@ -193,14 +193,14 @@ int nvgpu_pmu_process_init_msg(struct nvgpu_pmu *pmu, g->ops.pmu.pmu_msgq_tail(pmu, &tail, QUEUE_GET); - pmu_copy_from_dmem(pmu, tail, + nvgpu_flcn_copy_from_dmem(pmu->flcn, tail, (u8 *)&msg->hdr, PMU_MSG_HDR_SIZE, 0); if (msg->hdr.unit_id != PMU_UNIT_INIT) { nvgpu_err(g, "expecting init msg"); return -EINVAL; } - pmu_copy_from_dmem(pmu, tail + PMU_MSG_HDR_SIZE, + nvgpu_flcn_copy_from_dmem(pmu->flcn, tail + PMU_MSG_HDR_SIZE, (u8 *)&msg->msg, msg->hdr.size - PMU_MSG_HDR_SIZE, 0); if (msg->msg.init.msg_type != PMU_INIT_MSG_TYPE_PMU_INIT) { @@ -214,7 +214,7 @@ int nvgpu_pmu_process_init_msg(struct nvgpu_pmu *pmu, init = pv->get_pmu_msg_pmu_init_msg_ptr(&(msg->msg.init)); if (!pmu->gid_info.valid) { - pmu_copy_from_dmem(pmu, + nvgpu_flcn_copy_from_dmem(pmu->flcn, pv->get_pmu_init_msg_pmu_sw_mg_off(init), (u8 *)&gid_data, sizeof(struct pmu_sha1_gid_data), 0); diff --git a/drivers/gpu/nvgpu/common/pmu/pmu_ipc.c b/drivers/gpu/nvgpu/common/pmu/pmu_ipc.c index e45a6182..93687c7b 100644 --- a/drivers/gpu/nvgpu/common/pmu/pmu_ipc.c +++ b/drivers/gpu/nvgpu/common/pmu/pmu_ipc.c @@ -129,7 +129,7 @@ static int pmu_queue_tail(struct nvgpu_pmu *pmu, struct pmu_queue *queue, static inline void pmu_queue_read(struct nvgpu_pmu *pmu, u32 offset, u8 *dst, u32 size) { - pmu_copy_from_dmem(pmu, offset, dst, size, 0); + nvgpu_flcn_copy_from_dmem(pmu->flcn, offset, dst, size, 0); } static inline void pmu_queue_write(struct nvgpu_pmu *pmu, @@ -673,7 +673,7 @@ static int pmu_response_handle(struct nvgpu_pmu *pmu, } if (pv->pmu_allocation_get_dmem_size(pmu, pv->get_pmu_seq_out_a_ptr(seq)) != 0) { - pmu_copy_from_dmem(pmu, + nvgpu_flcn_copy_from_dmem(pmu->flcn, pv->pmu_allocation_get_dmem_offset(pmu, pv->get_pmu_seq_out_a_ptr(seq)), seq->out_payload, diff --git a/drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c b/drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c index 9f236aa8..750906ce 100644 --- a/drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c +++ b/drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c @@ -204,7 +204,8 @@ int nvgpu_pmu_load_update(struct gk20a *g) return 0; } - pmu_copy_from_dmem(pmu, pmu->sample_buffer, (u8 *)&load, 2, 0); + nvgpu_flcn_copy_from_dmem(pmu->flcn, pmu->sample_buffer, + (u8 *)&load, 2, 0); pmu->load_shadow = load / 10; pmu->load_avg = (((9*pmu->load_avg) + pmu->load_shadow) / 10); diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c index 7fe25190..ce965992 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c @@ -104,51 +104,6 @@ static void printtrace(struct nvgpu_pmu *pmu) nvgpu_kfree(g, tracebuffer); } - -void pmu_copy_from_dmem(struct nvgpu_pmu *pmu, - u32 src, u8 *dst, u32 size, u8 port) -{ - struct gk20a *g = gk20a_from_pmu(pmu); - u32 i, words, bytes; - u32 data, addr_mask; - u32 *dst_u32 = (u32*)dst; - - if (size == 0) { - nvgpu_err(g, "size is zero"); - return; - } - - if (src & 0x3) { - nvgpu_err(g, "src (0x%08x) not 4-byte aligned", src); - return; - } - - nvgpu_mutex_acquire(&pmu->pmu_copy_lock); - - words = size >> 2; - bytes = size & 0x3; - - addr_mask = pwr_falcon_dmemc_offs_m() | - pwr_falcon_dmemc_blk_m(); - - src &= addr_mask; - - gk20a_writel(g, pwr_falcon_dmemc_r(port), - src | pwr_falcon_dmemc_aincr_f(1)); - - for (i = 0; i < words; i++) - dst_u32[i] = gk20a_readl(g, pwr_falcon_dmemd_r(port)); - - if (bytes > 0) { - data = gk20a_readl(g, pwr_falcon_dmemd_r(port)); - for (i = 0; i < bytes; i++) { - dst[(words << 2) + i] = ((u8 *)&data)[i]; - } - } - nvgpu_mutex_release(&pmu->pmu_copy_lock); - return; -} - void pmu_copy_to_dmem(struct nvgpu_pmu *pmu, u32 dst, u8 *src, u32 size, u8 port) { @@ -812,7 +767,7 @@ void pmu_dump_elpg_stats(struct nvgpu_pmu *pmu) struct gk20a *g = gk20a_from_pmu(pmu); struct pmu_pg_stats stats; - pmu_copy_from_dmem(pmu, + nvgpu_flcn_copy_from_dmem(pmu->flcn, pmu->stat_dmem_offset[PMU_PG_ELPG_ENGINE_ID_GRAPHICS], (u8 *)&stats, sizeof(struct pmu_pg_stats), 0); @@ -845,7 +800,7 @@ void pmu_dump_elpg_stats(struct nvgpu_pmu *pmu) Turn on PG_DEBUG in ucode and locate symbol "ElpgLog" offset in .nm file, e.g. 0x1000066c. use 0x66c. u32 i, val[20]; - pmu_copy_from_dmem(pmu, 0x66c, + nvgpu_flcn_copy_from_dmem(pmu->flcn, 0x66c, (u8 *)val, sizeof(val), 0); gk20a_dbg_pmu("elpg log begin"); for (i = 0; i < 20; i++) @@ -1150,7 +1105,7 @@ void gk20a_pmu_elpg_statistics(struct gk20a *g, u32 pg_engine_id, struct nvgpu_pmu *pmu = &g->pmu; struct pmu_pg_stats stats; - pmu_copy_from_dmem(pmu, + nvgpu_flcn_copy_from_dmem(pmu->flcn, pmu->stat_dmem_offset[pg_engine_id], (u8 *)&stats, sizeof(struct pmu_pg_stats), 0); diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.h b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.h index 147458af..8f337855 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.h @@ -58,8 +58,6 @@ void gk20a_init_pmu_ops(struct gpu_ops *gops); void pmu_copy_to_dmem(struct nvgpu_pmu *pmu, u32 dst, u8 *src, u32 size, u8 port); -void pmu_copy_from_dmem(struct nvgpu_pmu *pmu, - u32 src, u8 *dst, u32 size, u8 port); int pmu_bootstrap(struct nvgpu_pmu *pmu); void pmu_dump_elpg_stats(struct nvgpu_pmu *pmu); diff --git a/drivers/gpu/nvgpu/gp106/pmu_gp106.c b/drivers/gpu/nvgpu/gp106/pmu_gp106.c index 9b169c38..88d68220 100644 --- a/drivers/gpu/nvgpu/gp106/pmu_gp106.c +++ b/drivers/gpu/nvgpu/gp106/pmu_gp106.c @@ -265,7 +265,7 @@ void gp106_pmu_elpg_statistics(struct gk20a *g, u32 pg_engine_id, struct nvgpu_pmu *pmu = &g->pmu; struct pmu_pg_stats_v2 stats; - pmu_copy_from_dmem(pmu, + nvgpu_flcn_copy_from_dmem(pmu->flcn, pmu->stat_dmem_offset[pg_engine_id], (u8 *)&stats, sizeof(struct pmu_pg_stats_v2), 0); diff --git a/drivers/gpu/nvgpu/gp10b/pmu_gp10b.c b/drivers/gpu/nvgpu/gp10b/pmu_gp10b.c index a113d22e..3d02f475 100644 --- a/drivers/gpu/nvgpu/gp10b/pmu_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/pmu_gp10b.c @@ -257,7 +257,7 @@ static void gp10b_pmu_elpg_statistics(struct gk20a *g, u32 pg_engine_id, struct nvgpu_pmu *pmu = &g->pmu; struct pmu_pg_stats_v1 stats; - pmu_copy_from_dmem(pmu, + nvgpu_flcn_copy_from_dmem(pmu->flcn, pmu->stat_dmem_offset[pg_engine_id], (u8 *)&stats, sizeof(struct pmu_pg_stats_v1), 0); -- cgit v1.2.2