From b8bfcd4358275be4a11405641defee46d4b33b6b Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Sun, 29 Oct 2017 20:14:12 -0700 Subject: gpu: nvgpu: Add GPU arch and impl to common structure Add GPU architecture and implentation to a new struct nvgpu_gpu_params which is defined in common header file gk20a/gk20.h. JIRA NVGPU-259 Change-Id: I9113d188037c9ad7bfc2200e0e41b39cac576985 Signed-off-by: Terje Bergstrom Reviewed-on: https://git-master.nvidia.com/r/1588032 GVS: Gerrit_Virtual_Submit Reviewed-by: svc-mobile-coverity Reviewed-by: Konsta Holtta Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c | 3 +++ drivers/gpu/nvgpu/common/linux/module.c | 5 +++-- drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c | 2 +- drivers/gpu/nvgpu/gk20a/gk20a.c | 12 ++++++------ drivers/gpu/nvgpu/gk20a/gk20a.h | 11 +++++++++++ drivers/gpu/nvgpu/gk20a/hal.c | 2 +- drivers/gpu/nvgpu/gp106/acr_gp106.c | 4 ++-- drivers/gpu/nvgpu/gp106/gr_ctx_gp106.c | 2 +- drivers/gpu/nvgpu/vgpu/vgpu.c | 16 ++++++++-------- 9 files changed, 36 insertions(+), 21 deletions(-) (limited to 'drivers/gpu') diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c index 1e5a9d59..1442c19a 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c @@ -202,6 +202,9 @@ gk20a_ctrl_ioctl_gpu_characteristics( #ifdef CONFIG_TEGRA_19x_GPU pgpu->flags |= nvgpu_ctrl_ioctl_gpu_characteristics_flags_t19x(g); #endif + pgpu->arch = g->params.gpu_arch; + pgpu->impl = g->params.gpu_impl; + pgpu->rev = g->params.gpu_rev; if (request->gpu_characteristics_buf_size > 0) { size_t write_size = sizeof(*pgpu); diff --git a/drivers/gpu/nvgpu/common/linux/module.c b/drivers/gpu/nvgpu/common/linux/module.c index fb5d3614..4f66fc67 100644 --- a/drivers/gpu/nvgpu/common/linux/module.c +++ b/drivers/gpu/nvgpu/common/linux/module.c @@ -156,9 +156,10 @@ static int gk20a_restore_registers(struct gk20a *g) return 0; } -static int nvgpu_init_os_linux_ops(struct nvgpu_os_linux *l) { +static int nvgpu_init_os_linux_ops(struct nvgpu_os_linux *l) +{ struct gk20a *g = &l->g; - u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; + u32 ver = g->params.gpu_arch + g->params.gpu_impl; switch (ver) { case GK20A_GPUID_GM20B: diff --git a/drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c b/drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c index f0307d96..2b952868 100644 --- a/drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c +++ b/drivers/gpu/nvgpu/common/pmu/pmu_perfmon.c @@ -35,7 +35,7 @@ static u8 get_perfmon_id(struct nvgpu_pmu *pmu) { struct gk20a *g = gk20a_from_pmu(pmu); - u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; + u32 ver = g->params.gpu_arch + g->params.gpu_impl; u8 unit_id; switch (ver) { diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 703a7c0c..e4bfce7f 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -74,18 +74,18 @@ void __gk20a_warn_on_no_regs(void) static int gk20a_detect_chip(struct gk20a *g) { - struct nvgpu_gpu_characteristics *gpu = &g->gpu_characteristics; + struct nvgpu_gpu_params *p = &g->params; u32 val; - if (gpu->arch) + if (p->gpu_arch) return 0; - val = gk20a_mc_boot_0(g, &gpu->arch, &gpu->impl, &gpu->rev); + val = gk20a_mc_boot_0(g, &p->gpu_arch, &p->gpu_impl, &p->gpu_rev); gk20a_dbg_info("arch: %x, impl: %x, rev: %x\n", - g->gpu_characteristics.arch, - g->gpu_characteristics.impl, - g->gpu_characteristics.rev); + g->params.gpu_arch, + g->params.gpu_impl, + g->params.gpu_rev); return gpu_init_hal(g); } diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index dca27887..550e8a0c 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -1060,6 +1060,15 @@ struct nvgpu_bios { u32 expansion_rom_offset; }; +struct nvgpu_gpu_params { + /* GPU architecture ID */ + u32 gpu_arch; + /* GPU implementation ID */ + u32 gpu_impl; + /* GPU revision ID */ + u32 gpu_rev; +}; + struct gk20a { struct nvgpu_nvhost_dev *nvhost_dev; @@ -1081,6 +1090,8 @@ struct gk20a { u32 log_mask; u32 log_trace; + struct nvgpu_gpu_params params; + /* * Guards access to hardware when usual gk20a_{busy,idle} are skipped * for submits and held for channel lifetime but dropped for an ongoing diff --git a/drivers/gpu/nvgpu/gk20a/hal.c b/drivers/gpu/nvgpu/gk20a/hal.c index 3535fedd..13e6f374 100644 --- a/drivers/gpu/nvgpu/gk20a/hal.c +++ b/drivers/gpu/nvgpu/gk20a/hal.c @@ -36,7 +36,7 @@ int gpu_init_hal(struct gk20a *g) { - u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; + u32 ver = g->params.gpu_arch + g->params.gpu_impl; switch (ver) { case GK20A_GPUID_GM20B: case GK20A_GPUID_GM20B_B: diff --git a/drivers/gpu/nvgpu/gp106/acr_gp106.c b/drivers/gpu/nvgpu/gp106/acr_gp106.c index c16c058e..d17d5751 100644 --- a/drivers/gpu/nvgpu/gp106/acr_gp106.c +++ b/drivers/gpu/nvgpu/gp106/acr_gp106.c @@ -182,7 +182,7 @@ release_img_fw: int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) { - u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; + u32 ver = g->params.gpu_arch + g->params.gpu_impl; struct lsf_ucode_desc_v1 *lsf_desc; struct nvgpu_firmware *fecs_sig = NULL; int err; @@ -276,7 +276,7 @@ rel_sig: int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) { - u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; + u32 ver = g->params.gpu_arch + g->params.gpu_impl; struct lsf_ucode_desc_v1 *lsf_desc; struct nvgpu_firmware *gpccs_sig = NULL; int err; diff --git a/drivers/gpu/nvgpu/gp106/gr_ctx_gp106.c b/drivers/gpu/nvgpu/gp106/gr_ctx_gp106.c index 571f99b7..5dc0f591 100644 --- a/drivers/gpu/nvgpu/gp106/gr_ctx_gp106.c +++ b/drivers/gpu/nvgpu/gp106/gr_ctx_gp106.c @@ -27,7 +27,7 @@ int gr_gp106_get_netlist_name(struct gk20a *g, int index, char *name) { - u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; + u32 ver = g->params.gpu_arch + g->params.gpu_impl; switch (ver) { case NVGPU_GPUID_GP104: diff --git a/drivers/gpu/nvgpu/vgpu/vgpu.c b/drivers/gpu/nvgpu/vgpu/vgpu.c index f0f05637..14a19f56 100644 --- a/drivers/gpu/nvgpu/vgpu/vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/vgpu.c @@ -342,17 +342,17 @@ int vgpu_pm_prepare_poweroff(struct device *dev) static void vgpu_detect_chip(struct gk20a *g) { - struct nvgpu_gpu_characteristics *gpu = &g->gpu_characteristics; + struct nvgpu_gpu_params *p = &g->params; struct vgpu_priv_data *priv = vgpu_get_priv_data(g); - gpu->arch = priv->constants.arch; - gpu->impl = priv->constants.impl; - gpu->rev = priv->constants.rev; + p->gpu_arch = priv->constants.arch; + p->gpu_impl = priv->constants.impl; + p->gpu_rev = priv->constants.rev; gk20a_dbg_info("arch: %x, impl: %x, rev: %x\n", - g->gpu_characteristics.arch, - g->gpu_characteristics.impl, - g->gpu_characteristics.rev); + p->gpu_arch, + p->gpu_impl, + p->gpu_rev); } int vgpu_init_gpu_characteristics(struct gk20a *g) @@ -436,7 +436,7 @@ int vgpu_get_timestamps_zipper(struct gk20a *g, static int vgpu_init_hal(struct gk20a *g) { - u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl; + u32 ver = g->params.gpu_arch + g->params.gpu_impl; int err; switch (ver) { -- cgit v1.2.2