From ed8d3b5d8cdfcb89cbc17da2966c28997de1d003 Mon Sep 17 00:00:00 2001 From: Sagar Kamble Date: Thu, 3 Jan 2019 12:38:10 +0530 Subject: [PATCH] gpu: nvgpu: fix ops access for dmem & emem accessors Similar to imem, update dmem & emem copy_from and copy_to functions to warn and handle cases where ops are not available. JIRA NVGPU-1732 Change-Id: If5cebffe68d16933c2abe1cb7e5421877149d823 Signed-off-by: Sagar Kamble Reviewed-on: https://git-master.nvidia.com/r/1989986 Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-misra Reviewed-by: svc-misra-checker Reviewed-by: Mahantesh Kumbar GVS: Gerrit_Virtual_Submit Reviewed-by: Alex Waterman Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/falcon/falcon.c | 26 ++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/nvgpu/common/falcon/falcon.c b/drivers/gpu/nvgpu/common/falcon/falcon.c index b9a5f58b9..03d3038b3 100644 --- a/drivers/gpu/nvgpu/common/falcon/falcon.c +++ b/drivers/gpu/nvgpu/common/falcon/falcon.c @@ -253,6 +253,9 @@ int nvgpu_falcon_copy_from_emem(struct nvgpu_falcon *flcn, if (flcn_dops->copy_from_emem != NULL) { status = flcn_dops->copy_from_emem(flcn, src, dst, size, port); + } else { + nvgpu_warn(flcn->g, "Invalid op on falcon 0x%x ", + flcn->flcn_id); } return status; @@ -272,6 +275,9 @@ int nvgpu_falcon_copy_to_emem(struct nvgpu_falcon *flcn, if (flcn_dops->copy_to_emem != NULL) { status = flcn_dops->copy_to_emem(flcn, dst, src, size, port); + } else { + nvgpu_warn(flcn->g, "Invalid op on falcon 0x%x ", + flcn->flcn_id); } return status; @@ -281,6 +287,7 @@ int nvgpu_falcon_copy_from_dmem(struct nvgpu_falcon *flcn, u32 src, u8 *dst, u32 size, u8 port) { struct nvgpu_falcon_ops *flcn_ops; + int status = -EINVAL; if (flcn == NULL) { return -EINVAL; @@ -288,13 +295,21 @@ int nvgpu_falcon_copy_from_dmem(struct nvgpu_falcon *flcn, flcn_ops = &flcn->flcn_ops; - return flcn_ops->copy_from_dmem(flcn, src, dst, size, port); + if (flcn_ops->copy_from_dmem != NULL) { + status = flcn_ops->copy_from_dmem(flcn, src, dst, size, port); + } else { + nvgpu_warn(flcn->g, "Invalid op on falcon 0x%x ", + flcn->flcn_id); + } + + return status; } int nvgpu_falcon_copy_to_dmem(struct nvgpu_falcon *flcn, u32 dst, u8 *src, u32 size, u8 port) { struct nvgpu_falcon_ops *flcn_ops; + int status = -EINVAL; if (flcn == NULL) { return -EINVAL; @@ -302,7 +317,14 @@ int nvgpu_falcon_copy_to_dmem(struct nvgpu_falcon *flcn, flcn_ops = &flcn->flcn_ops; - return flcn_ops->copy_to_dmem(flcn, dst, src, size, port); + if (flcn_ops->copy_to_dmem != NULL) { + status = flcn_ops->copy_to_dmem(flcn, dst, src, size, port); + } else { + nvgpu_warn(flcn->g, "Invalid op on falcon 0x%x ", + flcn->flcn_id); + } + + return status; } int nvgpu_falcon_copy_from_imem(struct nvgpu_falcon *flcn,