diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/kind_gk20a.c | 319 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/kind_gk20a.h | 18 |
2 files changed, 167 insertions, 170 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c index 57cf028b..1d7a0ebf 100644 --- a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c | |||
@@ -23,22 +23,6 @@ | |||
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 | |||
42 | /* | 26 | /* |
43 | * Use noinline_for_stack for these huge functions, otherwise GCC 4.7 will | 27 | * Use noinline_for_stack for these huge functions, otherwise GCC 4.7 will |
44 | * blow up when building a coverage-enabled kernel. (error: the frame size of | 28 | * blow up when building a coverage-enabled kernel. (error: the frame size of |
@@ -48,177 +32,174 @@ static inline bool gk20a_kind_work_creation(u8 k) | |||
48 | /* note: taken from the !2cs_compression case */ | 32 | /* note: taken from the !2cs_compression case */ |
49 | static noinline_for_stack bool gk20a_kind_supported(u8 k) | 33 | static noinline_for_stack bool gk20a_kind_supported(u8 k) |
50 | { | 34 | { |
51 | return gk20a_kind_work_creation(k) || | 35 | return gk20a_kind_work_creation(k) |
52 | (k == gmmu_pte_kind_invalid_v()) || | 36 | || (k == gmmu_pte_kind_invalid_v()) |
53 | (k == gmmu_pte_kind_pitch_v()) || | 37 | || (k == gmmu_pte_kind_pitch_v()) |
54 | (k >= gmmu_pte_kind_z16_v() && | 38 | || (k >= gmmu_pte_kind_z16_v() && |
55 | k <= gmmu_pte_kind_z16_ms8_2c_v()) || | 39 | k <= gmmu_pte_kind_z16_ms8_2c_v()) |
56 | (k >= gmmu_pte_kind_z16_2z_v() && | 40 | || (k >= gmmu_pte_kind_z16_2z_v() && |
57 | k <= gmmu_pte_kind_z16_ms8_2z_v()) || | 41 | k <= gmmu_pte_kind_z16_ms8_2z_v()) |
58 | (k == gmmu_pte_kind_s8z24_v()) || | 42 | || (k == gmmu_pte_kind_s8z24_v()) |
59 | (k >= gmmu_pte_kind_s8z24_2cz_v() && | 43 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && |
60 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) || | 44 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) |
61 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && | 45 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && |
62 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) || | 46 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) |
63 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 47 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
64 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) || | 48 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) |
65 | (k == gmmu_pte_kind_z24s8_v()) || | 49 | || (k == gmmu_pte_kind_z24s8_v()) |
66 | (k >= gmmu_pte_kind_z24s8_2cz_v() && | 50 | || (k >= gmmu_pte_kind_z24s8_2cz_v() && |
67 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) || | 51 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) |
68 | (k == gmmu_pte_kind_zf32_v()) || | 52 | || (k == gmmu_pte_kind_zf32_v()) |
69 | (k >= gmmu_pte_kind_zf32_2cz_v() && | 53 | || (k >= gmmu_pte_kind_zf32_2cz_v() && |
70 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) || | 54 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) |
71 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && | 55 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && |
72 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) || | 56 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) |
73 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && | 57 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && |
74 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) || | 58 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) |
75 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && | 59 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && |
76 | k <= gmmu_pte_kind_zf32_x24s8_v()) || | 60 | k <= gmmu_pte_kind_zf32_x24s8_v()) |
77 | (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | 61 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && |
78 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) || | 62 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) |
79 | (k == gmmu_pte_kind_generic_16bx2_v()) || | 63 | || (k == gmmu_pte_kind_generic_16bx2_v()) |
80 | (k == gmmu_pte_kind_c32_2c_v()) || | 64 | || (k == gmmu_pte_kind_c32_2c_v()) |
81 | (k == gmmu_pte_kind_c32_2cra_v()) || | 65 | || (k == gmmu_pte_kind_c32_2cra_v()) |
82 | (k == gmmu_pte_kind_c32_ms2_2c_v()) || | 66 | || (k == gmmu_pte_kind_c32_ms2_2c_v()) |
83 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || | 67 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) |
84 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 68 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
85 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) || | 69 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) |
86 | (k >= gmmu_pte_kind_c32_ms4_2cra_v() && | 70 | || (k >= gmmu_pte_kind_c32_ms4_2cra_v() && |
87 | k <= gmmu_pte_kind_c64_2c_v()) || | 71 | k <= gmmu_pte_kind_c64_2c_v()) |
88 | (k == gmmu_pte_kind_c64_2cra_v()) || | 72 | || (k == gmmu_pte_kind_c64_2cra_v()) |
89 | (k == gmmu_pte_kind_c64_ms2_2c_v()) || | 73 | || (k == gmmu_pte_kind_c64_ms2_2c_v()) |
90 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || | 74 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) |
91 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 75 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
92 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) || | 76 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) |
93 | (k >= gmmu_pte_kind_c64_ms4_2cra_v() && | 77 | || (k >= gmmu_pte_kind_c64_ms4_2cra_v() && |
94 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) || | 78 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) |
95 | (k == gmmu_pte_kind_pitch_no_swizzle_v()); | 79 | || (k == gmmu_pte_kind_pitch_no_swizzle_v()); |
96 | } | 80 | } |
97 | 81 | ||
98 | static noinline_for_stack bool gk20a_kind_z(u8 k) | 82 | static noinline_for_stack bool gk20a_kind_z(u8 k) |
99 | { | 83 | { |
100 | return (k >= gmmu_pte_kind_z16_v() && | 84 | return (k >= gmmu_pte_kind_z16_v() && |
101 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) || | 85 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) |
102 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | 86 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && |
103 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) || | 87 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) |
104 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 88 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
105 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) || | 89 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) |
106 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | 90 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && |
107 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) || | 91 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) |
108 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | 92 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && |
109 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) || | 93 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) |
110 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | 94 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && |
111 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) || | 95 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) |
112 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | 96 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && |
113 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | 97 | 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())*/; | ||
117 | } | 98 | } |
118 | 99 | ||
119 | static noinline_for_stack bool gk20a_kind_c(u8 k) | 100 | static noinline_for_stack bool gk20a_kind_c(u8 k) |
120 | { | 101 | { |
121 | return gk20a_kind_work_creation(k) || | 102 | return gk20a_kind_work_creation(k) |
122 | (k == gmmu_pte_kind_pitch_v()) || | 103 | || (k == gmmu_pte_kind_pitch_v()) |
123 | (k == gmmu_pte_kind_generic_16bx2_v()) || | 104 | || (k == gmmu_pte_kind_generic_16bx2_v()) |
124 | (k >= gmmu_pte_kind_c32_2c_v() && | 105 | || (k >= gmmu_pte_kind_c32_2c_v() && |
125 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) || | 106 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) |
126 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || | 107 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) |
127 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 108 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
128 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) || | 109 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) |
129 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || | 110 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) |
130 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 111 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
131 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); | 112 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); |
132 | } | 113 | } |
133 | 114 | ||
134 | static noinline_for_stack bool gk20a_kind_compressible(u8 k) | 115 | static noinline_for_stack bool gk20a_kind_compressible(u8 k) |
135 | { | 116 | { |
136 | return (k >= gmmu_pte_kind_z16_2c_v() && | 117 | return (k >= gmmu_pte_kind_z16_2c_v() && |
137 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) || | 118 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) |
138 | (k >= gmmu_pte_kind_s8z24_1z_v() && | 119 | || (k >= gmmu_pte_kind_s8z24_1z_v() && |
139 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) || | 120 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) |
140 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | 121 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && |
141 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) || | 122 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) |
142 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 123 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
143 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) || | 124 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) |
144 | (k >= gmmu_pte_kind_z24s8_1z_v() && | 125 | || (k >= gmmu_pte_kind_z24s8_1z_v() && |
145 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) || | 126 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) |
146 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | 127 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && |
147 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) || | 128 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) |
148 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | 129 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && |
149 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) || | 130 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) |
150 | (k >= gmmu_pte_kind_zf32_1z_v() && | 131 | || (k >= gmmu_pte_kind_zf32_1z_v() && |
151 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) || | 132 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) |
152 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | 133 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && |
153 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) || | 134 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) |
154 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | 135 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && |
155 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) || | 136 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) |
156 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | 137 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && |
157 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) || | 138 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) |
158 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | 139 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && |
159 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) || | 140 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) |
160 | (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | 141 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && |
161 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) || | 142 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) |
162 | (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | 143 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && |
163 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) || | 144 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) |
164 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || | 145 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) |
165 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 146 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
166 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) || | 147 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) |
167 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || | 148 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) |
168 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 149 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
169 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | 150 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); |
170 | } | 151 | } |
171 | 152 | ||
172 | static noinline_for_stack bool gk20a_kind_zbc(u8 k) | 153 | static noinline_for_stack bool gk20a_kind_zbc(u8 k) |
173 | { | 154 | { |
174 | return (k >= gmmu_pte_kind_z16_2c_v() && | 155 | return (k >= gmmu_pte_kind_z16_2c_v() && |
175 | k <= gmmu_pte_kind_z16_ms16_2c_v()) || | 156 | k <= gmmu_pte_kind_z16_ms16_2c_v()) |
176 | (k >= gmmu_pte_kind_z16_4cz_v() && | 157 | || (k >= gmmu_pte_kind_z16_4cz_v() && |
177 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) || | 158 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) |
178 | (k >= gmmu_pte_kind_s8z24_2cz_v() && | 159 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && |
179 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) || | 160 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) |
180 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && | 161 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && |
181 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) || | 162 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) |
182 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 163 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
183 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) || | 164 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) |
184 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && | 165 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && |
185 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) || | 166 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) |
186 | (k >= gmmu_pte_kind_z24s8_2cs_v() && | 167 | || (k >= gmmu_pte_kind_z24s8_2cs_v() && |
187 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) || | 168 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) |
188 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && | 169 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && |
189 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) || | 170 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) |
190 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | 171 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && |
191 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) || | 172 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) |
192 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && | 173 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && |
193 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) || | 174 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) |
194 | (k >= gmmu_pte_kind_zf32_2cs_v() && | 175 | || (k >= gmmu_pte_kind_zf32_2cs_v() && |
195 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) || | 176 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) |
196 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | 177 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && |
197 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) || | 178 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) |
198 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && | 179 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && |
199 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) || | 180 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) |
200 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | 181 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && |
201 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) || | 182 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) |
202 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && | 183 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && |
203 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) || | 184 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) |
204 | (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | 185 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && |
205 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) || | 186 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) |
206 | (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | 187 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && |
207 | k <= gmmu_pte_kind_c32_2cra_v()) || | 188 | k <= gmmu_pte_kind_c32_2cra_v()) |
208 | (k >= gmmu_pte_kind_c32_ms2_2c_v() && | 189 | || (k >= gmmu_pte_kind_c32_ms2_2c_v() && |
209 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) || | 190 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) |
210 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || | 191 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) |
211 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 192 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
212 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) || | 193 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) |
213 | (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && | 194 | || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && |
214 | k <= gmmu_pte_kind_c64_2cra_v()) || | 195 | k <= gmmu_pte_kind_c64_2cra_v()) |
215 | (k >= gmmu_pte_kind_c64_ms2_2c_v() && | 196 | || (k >= gmmu_pte_kind_c64_ms2_2c_v() && |
216 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) || | 197 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) |
217 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || | 198 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) |
218 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 199 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
219 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) || | 200 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) |
220 | (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && | 201 | || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && |
221 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | 202 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); |
222 | } | 203 | } |
223 | 204 | ||
224 | u8 gk20a_uc_kind_map[256]; | 205 | 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 28d5802c..dcc33f7d 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-2014, NVIDIA CORPORATION. All rights reserved. | 6 | * Copyright (c) 2011-2017, 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,6 +36,22 @@ 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 | |||
39 | static inline bool gk20a_kind_is_supported(u8 k) | 55 | static inline bool gk20a_kind_is_supported(u8 k) |
40 | { | 56 | { |
41 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_SUPPORTED); | 57 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_SUPPORTED); |