diff options
author | Richard Zhao <rizhao@nvidia.com> | 2016-07-25 18:12:08 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-08-15 14:41:23 -0400 |
commit | 843bbc726c7283666a18d9ff899350e0cef18330 (patch) | |
tree | 5811b36c7aa7ec7e2b24dcae83e08cb513d27e13 /drivers | |
parent | 233862859a759b14353d743c0bce7d0df18e49ca (diff) |
gpu: nvgpu: vgpu: add getting sm version constants
move below attributes to constants:
TEGRA_VGPU_ATTRIB_GPC0_TPC0_SM_ARCH
JIRA VFND-2103
Change-Id: I5d6aa8f4a49e65307989ef02d223c3ee31fcdeed
Signed-off-by: Richard Zhao <rizhao@nvidia.com>
Reviewed-on: http://git-master/r/1190481
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vladislav Buzov <vbuzov@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gk20a/vgpu_gr_gk20a.c | 29 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gm20b/vgpu_gr_gm20b.c | 21 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gr_vgpu.c | 15 |
3 files changed, 15 insertions, 50 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/gk20a/vgpu_gr_gk20a.c b/drivers/gpu/nvgpu/vgpu/gk20a/vgpu_gr_gk20a.c index a8526457..0ba8db56 100644 --- a/drivers/gpu/nvgpu/vgpu/gk20a/vgpu_gr_gk20a.c +++ b/drivers/gpu/nvgpu/vgpu/gk20a/vgpu_gr_gk20a.c | |||
@@ -13,37 +13,9 @@ | |||
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | 15 | ||
16 | #include "gk20a/hw_gr_gk20a.h" | ||
17 | #include "gk20a/gk20a.h" | 16 | #include "gk20a/gk20a.h" |
18 | #include "vgpu/vgpu.h" | ||
19 | #include "vgpu_gr_gk20a.h" | 17 | #include "vgpu_gr_gk20a.h" |
20 | 18 | ||
21 | static void vgpu_gk20a_detect_sm_arch(struct gk20a *g) | ||
22 | { | ||
23 | u32 v = 0, raw_version, version = 0; | ||
24 | |||
25 | gk20a_dbg_fn(""); | ||
26 | |||
27 | if (vgpu_get_attribute(vgpu_get_handle(g), | ||
28 | TEGRA_VGPU_ATTRIB_GPC0_TPC0_SM_ARCH, &v)) | ||
29 | gk20a_err(dev_from_gk20a(g), "failed to retrieve SM arch"); | ||
30 | |||
31 | raw_version = gr_gpc0_tpc0_sm_arch_spa_version_v(v); | ||
32 | |||
33 | if (raw_version == gr_gpc0_tpc0_sm_arch_spa_version_smkepler_lp_v()) | ||
34 | version = 0x320; /* SM 3.2 */ | ||
35 | else | ||
36 | gk20a_err(dev_from_gk20a(g), "Unknown SM version 0x%x", | ||
37 | raw_version); | ||
38 | |||
39 | /* on Kepler, SM version == SPA version */ | ||
40 | g->gpu_characteristics.sm_arch_spa_version = version; | ||
41 | g->gpu_characteristics.sm_arch_sm_version = version; | ||
42 | |||
43 | g->gpu_characteristics.sm_arch_warp_count = | ||
44 | gr_gpc0_tpc0_sm_arch_warp_count_v(v); | ||
45 | } | ||
46 | |||
47 | static int vgpu_gk20a_init_fs_state(struct gk20a *g) | 19 | static int vgpu_gk20a_init_fs_state(struct gk20a *g) |
48 | { | 20 | { |
49 | struct gr_gk20a *gr = &g->gr; | 21 | struct gr_gk20a *gr = &g->gr; |
@@ -73,6 +45,5 @@ static int vgpu_gk20a_init_fs_state(struct gk20a *g) | |||
73 | 45 | ||
74 | void vgpu_gk20a_init_gr_ops(struct gpu_ops *gops) | 46 | void vgpu_gk20a_init_gr_ops(struct gpu_ops *gops) |
75 | { | 47 | { |
76 | gops->gr.detect_sm_arch = vgpu_gk20a_detect_sm_arch; | ||
77 | gops->gr.init_fs_state = vgpu_gk20a_init_fs_state; | 48 | gops->gr.init_fs_state = vgpu_gk20a_init_fs_state; |
78 | } | 49 | } |
diff --git a/drivers/gpu/nvgpu/vgpu/gm20b/vgpu_gr_gm20b.c b/drivers/gpu/nvgpu/vgpu/gm20b/vgpu_gr_gm20b.c index aaddd218..8e44eda4 100644 --- a/drivers/gpu/nvgpu/vgpu/gm20b/vgpu_gr_gm20b.c +++ b/drivers/gpu/nvgpu/vgpu/gm20b/vgpu_gr_gm20b.c | |||
@@ -13,29 +13,9 @@ | |||
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | 15 | ||
16 | #include "gm20b/hw_gr_gm20b.h" | ||
17 | #include "gk20a/gk20a.h" | 16 | #include "gk20a/gk20a.h" |
18 | #include "vgpu/vgpu.h" | ||
19 | #include "vgpu_gr_gm20b.h" | 17 | #include "vgpu_gr_gm20b.h" |
20 | 18 | ||
21 | static void vgpu_gm20b_detect_sm_arch(struct gk20a *g) | ||
22 | { | ||
23 | u32 v = 0; | ||
24 | |||
25 | gk20a_dbg_fn(""); | ||
26 | |||
27 | if (vgpu_get_attribute(vgpu_get_handle(g), | ||
28 | TEGRA_VGPU_ATTRIB_GPC0_TPC0_SM_ARCH, &v)) | ||
29 | gk20a_err(dev_from_gk20a(g), "failed to retrieve SM arch"); | ||
30 | |||
31 | g->gpu_characteristics.sm_arch_spa_version = | ||
32 | gr_gpc0_tpc0_sm_arch_spa_version_v(v); | ||
33 | g->gpu_characteristics.sm_arch_sm_version = | ||
34 | gr_gpc0_tpc0_sm_arch_sm_version_v(v); | ||
35 | g->gpu_characteristics.sm_arch_warp_count = | ||
36 | gr_gpc0_tpc0_sm_arch_warp_count_v(v); | ||
37 | } | ||
38 | |||
39 | static int vgpu_gm20b_init_fs_state(struct gk20a *g) | 19 | static int vgpu_gm20b_init_fs_state(struct gk20a *g) |
40 | { | 20 | { |
41 | struct gr_gk20a *gr = &g->gr; | 21 | struct gr_gk20a *gr = &g->gr; |
@@ -60,6 +40,5 @@ static int vgpu_gm20b_init_fs_state(struct gk20a *g) | |||
60 | 40 | ||
61 | void vgpu_gm20b_init_gr_ops(struct gpu_ops *gops) | 41 | void vgpu_gm20b_init_gr_ops(struct gpu_ops *gops) |
62 | { | 42 | { |
63 | gops->gr.detect_sm_arch = vgpu_gm20b_detect_sm_arch; | ||
64 | gops->gr.init_fs_state = vgpu_gm20b_init_fs_state; | 43 | gops->gr.init_fs_state = vgpu_gm20b_init_fs_state; |
65 | } | 44 | } |
diff --git a/drivers/gpu/nvgpu/vgpu/gr_vgpu.c b/drivers/gpu/nvgpu/vgpu/gr_vgpu.c index bb52347f..a2af0162 100644 --- a/drivers/gpu/nvgpu/vgpu/gr_vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/gr_vgpu.c | |||
@@ -17,6 +17,20 @@ | |||
17 | #include "gk20a/hw_gr_gk20a.h" | 17 | #include "gk20a/hw_gr_gk20a.h" |
18 | #include "gk20a/dbg_gpu_gk20a.h" | 18 | #include "gk20a/dbg_gpu_gk20a.h" |
19 | 19 | ||
20 | static void vgpu_gr_detect_sm_arch(struct gk20a *g) | ||
21 | { | ||
22 | struct vgpu_priv_data *priv = vgpu_get_priv_data(g); | ||
23 | |||
24 | gk20a_dbg_fn(""); | ||
25 | |||
26 | g->gpu_characteristics.sm_arch_sm_version = | ||
27 | priv->constants.sm_arch_sm_version; | ||
28 | g->gpu_characteristics.sm_arch_spa_version = | ||
29 | priv->constants.sm_arch_spa_version; | ||
30 | g->gpu_characteristics.sm_arch_warp_count = | ||
31 | priv->constants.sm_arch_warp_count; | ||
32 | } | ||
33 | |||
20 | static int vgpu_gr_commit_inst(struct channel_gk20a *c, u64 gpu_va) | 34 | static int vgpu_gr_commit_inst(struct channel_gk20a *c, u64 gpu_va) |
21 | { | 35 | { |
22 | struct tegra_vgpu_cmd_msg msg; | 36 | struct tegra_vgpu_cmd_msg msg; |
@@ -1095,6 +1109,7 @@ static int vgpu_gr_update_hwpm_ctxsw_mode(struct gk20a *g, | |||
1095 | 1109 | ||
1096 | void vgpu_init_gr_ops(struct gpu_ops *gops) | 1110 | void vgpu_init_gr_ops(struct gpu_ops *gops) |
1097 | { | 1111 | { |
1112 | gops->gr.detect_sm_arch = vgpu_gr_detect_sm_arch; | ||
1098 | gops->gr.free_channel_ctx = vgpu_gr_free_channel_ctx; | 1113 | gops->gr.free_channel_ctx = vgpu_gr_free_channel_ctx; |
1099 | gops->gr.alloc_obj_ctx = vgpu_gr_alloc_obj_ctx; | 1114 | gops->gr.alloc_obj_ctx = vgpu_gr_alloc_obj_ctx; |
1100 | gops->gr.free_obj_ctx = vgpu_gr_free_obj_ctx; | 1115 | gops->gr.free_obj_ctx = vgpu_gr_free_obj_ctx; |