gpu: nvgpu: define nvgpu_falcon_get_mem_size

Currently we have DMEM version of the API to get the size of falcon
memory. Let us convert it to generic as needed at multiple places.

JIRA: NVGPU-1993

Change-Id: If612b0a10e27619e4b6132773907eb21f0569a27
Signed-off-by: Sagar Kamble <skamble@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2023074
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Sagar Kamble
2019-02-19 12:03:36 +05:30
committed by mobile promotions
parent 8765df40b0
commit 8da1bde7db
4 changed files with 21 additions and 16 deletions

View File

@@ -284,7 +284,6 @@ int nvgpu_falcon_copy_to_emem(struct nvgpu_falcon *flcn,
static int falcon_memcpy_params_check(struct nvgpu_falcon *flcn,
u32 offset, u32 size, enum falcon_mem_type mem_type)
{
struct nvgpu_falcon_ops *flcn_ops = &flcn->flcn_ops;
struct gk20a *g = flcn->g;
u32 mem_size = 0;
int ret = -EINVAL;
@@ -299,13 +298,11 @@ static int falcon_memcpy_params_check(struct nvgpu_falcon *flcn,
goto exit;
}
if (flcn_ops->get_mem_size == NULL) {
nvgpu_warn(flcn->g, "Invalid op on falcon 0x%x ",
flcn->flcn_id);
ret = nvgpu_falcon_get_mem_size(flcn, mem_type, &mem_size);
if (ret != 0) {
goto exit;
}
mem_size = flcn_ops->get_mem_size(flcn, mem_type);
if (!(offset <= mem_size && (offset + size) <= mem_size)) {
nvgpu_err(g, "flcn-id 0x%x, copy overflow ",
flcn->flcn_id);
@@ -628,7 +625,11 @@ int nvgpu_falcon_bl_bootstrap(struct nvgpu_falcon *flcn,
goto exit;
}
imem_size = flcn_ops->get_mem_size(flcn, MEM_IMEM);
status = nvgpu_falcon_get_mem_size(flcn, MEM_IMEM, &imem_size);
if (status != 0) {
goto exit;
}
if (bl_info->bl_size > imem_size) {
nvgpu_err(flcn->g, "bootloader size greater than IMEM size");
goto exit;
@@ -658,9 +659,11 @@ void nvgpu_falcon_get_ctls(struct nvgpu_falcon *flcn, u32 *sctl, u32 *cpuctl)
}
}
int nvgpu_falcon_get_dmem_size(struct nvgpu_falcon *flcn, u32 *dmem_size)
int nvgpu_falcon_get_mem_size(struct nvgpu_falcon *flcn,
enum falcon_mem_type type, u32 *size)
{
struct nvgpu_falcon_ops *flcn_ops;
int err = -EINVAL;
if (flcn == NULL) {
return -EINVAL;
@@ -669,13 +672,14 @@ int nvgpu_falcon_get_dmem_size(struct nvgpu_falcon *flcn, u32 *dmem_size)
flcn_ops = &flcn->flcn_ops;
if (flcn_ops->get_mem_size != NULL) {
*dmem_size = flcn_ops->get_mem_size(flcn, MEM_DMEM);
*size = flcn_ops->get_mem_size(flcn, type);
err = 0;
} else {
nvgpu_warn(flcn->g, "Invalid op on falcon 0x%x ",
flcn->flcn_id);
}
return 0;
return err;
}
struct gk20a *nvgpu_falcon_to_gk20a(struct nvgpu_falcon *flcn)

View File

@@ -65,11 +65,6 @@ struct gk20a;
struct nvgpu_falcon;
struct nvgpu_falcon_bl_info;
enum falcon_mem_type {
MEM_DMEM = 0,
MEM_IMEM
};
/* ops which are falcon engine specific */
struct nvgpu_falcon_engine_dependency_ops {
int (*reset_eng)(struct gk20a *g);

View File

@@ -641,7 +641,7 @@ void nvgpu_pmu_get_cmd_line_args_offset(struct gk20a *g,
u32 dmem_size = 0;
int err = 0;
err = nvgpu_falcon_get_dmem_size(pmu->flcn, &dmem_size);
err = nvgpu_falcon_get_mem_size(pmu->flcn, MEM_DMEM, &dmem_size);
if (err != 0) {
nvgpu_err(g, "dmem size request failed");
*args_offset = 0;

View File

@@ -79,6 +79,11 @@
struct gk20a;
struct nvgpu_falcon;
enum falcon_mem_type {
MEM_DMEM = 0,
MEM_IMEM
};
struct nvgpu_falcon_bl_info {
void *bl_src;
u8 *bl_desc;
@@ -117,7 +122,8 @@ void nvgpu_falcon_dump_stats(struct nvgpu_falcon *flcn);
int nvgpu_falcon_bl_bootstrap(struct nvgpu_falcon *flcn,
struct nvgpu_falcon_bl_info *bl_info);
void nvgpu_falcon_get_ctls(struct nvgpu_falcon *flcn, u32 *sctl, u32 *cpuctl);
int nvgpu_falcon_get_dmem_size(struct nvgpu_falcon *flcn, u32 *dmem_size);
int nvgpu_falcon_get_mem_size(struct nvgpu_falcon *flcn,
enum falcon_mem_type type, u32 *size);
struct gk20a *nvgpu_falcon_to_gk20a(struct nvgpu_falcon *flcn);
u32 nvgpu_falcon_get_id(struct nvgpu_falcon *flcn);