summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Zhao <rizhao@nvidia.com>2016-07-25 14:19:21 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2016-08-15 14:41:21 -0400
commit233862859a759b14353d743c0bce7d0df18e49ca (patch)
tree11bf4894ec20d9fc67e3842269b48e748261a8ef
parent47fe8460e96413c10ec84261895418d6b59bc690 (diff)
gpu: nvgpu: vgpu: add getting ltc constants
move below attributes to constants: TEGRA_VGPU_ATTRIB_COMPTAG_LINES TEGRA_VGPU_ATTRIB_L2_SIZE TEGRA_VGPU_ATTRIB_CACHELINE_SIZE TEGRA_VGPU_ATTRIB_COMPTAGS_PER_CACHELINE TEGRA_VGPU_ATTRIB_SLICES_PER_LTC TEGRA_VGPU_ATTRIB_LTC_COUNT JIRA VFND-2103 Change-Id: Iecf9717ee553a16ffe8de445be5bfe5a99c3a094 Signed-off-by: Richard Zhao <rizhao@nvidia.com> Reviewed-on: http://git-master/r/1190480 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Vladislav Buzov <vbuzov@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/vgpu/ltc_vgpu.c36
-rw-r--r--include/linux/tegra_vgpu.h18
2 files changed, 21 insertions, 33 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/ltc_vgpu.c b/drivers/gpu/nvgpu/vgpu/ltc_vgpu.c
index 3e3f67c6..dc4d47cb 100644
--- a/drivers/gpu/nvgpu/vgpu/ltc_vgpu.c
+++ b/drivers/gpu/nvgpu/vgpu/ltc_vgpu.c
@@ -17,39 +17,25 @@
17 17
18static int vgpu_determine_L2_size_bytes(struct gk20a *g) 18static int vgpu_determine_L2_size_bytes(struct gk20a *g)
19{ 19{
20 u32 cache_size = 0; 20 struct vgpu_priv_data *priv = vgpu_get_priv_data(g);
21 21
22 gk20a_dbg_fn(""); 22 gk20a_dbg_fn("");
23 23
24 if (vgpu_get_attribute(vgpu_get_handle(g), 24 return priv->constants.l2_size;
25 TEGRA_VGPU_ATTRIB_L2_SIZE, &cache_size))
26 dev_err(dev_from_gk20a(g), "unable to get L2 size\n");
27
28 return cache_size;
29} 25}
30 26
31static int vgpu_ltc_init_comptags(struct gk20a *g, struct gr_gk20a *gr) 27static int vgpu_ltc_init_comptags(struct gk20a *g, struct gr_gk20a *gr)
32{ 28{
29 struct vgpu_priv_data *priv = vgpu_get_priv_data(g);
33 u32 max_comptag_lines = 0; 30 u32 max_comptag_lines = 0;
34 int err; 31 int err;
35 32
36 gk20a_dbg_fn(""); 33 gk20a_dbg_fn("");
37 34
38 err = vgpu_get_attribute(vgpu_get_handle(g), 35 gr->cacheline_size = priv->constants.cacheline_size;
39 TEGRA_VGPU_ATTRIB_CACHELINE_SIZE, 36 gr->comptags_per_cacheline = priv->constants.comptags_per_cacheline;
40 &gr->cacheline_size); 37 gr->slices_per_ltc = priv->constants.slices_per_ltc;
41 err |= vgpu_get_attribute(vgpu_get_handle(g), 38 max_comptag_lines = priv->constants.comptag_lines;
42 TEGRA_VGPU_ATTRIB_COMPTAGS_PER_CACHELINE,
43 &gr->comptags_per_cacheline);
44 err |= vgpu_get_attribute(vgpu_get_handle(g),
45 TEGRA_VGPU_ATTRIB_SLICES_PER_LTC,
46 &gr->slices_per_ltc);
47 err |= vgpu_get_attribute(vgpu_get_handle(g),
48 TEGRA_VGPU_ATTRIB_COMPTAG_LINES, &max_comptag_lines);
49 if (err) {
50 dev_err(dev_from_gk20a(g), "failed to get ctags atributes\n");
51 return -ENXIO;
52 }
53 39
54 if (max_comptag_lines < 2) 40 if (max_comptag_lines < 2)
55 return -ENXIO; 41 return -ENXIO;
@@ -63,15 +49,11 @@ static int vgpu_ltc_init_comptags(struct gk20a *g, struct gr_gk20a *gr)
63 49
64static void vgpu_ltc_init_fs_state(struct gk20a *g) 50static void vgpu_ltc_init_fs_state(struct gk20a *g)
65{ 51{
66 u32 ltc_count = 0; 52 struct vgpu_priv_data *priv = vgpu_get_priv_data(g);
67 int err;
68 53
69 gk20a_dbg_fn(""); 54 gk20a_dbg_fn("");
70 55
71 err = vgpu_get_attribute(vgpu_get_handle(g), 56 g->ltc_count = priv->constants.ltc_count;
72 TEGRA_VGPU_ATTRIB_LTC_COUNT, &ltc_count);
73 WARN_ON(err);
74 g->ltc_count = ltc_count;
75} 57}
76 58
77void vgpu_init_ltc_ops(struct gpu_ops *gops) 59void vgpu_init_ltc_ops(struct gpu_ops *gops)
diff --git a/include/linux/tegra_vgpu.h b/include/linux/tegra_vgpu.h
index 504a31ad..ef4c36d9 100644
--- a/include/linux/tegra_vgpu.h
+++ b/include/linux/tegra_vgpu.h
@@ -114,22 +114,22 @@ enum {
114 TEGRA_VGPU_ATTRIB_NUM_CHANNELS = 0, /*deprecated */ 114 TEGRA_VGPU_ATTRIB_NUM_CHANNELS = 0, /*deprecated */
115 TEGRA_VGPU_ATTRIB_GOLDEN_CTX_SIZE = 1, /* deprecated */ 115 TEGRA_VGPU_ATTRIB_GOLDEN_CTX_SIZE = 1, /* deprecated */
116 TEGRA_VGPU_ATTRIB_ZCULL_CTX_SIZE = 2, /* deprecated */ 116 TEGRA_VGPU_ATTRIB_ZCULL_CTX_SIZE = 2, /* deprecated */
117 TEGRA_VGPU_ATTRIB_COMPTAG_LINES = 3, 117 TEGRA_VGPU_ATTRIB_COMPTAG_LINES = 3, /* deprecated */
118 TEGRA_VGPU_ATTRIB_GPC_COUNT = 4, 118 TEGRA_VGPU_ATTRIB_GPC_COUNT = 4,
119 TEGRA_VGPU_ATTRIB_MAX_TPC_PER_GPC_COUNT = 5, 119 TEGRA_VGPU_ATTRIB_MAX_TPC_PER_GPC_COUNT = 5,
120 TEGRA_VGPU_ATTRIB_MAX_TPC_COUNT = 6, 120 TEGRA_VGPU_ATTRIB_MAX_TPC_COUNT = 6,
121 TEGRA_VGPU_ATTRIB_PMC_BOOT_0 = 7, /* deprecated */ 121 TEGRA_VGPU_ATTRIB_PMC_BOOT_0 = 7, /* deprecated */
122 TEGRA_VGPU_ATTRIB_L2_SIZE = 8, 122 TEGRA_VGPU_ATTRIB_L2_SIZE = 8, /* deprecated */
123 TEGRA_VGPU_ATTRIB_GPC0_TPC0_SM_ARCH = 9, 123 TEGRA_VGPU_ATTRIB_GPC0_TPC0_SM_ARCH = 9,
124 TEGRA_VGPU_ATTRIB_NUM_FBPS = 10, 124 TEGRA_VGPU_ATTRIB_NUM_FBPS = 10,
125 TEGRA_VGPU_ATTRIB_FBP_EN_MASK = 11, 125 TEGRA_VGPU_ATTRIB_FBP_EN_MASK = 11,
126 TEGRA_VGPU_ATTRIB_MAX_LTC_PER_FBP = 12, 126 TEGRA_VGPU_ATTRIB_MAX_LTC_PER_FBP = 12,
127 TEGRA_VGPU_ATTRIB_MAX_LTS_PER_LTC = 13, 127 TEGRA_VGPU_ATTRIB_MAX_LTS_PER_LTC = 13,
128 TEGRA_VGPU_ATTRIB_GPC0_TPC_MASK = 14, 128 TEGRA_VGPU_ATTRIB_GPC0_TPC_MASK = 14,
129 TEGRA_VGPU_ATTRIB_CACHELINE_SIZE = 15, 129 TEGRA_VGPU_ATTRIB_CACHELINE_SIZE = 15, /* deprecated */
130 TEGRA_VGPU_ATTRIB_COMPTAGS_PER_CACHELINE = 16, 130 TEGRA_VGPU_ATTRIB_COMPTAGS_PER_CACHELINE = 16, /* deprecated */
131 TEGRA_VGPU_ATTRIB_SLICES_PER_LTC = 17, 131 TEGRA_VGPU_ATTRIB_SLICES_PER_LTC = 17, /* deprecated */
132 TEGRA_VGPU_ATTRIB_LTC_COUNT = 18, 132 TEGRA_VGPU_ATTRIB_LTC_COUNT = 18, /* deprecated */
133 TEGRA_VGPU_ATTRIB_TPC_COUNT = 19, 133 TEGRA_VGPU_ATTRIB_TPC_COUNT = 19,
134 TEGRA_VGPU_ATTRIB_GPC0_TPC_COUNT = 20, 134 TEGRA_VGPU_ATTRIB_GPC0_TPC_COUNT = 20,
135 TEGRA_VGPU_ATTRIB_MAX_FREQ = 21, /* deprecated */ 135 TEGRA_VGPU_ATTRIB_MAX_FREQ = 21, /* deprecated */
@@ -411,6 +411,12 @@ struct tegra_vgpu_constants_params {
411 u32 num_channels; 411 u32 num_channels;
412 u32 golden_ctx_size; 412 u32 golden_ctx_size;
413 u32 zcull_ctx_size; 413 u32 zcull_ctx_size;
414 u32 l2_size;
415 u32 ltc_count;
416 u32 cacheline_size;
417 u32 slices_per_ltc;
418 u32 comptags_per_cacheline;
419 u32 comptag_lines;
414}; 420};
415 421
416struct tegra_vgpu_cmd_msg { 422struct tegra_vgpu_cmd_msg {