From 536ec21b565ab1368b53a26d6ec7ed05857f0775 Mon Sep 17 00:00:00 2001 From: Debarshi Dutta Date: Mon, 13 Nov 2017 13:51:48 +0530 Subject: gpu: nvgpu: remove dependency on linux header for regops_gk20a* This patch removes the dependency on the header file "uapi/linux/nvgpu.h" for regops_gk20a.c. The original structure and definitions in the uapi/linux/nvgpu.h is maintained for userspace libnvrm_gpu.h. The following changes are made in this patch. 1) Defined common versions of the NVGPU_DBG_GPU_REG_OP* definitions inside regops_gk20a.h. 2) Defined common version of struct nvgpu_dbg_gpu_reg_op inside regops_gk20a.h naming it struct nvgpu_dbg_reg_op. 3) Constructed APIs to convert the NVGPU_DBG_GPU_REG_OP* definitions from linux versions to common and vice versa. 4) Constructed APIs to convert from struct nvgpu_dbg_gpu_reg_op to struct nvgpu_dbg_reg_op and vice versa. 5) The ioctl handler nvgpu_ioctl_channel_reg_ops first copies from userspace into a local storage based on struct nvgpu_dbg_gpu_reg_op which is copied into the struct nvgpu_dbg_reg_op using the APIs above and after executing the regops handler passes the data back into userspace by copying back data from struct nvgpu_dbg_reg_op to struct nvgpu_dbg_gpu_reg_opi. JIRA NVGPU-417 Change-Id: I23bad48d2967a629a6308c7484f3741a89db6537 Signed-off-by: Debarshi Dutta Reviewed-on: https://git-master.nvidia.com/r/1596972 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.c | 3 ++- drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.h | 4 ++-- drivers/gpu/nvgpu/common/linux/vgpu/vgpu.c | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) (limited to 'drivers/gpu/nvgpu/common/linux/vgpu') diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.c b/drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.c index 06ef43b8..dfdbe3ee 100644 --- a/drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.c +++ b/drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.c @@ -21,13 +21,14 @@ #include "gk20a/gk20a.h" #include "gk20a/channel_gk20a.h" #include "gk20a/dbg_gpu_gk20a.h" +#include "gk20a/regops_gk20a.h" #include "vgpu.h" #include "dbg_vgpu.h" #include int vgpu_exec_regops(struct dbg_session_gk20a *dbg_s, - struct nvgpu_dbg_gpu_reg_op *ops, + struct nvgpu_dbg_reg_op *ops, u64 num_ops) { struct channel_gk20a *ch; diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.h b/drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.h index 8552a82e..178767a2 100644 --- a/drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.h +++ b/drivers/gpu/nvgpu/common/linux/vgpu/dbg_vgpu.h @@ -18,12 +18,12 @@ #define _DBG_VGPU_H_ struct dbg_session_gk20a; -struct nvgpu_dbg_gpu_reg_op; +struct nvgpu_dbg_reg_op; struct dbg_profiler_object_data; struct gk20a; int vgpu_exec_regops(struct dbg_session_gk20a *dbg_s, - struct nvgpu_dbg_gpu_reg_op *ops, + struct nvgpu_dbg_reg_op *ops, u64 num_ops); int vgpu_dbg_set_powergate(struct dbg_session_gk20a *dbg_s, bool disable_powergate); bool vgpu_check_and_set_global_reservation( diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/vgpu.c b/drivers/gpu/nvgpu/common/linux/vgpu/vgpu.c index 7768b21d..f261d2ca 100644 --- a/drivers/gpu/nvgpu/common/linux/vgpu/vgpu.c +++ b/drivers/gpu/nvgpu/common/linux/vgpu/vgpu.c @@ -36,6 +36,7 @@ #include "clk_vgpu.h" #include "gk20a/tsg_gk20a.h" #include "gk20a/channel_gk20a.h" +#include "gk20a/regops_gk20a.h" #include "gm20b/hal_gm20b.h" #include "common/linux/module.h" -- cgit v1.2.2