diff options
author | Mahantesh Kumbar <mkumbar@nvidia.com> | 2017-06-21 13:24:28 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-06-27 06:57:53 -0400 |
commit | 411865675521ee379c3b9016b8c455b412c1f6eb (patch) | |
tree | 3022b6a3bc8b935c8636fc4194a83c9465c7df0e | |
parent | b7b38d1cd6177dec55de993b4d674948d7c587ef (diff) |
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 <mkumbar@nvidia.com>
Reviewed-on: https://git-master/r/1506534
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
-rw-r--r-- | drivers/gpu/nvgpu/common/pmu/pmu.c | 6 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/pmu/pmu_ipc.c | 4 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 51 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.h | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp106/pmu_gp106.c | 2 | ||||
-rw-r--r-- | 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, | |||
193 | 193 | ||
194 | g->ops.pmu.pmu_msgq_tail(pmu, &tail, QUEUE_GET); | 194 | g->ops.pmu.pmu_msgq_tail(pmu, &tail, QUEUE_GET); |
195 | 195 | ||
196 | pmu_copy_from_dmem(pmu, tail, | 196 | nvgpu_flcn_copy_from_dmem(pmu->flcn, tail, |
197 | (u8 *)&msg->hdr, PMU_MSG_HDR_SIZE, 0); | 197 | (u8 *)&msg->hdr, PMU_MSG_HDR_SIZE, 0); |
198 | if (msg->hdr.unit_id != PMU_UNIT_INIT) { | 198 | if (msg->hdr.unit_id != PMU_UNIT_INIT) { |
199 | nvgpu_err(g, "expecting init msg"); | 199 | nvgpu_err(g, "expecting init msg"); |
200 | return -EINVAL; | 200 | return -EINVAL; |
201 | } | 201 | } |
202 | 202 | ||
203 | pmu_copy_from_dmem(pmu, tail + PMU_MSG_HDR_SIZE, | 203 | nvgpu_flcn_copy_from_dmem(pmu->flcn, tail + PMU_MSG_HDR_SIZE, |
204 | (u8 *)&msg->msg, msg->hdr.size - PMU_MSG_HDR_SIZE, 0); | 204 | (u8 *)&msg->msg, msg->hdr.size - PMU_MSG_HDR_SIZE, 0); |
205 | 205 | ||
206 | if (msg->msg.init.msg_type != PMU_INIT_MSG_TYPE_PMU_INIT) { | 206 | 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, | |||
214 | init = pv->get_pmu_msg_pmu_init_msg_ptr(&(msg->msg.init)); | 214 | init = pv->get_pmu_msg_pmu_init_msg_ptr(&(msg->msg.init)); |
215 | if (!pmu->gid_info.valid) { | 215 | if (!pmu->gid_info.valid) { |
216 | 216 | ||
217 | pmu_copy_from_dmem(pmu, | 217 | nvgpu_flcn_copy_from_dmem(pmu->flcn, |
218 | pv->get_pmu_init_msg_pmu_sw_mg_off(init), | 218 | pv->get_pmu_init_msg_pmu_sw_mg_off(init), |
219 | (u8 *)&gid_data, | 219 | (u8 *)&gid_data, |
220 | sizeof(struct pmu_sha1_gid_data), 0); | 220 | 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, | |||
129 | static inline void pmu_queue_read(struct nvgpu_pmu *pmu, | 129 | static inline void pmu_queue_read(struct nvgpu_pmu *pmu, |
130 | u32 offset, u8 *dst, u32 size) | 130 | u32 offset, u8 *dst, u32 size) |
131 | { | 131 | { |
132 | pmu_copy_from_dmem(pmu, offset, dst, size, 0); | 132 | nvgpu_flcn_copy_from_dmem(pmu->flcn, offset, dst, size, 0); |
133 | } | 133 | } |
134 | 134 | ||
135 | static inline void pmu_queue_write(struct nvgpu_pmu *pmu, | 135 | static inline void pmu_queue_write(struct nvgpu_pmu *pmu, |
@@ -673,7 +673,7 @@ static int pmu_response_handle(struct nvgpu_pmu *pmu, | |||
673 | } | 673 | } |
674 | if (pv->pmu_allocation_get_dmem_size(pmu, | 674 | if (pv->pmu_allocation_get_dmem_size(pmu, |
675 | pv->get_pmu_seq_out_a_ptr(seq)) != 0) { | 675 | pv->get_pmu_seq_out_a_ptr(seq)) != 0) { |
676 | pmu_copy_from_dmem(pmu, | 676 | nvgpu_flcn_copy_from_dmem(pmu->flcn, |
677 | pv->pmu_allocation_get_dmem_offset(pmu, | 677 | pv->pmu_allocation_get_dmem_offset(pmu, |
678 | pv->get_pmu_seq_out_a_ptr(seq)), | 678 | pv->get_pmu_seq_out_a_ptr(seq)), |
679 | seq->out_payload, | 679 | 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) | |||
204 | return 0; | 204 | return 0; |
205 | } | 205 | } |
206 | 206 | ||
207 | pmu_copy_from_dmem(pmu, pmu->sample_buffer, (u8 *)&load, 2, 0); | 207 | nvgpu_flcn_copy_from_dmem(pmu->flcn, pmu->sample_buffer, |
208 | (u8 *)&load, 2, 0); | ||
208 | pmu->load_shadow = load / 10; | 209 | pmu->load_shadow = load / 10; |
209 | pmu->load_avg = (((9*pmu->load_avg) + pmu->load_shadow) / 10); | 210 | pmu->load_avg = (((9*pmu->load_avg) + pmu->load_shadow) / 10); |
210 | 211 | ||
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) | |||
104 | nvgpu_kfree(g, tracebuffer); | 104 | nvgpu_kfree(g, tracebuffer); |
105 | } | 105 | } |
106 | 106 | ||
107 | |||
108 | void pmu_copy_from_dmem(struct nvgpu_pmu *pmu, | ||
109 | u32 src, u8 *dst, u32 size, u8 port) | ||
110 | { | ||
111 | struct gk20a *g = gk20a_from_pmu(pmu); | ||
112 | u32 i, words, bytes; | ||
113 | u32 data, addr_mask; | ||
114 | u32 *dst_u32 = (u32*)dst; | ||
115 | |||
116 | if (size == 0) { | ||
117 | nvgpu_err(g, "size is zero"); | ||
118 | return; | ||
119 | } | ||
120 | |||
121 | if (src & 0x3) { | ||
122 | nvgpu_err(g, "src (0x%08x) not 4-byte aligned", src); | ||
123 | return; | ||
124 | } | ||
125 | |||
126 | nvgpu_mutex_acquire(&pmu->pmu_copy_lock); | ||
127 | |||
128 | words = size >> 2; | ||
129 | bytes = size & 0x3; | ||
130 | |||
131 | addr_mask = pwr_falcon_dmemc_offs_m() | | ||
132 | pwr_falcon_dmemc_blk_m(); | ||
133 | |||
134 | src &= addr_mask; | ||
135 | |||
136 | gk20a_writel(g, pwr_falcon_dmemc_r(port), | ||
137 | src | pwr_falcon_dmemc_aincr_f(1)); | ||
138 | |||
139 | for (i = 0; i < words; i++) | ||
140 | dst_u32[i] = gk20a_readl(g, pwr_falcon_dmemd_r(port)); | ||
141 | |||
142 | if (bytes > 0) { | ||
143 | data = gk20a_readl(g, pwr_falcon_dmemd_r(port)); | ||
144 | for (i = 0; i < bytes; i++) { | ||
145 | dst[(words << 2) + i] = ((u8 *)&data)[i]; | ||
146 | } | ||
147 | } | ||
148 | nvgpu_mutex_release(&pmu->pmu_copy_lock); | ||
149 | return; | ||
150 | } | ||
151 | |||
152 | void pmu_copy_to_dmem(struct nvgpu_pmu *pmu, | 107 | void pmu_copy_to_dmem(struct nvgpu_pmu *pmu, |
153 | u32 dst, u8 *src, u32 size, u8 port) | 108 | u32 dst, u8 *src, u32 size, u8 port) |
154 | { | 109 | { |
@@ -812,7 +767,7 @@ void pmu_dump_elpg_stats(struct nvgpu_pmu *pmu) | |||
812 | struct gk20a *g = gk20a_from_pmu(pmu); | 767 | struct gk20a *g = gk20a_from_pmu(pmu); |
813 | struct pmu_pg_stats stats; | 768 | struct pmu_pg_stats stats; |
814 | 769 | ||
815 | pmu_copy_from_dmem(pmu, | 770 | nvgpu_flcn_copy_from_dmem(pmu->flcn, |
816 | pmu->stat_dmem_offset[PMU_PG_ELPG_ENGINE_ID_GRAPHICS], | 771 | pmu->stat_dmem_offset[PMU_PG_ELPG_ENGINE_ID_GRAPHICS], |
817 | (u8 *)&stats, sizeof(struct pmu_pg_stats), 0); | 772 | (u8 *)&stats, sizeof(struct pmu_pg_stats), 0); |
818 | 773 | ||
@@ -845,7 +800,7 @@ void pmu_dump_elpg_stats(struct nvgpu_pmu *pmu) | |||
845 | Turn on PG_DEBUG in ucode and locate symbol "ElpgLog" offset | 800 | Turn on PG_DEBUG in ucode and locate symbol "ElpgLog" offset |
846 | in .nm file, e.g. 0x1000066c. use 0x66c. | 801 | in .nm file, e.g. 0x1000066c. use 0x66c. |
847 | u32 i, val[20]; | 802 | u32 i, val[20]; |
848 | pmu_copy_from_dmem(pmu, 0x66c, | 803 | nvgpu_flcn_copy_from_dmem(pmu->flcn, 0x66c, |
849 | (u8 *)val, sizeof(val), 0); | 804 | (u8 *)val, sizeof(val), 0); |
850 | gk20a_dbg_pmu("elpg log begin"); | 805 | gk20a_dbg_pmu("elpg log begin"); |
851 | for (i = 0; i < 20; i++) | 806 | for (i = 0; i < 20; i++) |
@@ -1150,7 +1105,7 @@ void gk20a_pmu_elpg_statistics(struct gk20a *g, u32 pg_engine_id, | |||
1150 | struct nvgpu_pmu *pmu = &g->pmu; | 1105 | struct nvgpu_pmu *pmu = &g->pmu; |
1151 | struct pmu_pg_stats stats; | 1106 | struct pmu_pg_stats stats; |
1152 | 1107 | ||
1153 | pmu_copy_from_dmem(pmu, | 1108 | nvgpu_flcn_copy_from_dmem(pmu->flcn, |
1154 | pmu->stat_dmem_offset[pg_engine_id], | 1109 | pmu->stat_dmem_offset[pg_engine_id], |
1155 | (u8 *)&stats, sizeof(struct pmu_pg_stats), 0); | 1110 | (u8 *)&stats, sizeof(struct pmu_pg_stats), 0); |
1156 | 1111 | ||
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); | |||
58 | 58 | ||
59 | void pmu_copy_to_dmem(struct nvgpu_pmu *pmu, | 59 | void pmu_copy_to_dmem(struct nvgpu_pmu *pmu, |
60 | u32 dst, u8 *src, u32 size, u8 port); | 60 | u32 dst, u8 *src, u32 size, u8 port); |
61 | void pmu_copy_from_dmem(struct nvgpu_pmu *pmu, | ||
62 | u32 src, u8 *dst, u32 size, u8 port); | ||
63 | int pmu_bootstrap(struct nvgpu_pmu *pmu); | 61 | int pmu_bootstrap(struct nvgpu_pmu *pmu); |
64 | 62 | ||
65 | void pmu_dump_elpg_stats(struct nvgpu_pmu *pmu); | 63 | 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, | |||
265 | struct nvgpu_pmu *pmu = &g->pmu; | 265 | struct nvgpu_pmu *pmu = &g->pmu; |
266 | struct pmu_pg_stats_v2 stats; | 266 | struct pmu_pg_stats_v2 stats; |
267 | 267 | ||
268 | pmu_copy_from_dmem(pmu, | 268 | nvgpu_flcn_copy_from_dmem(pmu->flcn, |
269 | pmu->stat_dmem_offset[pg_engine_id], | 269 | pmu->stat_dmem_offset[pg_engine_id], |
270 | (u8 *)&stats, sizeof(struct pmu_pg_stats_v2), 0); | 270 | (u8 *)&stats, sizeof(struct pmu_pg_stats_v2), 0); |
271 | 271 | ||
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, | |||
257 | struct nvgpu_pmu *pmu = &g->pmu; | 257 | struct nvgpu_pmu *pmu = &g->pmu; |
258 | struct pmu_pg_stats_v1 stats; | 258 | struct pmu_pg_stats_v1 stats; |
259 | 259 | ||
260 | pmu_copy_from_dmem(pmu, | 260 | nvgpu_flcn_copy_from_dmem(pmu->flcn, |
261 | pmu->stat_dmem_offset[pg_engine_id], | 261 | pmu->stat_dmem_offset[pg_engine_id], |
262 | (u8 *)&stats, sizeof(struct pmu_pg_stats_v1), 0); | 262 | (u8 *)&stats, sizeof(struct pmu_pg_stats_v1), 0); |
263 | 263 | ||