diff options
author | Sunny He <suhe@nvidia.com> | 2017-08-11 17:44:06 -0400 |
---|---|---|
committer | Shu Zhong <shuz@nvidia.com> | 2017-08-11 17:57:42 -0400 |
commit | 5248d6b4b5f74a5dca492d7666e80a819734f8da (patch) | |
tree | 47b7fd47d02fb39b210d9e21cd4ef36d898450b1 /drivers/gpu | |
parent | 36c07aaf5da4d0e739c5143ed00d4ca8a2263ce1 (diff) |
Revert "gpu: nvgpu: remove kind map inheritance"
Conflicts with gv100 changes
This reverts commit 83e49b39181a86d32f6350c65659b5892f8f7670.
Change-Id: Ic5720fd3c214fa306645fb628a28ecf7d6d0c26d
Signed-off-by: Sunny He <suhe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1537673
Reviewed-by: Shu Zhong <shuz@nvidia.com>
Tested-by: Shu Zhong <shuz@nvidia.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/kind_gk20a.c | 319 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/kind_gk20a.h | 18 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/fb_gm20b.c | 383 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/fb_gp10b.c | 418 |
4 files changed, 211 insertions, 927 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c index 1d7a0ebf..57cf028b 100644 --- a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c | |||
@@ -23,6 +23,22 @@ | |||
23 | 23 | ||
24 | /* TBD: generate these from kind_macros.h */ | 24 | /* TBD: generate these from kind_macros.h */ |
25 | 25 | ||
26 | /* TBD: not sure on the work creation for gk20a, doubtful */ | ||
27 | static inline bool gk20a_kind_work_creation_sked(u8 k) | ||
28 | { | ||
29 | return false; | ||
30 | } | ||
31 | static inline bool gk20a_kind_work_creation_host(u8 k) | ||
32 | { | ||
33 | return false; | ||
34 | } | ||
35 | |||
36 | static inline bool gk20a_kind_work_creation(u8 k) | ||
37 | { | ||
38 | return gk20a_kind_work_creation_sked(k) || | ||
39 | gk20a_kind_work_creation_host(k); | ||
40 | } | ||
41 | |||
26 | /* | 42 | /* |
27 | * Use noinline_for_stack for these huge functions, otherwise GCC 4.7 will | 43 | * Use noinline_for_stack for these huge functions, otherwise GCC 4.7 will |
28 | * blow up when building a coverage-enabled kernel. (error: the frame size of | 44 | * blow up when building a coverage-enabled kernel. (error: the frame size of |
@@ -32,174 +48,177 @@ | |||
32 | /* note: taken from the !2cs_compression case */ | 48 | /* note: taken from the !2cs_compression case */ |
33 | static noinline_for_stack bool gk20a_kind_supported(u8 k) | 49 | static noinline_for_stack bool gk20a_kind_supported(u8 k) |
34 | { | 50 | { |
35 | return gk20a_kind_work_creation(k) | 51 | return gk20a_kind_work_creation(k) || |
36 | || (k == gmmu_pte_kind_invalid_v()) | 52 | (k == gmmu_pte_kind_invalid_v()) || |
37 | || (k == gmmu_pte_kind_pitch_v()) | 53 | (k == gmmu_pte_kind_pitch_v()) || |
38 | || (k >= gmmu_pte_kind_z16_v() && | 54 | (k >= gmmu_pte_kind_z16_v() && |
39 | k <= gmmu_pte_kind_z16_ms8_2c_v()) | 55 | k <= gmmu_pte_kind_z16_ms8_2c_v()) || |
40 | || (k >= gmmu_pte_kind_z16_2z_v() && | 56 | (k >= gmmu_pte_kind_z16_2z_v() && |
41 | k <= gmmu_pte_kind_z16_ms8_2z_v()) | 57 | k <= gmmu_pte_kind_z16_ms8_2z_v()) || |
42 | || (k == gmmu_pte_kind_s8z24_v()) | 58 | (k == gmmu_pte_kind_s8z24_v()) || |
43 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | 59 | (k >= gmmu_pte_kind_s8z24_2cz_v() && |
44 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) | 60 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) || |
45 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && | 61 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && |
46 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | 62 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) || |
47 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 63 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
48 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) | 64 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) || |
49 | || (k == gmmu_pte_kind_z24s8_v()) | 65 | (k == gmmu_pte_kind_z24s8_v()) || |
50 | || (k >= gmmu_pte_kind_z24s8_2cz_v() && | 66 | (k >= gmmu_pte_kind_z24s8_2cz_v() && |
51 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) | 67 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) || |
52 | || (k == gmmu_pte_kind_zf32_v()) | 68 | (k == gmmu_pte_kind_zf32_v()) || |
53 | || (k >= gmmu_pte_kind_zf32_2cz_v() && | 69 | (k >= gmmu_pte_kind_zf32_2cz_v() && |
54 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) | 70 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) || |
55 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && | 71 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && |
56 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) | 72 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) || |
57 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && | 73 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && |
58 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) | 74 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) || |
59 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && | 75 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && |
60 | k <= gmmu_pte_kind_zf32_x24s8_v()) | 76 | k <= gmmu_pte_kind_zf32_x24s8_v()) || |
61 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | 77 | (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && |
62 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) | 78 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) || |
63 | || (k == gmmu_pte_kind_generic_16bx2_v()) | 79 | (k == gmmu_pte_kind_generic_16bx2_v()) || |
64 | || (k == gmmu_pte_kind_c32_2c_v()) | 80 | (k == gmmu_pte_kind_c32_2c_v()) || |
65 | || (k == gmmu_pte_kind_c32_2cra_v()) | 81 | (k == gmmu_pte_kind_c32_2cra_v()) || |
66 | || (k == gmmu_pte_kind_c32_ms2_2c_v()) | 82 | (k == gmmu_pte_kind_c32_ms2_2c_v()) || |
67 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | 83 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || |
68 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 84 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
69 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) | 85 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) || |
70 | || (k >= gmmu_pte_kind_c32_ms4_2cra_v() && | 86 | (k >= gmmu_pte_kind_c32_ms4_2cra_v() && |
71 | k <= gmmu_pte_kind_c64_2c_v()) | 87 | k <= gmmu_pte_kind_c64_2c_v()) || |
72 | || (k == gmmu_pte_kind_c64_2cra_v()) | 88 | (k == gmmu_pte_kind_c64_2cra_v()) || |
73 | || (k == gmmu_pte_kind_c64_ms2_2c_v()) | 89 | (k == gmmu_pte_kind_c64_ms2_2c_v()) || |
74 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | 90 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || |
75 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 91 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
76 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) | 92 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) || |
77 | || (k >= gmmu_pte_kind_c64_ms4_2cra_v() && | 93 | (k >= gmmu_pte_kind_c64_ms4_2cra_v() && |
78 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) | 94 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) || |
79 | || (k == gmmu_pte_kind_pitch_no_swizzle_v()); | 95 | (k == gmmu_pte_kind_pitch_no_swizzle_v()); |
80 | } | 96 | } |
81 | 97 | ||
82 | static noinline_for_stack bool gk20a_kind_z(u8 k) | 98 | static noinline_for_stack bool gk20a_kind_z(u8 k) |
83 | { | 99 | { |
84 | return (k >= gmmu_pte_kind_z16_v() && | 100 | return (k >= gmmu_pte_kind_z16_v() && |
85 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | 101 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) || |
86 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | 102 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && |
87 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | 103 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) || |
88 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 104 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
89 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) | 105 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) || |
90 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | 106 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && |
91 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | 107 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) || |
92 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | 108 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && |
93 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | 109 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) || |
94 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | 110 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && |
95 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | 111 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) || |
96 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | 112 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && |
97 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()); | 113 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) |
114 | /* || | ||
115 | (k >= gmmu_pte_kind_zv32_x24s8_2cszv_v() && | ||
116 | k <= gmmu_pte_kind_xf32_x24s8_ms16_2cs_v())*/; | ||
98 | } | 117 | } |
99 | 118 | ||
100 | static noinline_for_stack bool gk20a_kind_c(u8 k) | 119 | static noinline_for_stack bool gk20a_kind_c(u8 k) |
101 | { | 120 | { |
102 | return gk20a_kind_work_creation(k) | 121 | return gk20a_kind_work_creation(k) || |
103 | || (k == gmmu_pte_kind_pitch_v()) | 122 | (k == gmmu_pte_kind_pitch_v()) || |
104 | || (k == gmmu_pte_kind_generic_16bx2_v()) | 123 | (k == gmmu_pte_kind_generic_16bx2_v()) || |
105 | || (k >= gmmu_pte_kind_c32_2c_v() && | 124 | (k >= gmmu_pte_kind_c32_2c_v() && |
106 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | 125 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) || |
107 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | 126 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || |
108 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 127 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
109 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | 128 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) || |
110 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | 129 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || |
111 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 130 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
112 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); | 131 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); |
113 | } | 132 | } |
114 | 133 | ||
115 | static noinline_for_stack bool gk20a_kind_compressible(u8 k) | 134 | static noinline_for_stack bool gk20a_kind_compressible(u8 k) |
116 | { | 135 | { |
117 | return (k >= gmmu_pte_kind_z16_2c_v() && | 136 | return (k >= gmmu_pte_kind_z16_2c_v() && |
118 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | 137 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) || |
119 | || (k >= gmmu_pte_kind_s8z24_1z_v() && | 138 | (k >= gmmu_pte_kind_s8z24_1z_v() && |
120 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | 139 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) || |
121 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | 140 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && |
122 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | 141 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) || |
123 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 142 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
124 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | 143 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) || |
125 | || (k >= gmmu_pte_kind_z24s8_1z_v() && | 144 | (k >= gmmu_pte_kind_z24s8_1z_v() && |
126 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | 145 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) || |
127 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | 146 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && |
128 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | 147 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) || |
129 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | 148 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && |
130 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | 149 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) || |
131 | || (k >= gmmu_pte_kind_zf32_1z_v() && | 150 | (k >= gmmu_pte_kind_zf32_1z_v() && |
132 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | 151 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) || |
133 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | 152 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && |
134 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | 153 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) || |
135 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | 154 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && |
136 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | 155 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) || |
137 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | 156 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && |
138 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | 157 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) || |
139 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | 158 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && |
140 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | 159 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) || |
141 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | 160 | (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && |
142 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | 161 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) || |
143 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | 162 | (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && |
144 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | 163 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) || |
145 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | 164 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || |
146 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 165 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
147 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | 166 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) || |
148 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | 167 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || |
149 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 168 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
150 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | 169 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); |
151 | } | 170 | } |
152 | 171 | ||
153 | static noinline_for_stack bool gk20a_kind_zbc(u8 k) | 172 | static noinline_for_stack bool gk20a_kind_zbc(u8 k) |
154 | { | 173 | { |
155 | return (k >= gmmu_pte_kind_z16_2c_v() && | 174 | return (k >= gmmu_pte_kind_z16_2c_v() && |
156 | k <= gmmu_pte_kind_z16_ms16_2c_v()) | 175 | k <= gmmu_pte_kind_z16_ms16_2c_v()) || |
157 | || (k >= gmmu_pte_kind_z16_4cz_v() && | 176 | (k >= gmmu_pte_kind_z16_4cz_v() && |
158 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | 177 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) || |
159 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | 178 | (k >= gmmu_pte_kind_s8z24_2cz_v() && |
160 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | 179 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) || |
161 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && | 180 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && |
162 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | 181 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) || |
163 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 182 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
164 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) | 183 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) || |
165 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && | 184 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && |
166 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | 185 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) || |
167 | || (k >= gmmu_pte_kind_z24s8_2cs_v() && | 186 | (k >= gmmu_pte_kind_z24s8_2cs_v() && |
168 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | 187 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) || |
169 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && | 188 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && |
170 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | 189 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) || |
171 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | 190 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && |
172 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) | 191 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) || |
173 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && | 192 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && |
174 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | 193 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) || |
175 | || (k >= gmmu_pte_kind_zf32_2cs_v() && | 194 | (k >= gmmu_pte_kind_zf32_2cs_v() && |
176 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | 195 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) || |
177 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | 196 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && |
178 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | 197 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) || |
179 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && | 198 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && |
180 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | 199 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) || |
181 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | 200 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && |
182 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | 201 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) || |
183 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && | 202 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && |
184 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | 203 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) || |
185 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | 204 | (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && |
186 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | 205 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) || |
187 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | 206 | (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && |
188 | k <= gmmu_pte_kind_c32_2cra_v()) | 207 | k <= gmmu_pte_kind_c32_2cra_v()) || |
189 | || (k >= gmmu_pte_kind_c32_ms2_2c_v() && | 208 | (k >= gmmu_pte_kind_c32_ms2_2c_v() && |
190 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | 209 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) || |
191 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | 210 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || |
192 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 211 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
193 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) | 212 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) || |
194 | || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && | 213 | (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && |
195 | k <= gmmu_pte_kind_c64_2cra_v()) | 214 | k <= gmmu_pte_kind_c64_2cra_v()) || |
196 | || (k >= gmmu_pte_kind_c64_ms2_2c_v() && | 215 | (k >= gmmu_pte_kind_c64_ms2_2c_v() && |
197 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | 216 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) || |
198 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | 217 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || |
199 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 218 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
200 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) | 219 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) || |
201 | || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && | 220 | (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && |
202 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | 221 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); |
203 | } | 222 | } |
204 | 223 | ||
205 | u8 gk20a_uc_kind_map[256]; | 224 | u8 gk20a_uc_kind_map[256]; |
diff --git a/drivers/gpu/nvgpu/gk20a/kind_gk20a.h b/drivers/gpu/nvgpu/gk20a/kind_gk20a.h index dcc33f7d..28d5802c 100644 --- a/drivers/gpu/nvgpu/gk20a/kind_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/kind_gk20a.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * GK20A memory kind management | 4 | * GK20A memory kind management |
5 | * | 5 | * |
6 | * Copyright (c) 2011-2017, NVIDIA CORPORATION. All rights reserved. | 6 | * Copyright (c) 2011-2014, NVIDIA CORPORATION. All rights reserved. |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or modify it | 8 | * This program is free software; you can redistribute it and/or modify it |
9 | * under the terms and conditions of the GNU General Public License, | 9 | * under the terms and conditions of the GNU General Public License, |
@@ -36,22 +36,6 @@ extern u16 gk20a_kind_attr[]; | |||
36 | #define GK20A_KIND_ATTR_C BIT(3) | 36 | #define GK20A_KIND_ATTR_C BIT(3) |
37 | #define GK20A_KIND_ATTR_ZBC BIT(4) | 37 | #define GK20A_KIND_ATTR_ZBC BIT(4) |
38 | 38 | ||
39 | /* TBD: not sure on the work creation for gk20a, doubtful */ | ||
40 | static inline bool gk20a_kind_work_creation_sked(u8 k) | ||
41 | { | ||
42 | return false; | ||
43 | } | ||
44 | static inline bool gk20a_kind_work_creation_host(u8 k) | ||
45 | { | ||
46 | return false; | ||
47 | } | ||
48 | |||
49 | static inline bool gk20a_kind_work_creation(u8 k) | ||
50 | { | ||
51 | return gk20a_kind_work_creation_sked(k) || | ||
52 | gk20a_kind_work_creation_host(k); | ||
53 | } | ||
54 | |||
55 | static inline bool gk20a_kind_is_supported(u8 k) | 39 | static inline bool gk20a_kind_is_supported(u8 k) |
56 | { | 40 | { |
57 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_SUPPORTED); | 41 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_SUPPORTED); |
diff --git a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c index 47b4313b..8b811cbe 100644 --- a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c | |||
@@ -33,402 +33,53 @@ static void fb_gm20b_init_fs_state(struct gk20a *g) | |||
33 | g->ltc_count); | 33 | g->ltc_count); |
34 | } | 34 | } |
35 | 35 | ||
36 | noinline_for_stack void gm20b_init_uncompressed_kind_map(void) | 36 | void gm20b_init_uncompressed_kind_map(void) |
37 | { | 37 | { |
38 | int i; | 38 | gk20a_init_uncompressed_kind_map(); |
39 | 39 | ||
40 | for (i = 0; i < 256; i++) | ||
41 | gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v(); | ||
42 | |||
43 | /* From gm20b */ | ||
44 | gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] = | 40 | gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] = |
45 | gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] = | 41 | gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] = |
46 | gmmu_pte_kind_s8_v(); | 42 | gmmu_pte_kind_s8_v(); |
47 | |||
48 | /* From gk20a */ | ||
49 | gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] = | ||
50 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] = | ||
51 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] = | ||
52 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] = | ||
53 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] = | ||
54 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] = | ||
55 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] = | ||
56 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] = | ||
57 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] = | ||
58 | gmmu_pte_kind_z16_v(); | ||
59 | |||
60 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] = | ||
61 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] = | ||
62 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] = | ||
63 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] = | ||
64 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] = | ||
65 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] = | ||
66 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] = | ||
67 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] = | ||
68 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] = | ||
69 | gmmu_pte_kind_s8z24_v(); | ||
70 | |||
71 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] = | ||
72 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] = | ||
73 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] = | ||
74 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] = | ||
75 | gmmu_pte_kind_v8z24_ms4_vc4_v(); | ||
76 | |||
77 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] = | ||
78 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] = | ||
79 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] = | ||
80 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] = | ||
81 | gmmu_pte_kind_v8z24_ms8_vc8_v(); | ||
82 | |||
83 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] = | ||
84 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] = | ||
85 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] = | ||
86 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] = | ||
87 | gmmu_pte_kind_v8z24_ms4_vc12_v(); | ||
88 | |||
89 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] = | ||
90 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] = | ||
91 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] = | ||
92 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] = | ||
93 | gmmu_pte_kind_v8z24_ms8_vc24_v(); | ||
94 | |||
95 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] = | ||
96 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] = | ||
97 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] = | ||
98 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] = | ||
99 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] = | ||
100 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] = | ||
101 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] = | ||
102 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] = | ||
103 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] = | ||
104 | gmmu_pte_kind_z24s8_v(); | ||
105 | |||
106 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] = | ||
107 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] = | ||
108 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] = | ||
109 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] = | ||
110 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] = | ||
111 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] = | ||
112 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] = | ||
113 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] = | ||
114 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] = | ||
115 | gmmu_pte_kind_zf32_v(); | ||
116 | |||
117 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] = | ||
118 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] = | ||
119 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] = | ||
120 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v(); | ||
121 | |||
122 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] = | ||
123 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] = | ||
124 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] = | ||
125 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v(); | ||
126 | |||
127 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] = | ||
128 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] = | ||
129 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] = | ||
130 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v(); | ||
131 | |||
132 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] = | ||
133 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] = | ||
134 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] = | ||
135 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v(); | ||
136 | |||
137 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] = | ||
138 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] = | ||
139 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] = | ||
140 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v(); | ||
141 | |||
142 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] = | ||
143 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] = | ||
144 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] = | ||
145 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v(); | ||
146 | |||
147 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] = | ||
148 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] = | ||
149 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] = | ||
150 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v(); | ||
151 | |||
152 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] = | ||
153 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] = | ||
154 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] = | ||
155 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v(); | ||
156 | |||
157 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] = | ||
158 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] = | ||
159 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] = | ||
160 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] = | ||
161 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] = | ||
162 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] = | ||
163 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] = | ||
164 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] = | ||
165 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] = | ||
166 | gmmu_pte_kind_zf32_x24s8_v(); | ||
167 | |||
168 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] = | ||
169 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] = | ||
170 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] = | ||
171 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] = | ||
172 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] = | ||
173 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] = | ||
174 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] = | ||
175 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] = | ||
176 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] = | ||
177 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] = | ||
178 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] = | ||
179 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] = | ||
180 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] = | ||
181 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] = | ||
182 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] = | ||
183 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] = | ||
184 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] = | ||
185 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] = | ||
186 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] = | ||
187 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] = | ||
188 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] = | ||
189 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] = | ||
190 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] = | ||
191 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] = | ||
192 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] = | ||
193 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] = | ||
194 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] = | ||
195 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] = | ||
196 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] = | ||
197 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] = | ||
198 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] = | ||
199 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] = | ||
200 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] = | ||
201 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] = | ||
202 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] = | ||
203 | gmmu_pte_kind_generic_16bx2_v(); | ||
204 | |||
205 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] = | ||
206 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] = | ||
207 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] = | ||
208 | gmmu_pte_kind_z24v8_ms4_vc4_v(); | ||
209 | |||
210 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] = | ||
211 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] = | ||
212 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] = | ||
213 | gmmu_pte_kind_z24v8_ms4_vc12_v(); | ||
214 | |||
215 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] = | ||
216 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] = | ||
217 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] = | ||
218 | gmmu_pte_kind_z24v8_ms8_vc8_v(); | ||
219 | |||
220 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] = | ||
221 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] = | ||
222 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] = | ||
223 | gmmu_pte_kind_z24v8_ms8_vc24_v(); | ||
224 | |||
225 | gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] = | ||
226 | gmmu_pte_kind_x8c24_v(); | ||
227 | } | 43 | } |
228 | 44 | ||
229 | static noinline_for_stack bool gm20b_kind_supported(u8 k) | 45 | static bool gm20b_kind_supported(u8 k) |
230 | { | 46 | { |
231 | return /* From gm20b */ | 47 | return k == gmmu_pte_kind_smsked_message_v() |
232 | (k == gmmu_pte_kind_smsked_message_v()) | ||
233 | || (k >= gmmu_pte_kind_s8_v() && | 48 | || (k >= gmmu_pte_kind_s8_v() && |
234 | k <= gmmu_pte_kind_s8_2s_v()) | 49 | k <= gmmu_pte_kind_s8_2s_v()); |
235 | /* From gk20a */ | ||
236 | || gk20a_kind_work_creation(k) | ||
237 | || (k == gmmu_pte_kind_invalid_v()) | ||
238 | || (k == gmmu_pte_kind_pitch_v()) | ||
239 | || (k >= gmmu_pte_kind_z16_v() && | ||
240 | k <= gmmu_pte_kind_z16_ms8_2c_v()) | ||
241 | || (k >= gmmu_pte_kind_z16_2z_v() && | ||
242 | k <= gmmu_pte_kind_z16_ms8_2z_v()) | ||
243 | || (k == gmmu_pte_kind_s8z24_v()) | ||
244 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
245 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) | ||
246 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && | ||
247 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
248 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
249 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) | ||
250 | || (k == gmmu_pte_kind_z24s8_v()) | ||
251 | || (k >= gmmu_pte_kind_z24s8_2cz_v() && | ||
252 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) | ||
253 | || (k == gmmu_pte_kind_zf32_v()) | ||
254 | || (k >= gmmu_pte_kind_zf32_2cz_v() && | ||
255 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) | ||
256 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && | ||
257 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) | ||
258 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && | ||
259 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) | ||
260 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && | ||
261 | k <= gmmu_pte_kind_zf32_x24s8_v()) | ||
262 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
263 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) | ||
264 | || (k == gmmu_pte_kind_generic_16bx2_v()) | ||
265 | || (k == gmmu_pte_kind_c32_2c_v()) | ||
266 | || (k == gmmu_pte_kind_c32_2cra_v()) | ||
267 | || (k == gmmu_pte_kind_c32_ms2_2c_v()) | ||
268 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
269 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
270 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) | ||
271 | || (k >= gmmu_pte_kind_c32_ms4_2cra_v() && | ||
272 | k <= gmmu_pte_kind_c64_2c_v()) | ||
273 | || (k == gmmu_pte_kind_c64_2cra_v()) | ||
274 | || (k == gmmu_pte_kind_c64_ms2_2c_v()) | ||
275 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
276 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
277 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) | ||
278 | || (k >= gmmu_pte_kind_c64_ms4_2cra_v() && | ||
279 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) | ||
280 | || (k == gmmu_pte_kind_pitch_no_swizzle_v()); | ||
281 | } | ||
282 | |||
283 | static noinline_for_stack bool gm20b_kind_z(u8 k) | ||
284 | { | ||
285 | return /* From gm20b */ | ||
286 | (k >= gmmu_pte_kind_s8_v() && | ||
287 | k <= gmmu_pte_kind_s8_2s_v()) | ||
288 | /* From gk20a */ | ||
289 | || (k >= gmmu_pte_kind_z16_v() && | ||
290 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
291 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
292 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
293 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
294 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) | ||
295 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
296 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
297 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
298 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
299 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
300 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
301 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
302 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()); | ||
303 | } | 50 | } |
304 | 51 | ||
305 | static noinline_for_stack bool gm20b_kind_c(u8 k) | 52 | static bool gm20b_kind_z(u8 k) |
306 | { | 53 | { |
307 | return gk20a_kind_work_creation(k) | 54 | return (k >= gmmu_pte_kind_s8_v() && |
308 | || (k == gmmu_pte_kind_pitch_v()) | 55 | k <= gmmu_pte_kind_s8_2s_v()); |
309 | || (k == gmmu_pte_kind_generic_16bx2_v()) | ||
310 | || (k >= gmmu_pte_kind_c32_2c_v() && | ||
311 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
312 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
313 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
314 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
315 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
316 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
317 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); | ||
318 | } | 56 | } |
319 | 57 | ||
320 | static noinline_for_stack bool gm20b_kind_compressible(u8 k) | 58 | static bool gm20b_kind_compressible(u8 k) |
321 | { | 59 | { |
322 | return /* From gm20b */ | 60 | return (k >= gmmu_pte_kind_s8_v() && |
323 | (k >= gmmu_pte_kind_s8_v() && | 61 | k <= gmmu_pte_kind_s8_2s_v()); |
324 | k <= gmmu_pte_kind_s8_2s_v()) | ||
325 | /* From gk20a */ | ||
326 | || (k >= gmmu_pte_kind_z16_2c_v() && | ||
327 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
328 | || (k >= gmmu_pte_kind_s8z24_1z_v() && | ||
329 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
330 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
331 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
332 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
333 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
334 | || (k >= gmmu_pte_kind_z24s8_1z_v() && | ||
335 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
336 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
337 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
338 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
339 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
340 | || (k >= gmmu_pte_kind_zf32_1z_v() && | ||
341 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
342 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
343 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
344 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
345 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
346 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
347 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
348 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
349 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
350 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
351 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
352 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
353 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
354 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
355 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
356 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
357 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
358 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
359 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
360 | } | 62 | } |
361 | 63 | ||
362 | static noinline_for_stack bool gm20b_kind_zbc(u8 k) | 64 | static bool gm20b_kind_zbc(u8 k) |
363 | { | 65 | { |
364 | return /* From gm20b */ | 66 | return (k >= gmmu_pte_kind_s8_v() && |
365 | (k >= gmmu_pte_kind_s8_v() && | 67 | k <= gmmu_pte_kind_s8_2s_v()); |
366 | k <= gmmu_pte_kind_s8_2s_v()) | ||
367 | /* From gk20a */ | ||
368 | || (k >= gmmu_pte_kind_z16_2c_v() && | ||
369 | k <= gmmu_pte_kind_z16_ms16_2c_v()) | ||
370 | || (k >= gmmu_pte_kind_z16_4cz_v() && | ||
371 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
372 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
373 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
374 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && | ||
375 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
376 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
377 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) | ||
378 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && | ||
379 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
380 | || (k >= gmmu_pte_kind_z24s8_2cs_v() && | ||
381 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
382 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && | ||
383 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
384 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
385 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) | ||
386 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && | ||
387 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
388 | || (k >= gmmu_pte_kind_zf32_2cs_v() && | ||
389 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
390 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
391 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
392 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && | ||
393 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
394 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
395 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
396 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && | ||
397 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
398 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
399 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
400 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
401 | k <= gmmu_pte_kind_c32_2cra_v()) | ||
402 | || (k >= gmmu_pte_kind_c32_ms2_2c_v() && | ||
403 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
404 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
405 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
406 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) | ||
407 | || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && | ||
408 | k <= gmmu_pte_kind_c64_2cra_v()) | ||
409 | || (k >= gmmu_pte_kind_c64_ms2_2c_v() && | ||
410 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
411 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
412 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
413 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) | ||
414 | || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && | ||
415 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
416 | } | 68 | } |
417 | 69 | ||
418 | void gm20b_init_kind_attr(void) | 70 | void gm20b_init_kind_attr(void) |
419 | { | 71 | { |
420 | u16 k; | 72 | u16 k; |
421 | 73 | ||
422 | for (k = 0; k < NV_KIND_ATTR_SIZE; k++) { | 74 | gk20a_init_kind_attr(); |
423 | gk20a_kind_attr[k] = 0; | 75 | |
76 | for (k = 0; k < 256; k++) { | ||
424 | if (gm20b_kind_supported((u8)k)) | 77 | if (gm20b_kind_supported((u8)k)) |
425 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; | 78 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; |
426 | if (gm20b_kind_compressible((u8)k)) | 79 | if (gm20b_kind_compressible((u8)k)) |
427 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; | 80 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; |
428 | if (gm20b_kind_z((u8)k)) | 81 | if (gm20b_kind_z((u8)k)) |
429 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; | 82 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; |
430 | if (gm20b_kind_c((u8)k)) | ||
431 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C; | ||
432 | if (gm20b_kind_zbc((u8)k)) | 83 | if (gm20b_kind_zbc((u8)k)) |
433 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; | 84 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; |
434 | } | 85 | } |
diff --git a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c index 8ba9ff8e..06cd94f2 100644 --- a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c | |||
@@ -20,14 +20,8 @@ | |||
20 | 20 | ||
21 | #include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h> | 21 | #include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h> |
22 | 22 | ||
23 | static noinline_for_stack void gp10b_init_uncompressed_kind_map(void) | 23 | static void gp10b_init_uncompressed_kind_map(void) |
24 | { | 24 | { |
25 | int i; | ||
26 | |||
27 | for (i = 0; i < 256; i++) | ||
28 | gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v(); | ||
29 | |||
30 | /* From gp10b */ | ||
31 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] = | 25 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] = |
32 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] = | 26 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] = |
33 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] = | 27 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] = |
@@ -38,419 +32,55 @@ static noinline_for_stack void gp10b_init_uncompressed_kind_map(void) | |||
38 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] = | 32 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] = |
39 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] = | 33 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] = |
40 | gmmu_pte_kind_generic_16bx2_v(); | 34 | gmmu_pte_kind_generic_16bx2_v(); |
41 | |||
42 | /* From gm20b */ | ||
43 | gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] = | ||
44 | gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] = | ||
45 | gmmu_pte_kind_s8_v(); | ||
46 | |||
47 | /* From gk20a */ | ||
48 | gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] = | ||
49 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] = | ||
50 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] = | ||
51 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] = | ||
52 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] = | ||
53 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] = | ||
54 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] = | ||
55 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] = | ||
56 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] = | ||
57 | gmmu_pte_kind_z16_v(); | ||
58 | |||
59 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] = | ||
60 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] = | ||
61 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] = | ||
62 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] = | ||
63 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] = | ||
64 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] = | ||
65 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] = | ||
66 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] = | ||
67 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] = | ||
68 | gmmu_pte_kind_s8z24_v(); | ||
69 | |||
70 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] = | ||
71 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] = | ||
72 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] = | ||
73 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] = | ||
74 | gmmu_pte_kind_v8z24_ms4_vc4_v(); | ||
75 | |||
76 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] = | ||
77 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] = | ||
78 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] = | ||
79 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] = | ||
80 | gmmu_pte_kind_v8z24_ms8_vc8_v(); | ||
81 | |||
82 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] = | ||
83 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] = | ||
84 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] = | ||
85 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] = | ||
86 | gmmu_pte_kind_v8z24_ms4_vc12_v(); | ||
87 | |||
88 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] = | ||
89 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] = | ||
90 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] = | ||
91 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] = | ||
92 | gmmu_pte_kind_v8z24_ms8_vc24_v(); | ||
93 | |||
94 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] = | ||
95 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] = | ||
96 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] = | ||
97 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] = | ||
98 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] = | ||
99 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] = | ||
100 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] = | ||
101 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] = | ||
102 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] = | ||
103 | gmmu_pte_kind_z24s8_v(); | ||
104 | |||
105 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] = | ||
106 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] = | ||
107 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] = | ||
108 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] = | ||
109 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] = | ||
110 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] = | ||
111 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] = | ||
112 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] = | ||
113 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] = | ||
114 | gmmu_pte_kind_zf32_v(); | ||
115 | |||
116 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] = | ||
117 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] = | ||
118 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] = | ||
119 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v(); | ||
120 | |||
121 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] = | ||
122 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] = | ||
123 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] = | ||
124 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v(); | ||
125 | |||
126 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] = | ||
127 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] = | ||
128 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] = | ||
129 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v(); | ||
130 | |||
131 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] = | ||
132 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] = | ||
133 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] = | ||
134 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v(); | ||
135 | |||
136 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] = | ||
137 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] = | ||
138 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] = | ||
139 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v(); | ||
140 | |||
141 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] = | ||
142 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] = | ||
143 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] = | ||
144 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v(); | ||
145 | |||
146 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] = | ||
147 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] = | ||
148 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] = | ||
149 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v(); | ||
150 | |||
151 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] = | ||
152 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] = | ||
153 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] = | ||
154 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v(); | ||
155 | |||
156 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] = | ||
157 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] = | ||
158 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] = | ||
159 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] = | ||
160 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] = | ||
161 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] = | ||
162 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] = | ||
163 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] = | ||
164 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] = | ||
165 | gmmu_pte_kind_zf32_x24s8_v(); | ||
166 | |||
167 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] = | ||
168 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] = | ||
169 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] = | ||
170 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] = | ||
171 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] = | ||
172 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] = | ||
173 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] = | ||
174 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] = | ||
175 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] = | ||
176 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] = | ||
177 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] = | ||
178 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] = | ||
179 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] = | ||
180 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] = | ||
181 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] = | ||
182 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] = | ||
183 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] = | ||
184 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] = | ||
185 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] = | ||
186 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] = | ||
187 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] = | ||
188 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] = | ||
189 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] = | ||
190 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] = | ||
191 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] = | ||
192 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] = | ||
193 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] = | ||
194 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] = | ||
195 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] = | ||
196 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] = | ||
197 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] = | ||
198 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] = | ||
199 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] = | ||
200 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] = | ||
201 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] = | ||
202 | gmmu_pte_kind_generic_16bx2_v(); | ||
203 | |||
204 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] = | ||
205 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] = | ||
206 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] = | ||
207 | gmmu_pte_kind_z24v8_ms4_vc4_v(); | ||
208 | |||
209 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] = | ||
210 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] = | ||
211 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] = | ||
212 | gmmu_pte_kind_z24v8_ms4_vc12_v(); | ||
213 | |||
214 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] = | ||
215 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] = | ||
216 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] = | ||
217 | gmmu_pte_kind_z24v8_ms8_vc8_v(); | ||
218 | |||
219 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] = | ||
220 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] = | ||
221 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] = | ||
222 | gmmu_pte_kind_z24v8_ms8_vc24_v(); | ||
223 | |||
224 | gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] = | ||
225 | gmmu_pte_kind_x8c24_v(); | ||
226 | } | 35 | } |
227 | 36 | ||
228 | static noinline_for_stack bool gp10b_kind_supported(u8 k) | 37 | static bool gp10b_kind_supported(u8 k) |
229 | { | 38 | { |
230 | return /* From gp10b */ | 39 | return (k >= gmmu_pte_kind_z16_2cz_v() && |
231 | (k >= gmmu_pte_kind_z16_2cz_v() && | 40 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) |
232 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) | ||
233 | || k == gmmu_pte_kind_z16_ms16_2cz_v() | 41 | || k == gmmu_pte_kind_z16_ms16_2cz_v() |
234 | || k == gmmu_pte_kind_c32_ms4_4cbra_v() | 42 | || k == gmmu_pte_kind_c32_ms4_4cbra_v() |
235 | || k == gmmu_pte_kind_c64_ms4_4cbra_v() | 43 | || k == gmmu_pte_kind_c64_ms4_4cbra_v(); |
236 | /* From gm20b */ | ||
237 | || (k == gmmu_pte_kind_smsked_message_v()) | ||
238 | || (k >= gmmu_pte_kind_s8_v() && | ||
239 | k <= gmmu_pte_kind_s8_2s_v()) | ||
240 | /* From gk20a */ | ||
241 | || gk20a_kind_work_creation(k) | ||
242 | || (k == gmmu_pte_kind_invalid_v()) | ||
243 | || (k == gmmu_pte_kind_pitch_v()) | ||
244 | || (k >= gmmu_pte_kind_z16_v() && | ||
245 | k <= gmmu_pte_kind_z16_ms8_2c_v()) | ||
246 | || (k >= gmmu_pte_kind_z16_2z_v() && | ||
247 | k <= gmmu_pte_kind_z16_ms8_2z_v()) | ||
248 | || (k == gmmu_pte_kind_s8z24_v()) | ||
249 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
250 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) | ||
251 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && | ||
252 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
253 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
254 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) | ||
255 | || (k == gmmu_pte_kind_z24s8_v()) | ||
256 | || (k >= gmmu_pte_kind_z24s8_2cz_v() && | ||
257 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) | ||
258 | || (k == gmmu_pte_kind_zf32_v()) | ||
259 | || (k >= gmmu_pte_kind_zf32_2cz_v() && | ||
260 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) | ||
261 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && | ||
262 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) | ||
263 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && | ||
264 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) | ||
265 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && | ||
266 | k <= gmmu_pte_kind_zf32_x24s8_v()) | ||
267 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
268 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) | ||
269 | || (k == gmmu_pte_kind_generic_16bx2_v()) | ||
270 | || (k == gmmu_pte_kind_c32_2c_v()) | ||
271 | || (k == gmmu_pte_kind_c32_2cra_v()) | ||
272 | || (k == gmmu_pte_kind_c32_ms2_2c_v()) | ||
273 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
274 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
275 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) | ||
276 | || (k >= gmmu_pte_kind_c32_ms4_2cra_v() && | ||
277 | k <= gmmu_pte_kind_c64_2c_v()) | ||
278 | || (k == gmmu_pte_kind_c64_2cra_v()) | ||
279 | || (k == gmmu_pte_kind_c64_ms2_2c_v()) | ||
280 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
281 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
282 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) | ||
283 | || (k >= gmmu_pte_kind_c64_ms4_2cra_v() && | ||
284 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) | ||
285 | || (k == gmmu_pte_kind_pitch_no_swizzle_v()); | ||
286 | } | ||
287 | |||
288 | static noinline_for_stack bool gp10b_kind_z(u8 k) | ||
289 | { | ||
290 | return /* From gp10b */ | ||
291 | (k >= gmmu_pte_kind_z16_2cz_v() && | ||
292 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) | ||
293 | || (k == gmmu_pte_kind_z16_ms16_2cz_v()) | ||
294 | /* From gm20b */ | ||
295 | || (k >= gmmu_pte_kind_s8_v() && | ||
296 | k <= gmmu_pte_kind_s8_2s_v()) | ||
297 | /* From gk20a */ | ||
298 | || (k >= gmmu_pte_kind_z16_v() && | ||
299 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
300 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
301 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
302 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
303 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) | ||
304 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
305 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
306 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
307 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
308 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
309 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
310 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
311 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()); | ||
312 | } | 44 | } |
313 | 45 | ||
314 | static noinline_for_stack bool gp10b_kind_c(u8 k) | 46 | static bool gp10b_kind_z(u8 k) |
315 | { | 47 | { |
316 | return gk20a_kind_work_creation(k) | 48 | return (k >= gmmu_pte_kind_z16_2cz_v() && |
317 | || (k == gmmu_pte_kind_pitch_v()) | 49 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) || |
318 | || (k == gmmu_pte_kind_generic_16bx2_v()) | 50 | k == gmmu_pte_kind_z16_ms16_2cz_v(); |
319 | || (k >= gmmu_pte_kind_c32_2c_v() && | ||
320 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
321 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
322 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
323 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
324 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
325 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
326 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); | ||
327 | } | 51 | } |
328 | 52 | ||
329 | static noinline_for_stack bool gp10b_kind_compressible(u8 k) | 53 | static bool gp10b_kind_compressible(u8 k) |
330 | { | 54 | { |
331 | return /* From gp10b */ | 55 | return (k >= gmmu_pte_kind_z16_2cz_v() && |
332 | (k >= gmmu_pte_kind_z16_2cz_v() && | 56 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) || |
333 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) | 57 | k == gmmu_pte_kind_z16_ms16_2cz_v() || |
334 | || (k == gmmu_pte_kind_z16_ms16_2cz_v()) | 58 | (k >= gmmu_pte_kind_z16_4cz_v() && |
335 | || (k >= gmmu_pte_kind_z16_4cz_v() && | 59 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) || |
336 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | 60 | k == gmmu_pte_kind_c32_ms4_4cbra_v() || |
337 | || (k == gmmu_pte_kind_c32_ms4_4cbra_v()) | 61 | k == gmmu_pte_kind_c64_ms4_4cbra_v(); |
338 | || (k == gmmu_pte_kind_c64_ms4_4cbra_v()) | ||
339 | /* From gm20b */ | ||
340 | || (k >= gmmu_pte_kind_s8_v() && | ||
341 | k <= gmmu_pte_kind_s8_2s_v()) | ||
342 | /* From gk20a */ | ||
343 | || (k >= gmmu_pte_kind_z16_2c_v() && | ||
344 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
345 | || (k >= gmmu_pte_kind_s8z24_1z_v() && | ||
346 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
347 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
348 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
349 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
350 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
351 | || (k >= gmmu_pte_kind_z24s8_1z_v() && | ||
352 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
353 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
354 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
355 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
356 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
357 | || (k >= gmmu_pte_kind_zf32_1z_v() && | ||
358 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
359 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
360 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
361 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
362 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
363 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
364 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
365 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
366 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
367 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
368 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
369 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
370 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
371 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
372 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
373 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
374 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
375 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
376 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
377 | } | 62 | } |
378 | 63 | ||
379 | static noinline_for_stack bool gp10b_kind_zbc(u8 k) | 64 | static bool gp10b_kind_zbc(u8 k) |
380 | { | 65 | { |
381 | return /* From gp10b */ | 66 | return (k >= gmmu_pte_kind_z16_2cz_v() && |
382 | (k >= gmmu_pte_kind_z16_2cz_v() && | 67 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) || |
383 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) | 68 | k == gmmu_pte_kind_z16_ms16_2cz_v() || |
384 | || (k == gmmu_pte_kind_z16_ms16_2cz_v()) | 69 | k == gmmu_pte_kind_c32_ms4_4cbra_v() || |
385 | || (k == gmmu_pte_kind_c32_ms4_4cbra_v()) | 70 | k == gmmu_pte_kind_c64_ms4_4cbra_v(); |
386 | || (k == gmmu_pte_kind_c64_ms4_4cbra_v()) | ||
387 | /* From gm20b */ | ||
388 | || (k >= gmmu_pte_kind_s8_v() && | ||
389 | k <= gmmu_pte_kind_s8_2s_v()) | ||
390 | /* From gk20a */ | ||
391 | || (k >= gmmu_pte_kind_z16_2c_v() && | ||
392 | k <= gmmu_pte_kind_z16_ms16_2c_v()) | ||
393 | || (k >= gmmu_pte_kind_z16_4cz_v() && | ||
394 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
395 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
396 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
397 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && | ||
398 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
399 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
400 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) | ||
401 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && | ||
402 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
403 | || (k >= gmmu_pte_kind_z24s8_2cs_v() && | ||
404 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
405 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && | ||
406 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
407 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
408 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) | ||
409 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && | ||
410 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
411 | || (k >= gmmu_pte_kind_zf32_2cs_v() && | ||
412 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
413 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
414 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
415 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && | ||
416 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
417 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
418 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
419 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && | ||
420 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
421 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
422 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
423 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
424 | k <= gmmu_pte_kind_c32_2cra_v()) | ||
425 | || (k >= gmmu_pte_kind_c32_ms2_2c_v() && | ||
426 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
427 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
428 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
429 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) | ||
430 | || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && | ||
431 | k <= gmmu_pte_kind_c64_2cra_v()) | ||
432 | || (k >= gmmu_pte_kind_c64_ms2_2c_v() && | ||
433 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
434 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
435 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
436 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) | ||
437 | || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && | ||
438 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
439 | } | 71 | } |
440 | 72 | ||
441 | static void gp10b_init_kind_attr(void) | 73 | static void gp10b_init_kind_attr(void) |
442 | { | 74 | { |
443 | u16 k; | 75 | u16 k; |
444 | 76 | ||
445 | for (k = 0; k < NV_KIND_ATTR_SIZE; k++) { | 77 | for (k = 0; k < 256; k++) { |
446 | if (gp10b_kind_supported((u8)k)) | 78 | if (gp10b_kind_supported((u8)k)) |
447 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; | 79 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; |
448 | if (gp10b_kind_compressible((u8)k)) | 80 | if (gp10b_kind_compressible((u8)k)) |
449 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; | 81 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; |
450 | if (gp10b_kind_z((u8)k)) | 82 | if (gp10b_kind_z((u8)k)) |
451 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; | 83 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; |
452 | if (gp10b_kind_c((u8)k)) | ||
453 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C; | ||
454 | if (gp10b_kind_zbc((u8)k)) | 84 | if (gp10b_kind_zbc((u8)k)) |
455 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; | 85 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; |
456 | } | 86 | } |