diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/kind_gk20a.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c index b0a74056..b76fdfcf 100644 --- a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * GK20A memory kind management | 4 | * GK20A memory kind management |
5 | * | 5 | * |
6 | * Copyright (c) 2011, 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, |
@@ -19,6 +19,7 @@ | |||
19 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 19 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
20 | */ | 20 | */ |
21 | #include <linux/bitops.h> | 21 | #include <linux/bitops.h> |
22 | #include <linux/compiler.h> | ||
22 | 23 | ||
23 | #include "hw_gmmu_gk20a.h" | 24 | #include "hw_gmmu_gk20a.h" |
24 | #include "kind_gk20a.h" | 25 | #include "kind_gk20a.h" |
@@ -41,8 +42,14 @@ static inline bool gk20a_kind_work_creation(u8 k) | |||
41 | gk20a_kind_work_creation_host(k); | 42 | gk20a_kind_work_creation_host(k); |
42 | } | 43 | } |
43 | 44 | ||
45 | /* | ||
46 | * Use noinline_for_stack for these huge functions, otherwise GCC 4.7 will | ||
47 | * blow up when building a coverage-enabled kernel. (error: the frame size of | ||
48 | * 1232 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]) | ||
49 | */ | ||
50 | |||
44 | /* note: taken from the !2cs_compression case */ | 51 | /* note: taken from the !2cs_compression case */ |
45 | static inline bool gk20a_kind_supported(u8 k) | 52 | static noinline_for_stack bool gk20a_kind_supported(u8 k) |
46 | { | 53 | { |
47 | return gk20a_kind_work_creation(k) || | 54 | return gk20a_kind_work_creation(k) || |
48 | (k == gmmu_pte_kind_invalid_v()) || | 55 | (k == gmmu_pte_kind_invalid_v()) || |
@@ -91,7 +98,7 @@ static inline bool gk20a_kind_supported(u8 k) | |||
91 | (k == gmmu_pte_kind_pitch_no_swizzle_v()); | 98 | (k == gmmu_pte_kind_pitch_no_swizzle_v()); |
92 | } | 99 | } |
93 | 100 | ||
94 | static inline bool gk20a_kind_z(u8 k) | 101 | static noinline_for_stack bool gk20a_kind_z(u8 k) |
95 | { | 102 | { |
96 | return (k >= gmmu_pte_kind_z16_v() && | 103 | return (k >= gmmu_pte_kind_z16_v() && |
97 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) || | 104 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) || |
@@ -112,7 +119,7 @@ static inline bool gk20a_kind_z(u8 k) | |||
112 | k <= gmmu_pte_kind_xf32_x24s8_ms16_2cs_v())*/; | 119 | k <= gmmu_pte_kind_xf32_x24s8_ms16_2cs_v())*/; |
113 | } | 120 | } |
114 | 121 | ||
115 | static inline bool gk20a_kind_c(u8 k) | 122 | static noinline_for_stack bool gk20a_kind_c(u8 k) |
116 | { | 123 | { |
117 | return gk20a_kind_work_creation(k) || | 124 | return gk20a_kind_work_creation(k) || |
118 | (k == gmmu_pte_kind_pitch_v()) || | 125 | (k == gmmu_pte_kind_pitch_v()) || |
@@ -127,7 +134,7 @@ static inline bool gk20a_kind_c(u8 k) | |||
127 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); | 134 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); |
128 | } | 135 | } |
129 | 136 | ||
130 | static inline bool gk20a_kind_compressible(u8 k) | 137 | static noinline_for_stack bool gk20a_kind_compressible(u8 k) |
131 | { | 138 | { |
132 | return (k >= gmmu_pte_kind_z16_2c_v() && | 139 | return (k >= gmmu_pte_kind_z16_2c_v() && |
133 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) || | 140 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) || |
@@ -165,7 +172,7 @@ static inline bool gk20a_kind_compressible(u8 k) | |||
165 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | 172 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); |
166 | } | 173 | } |
167 | 174 | ||
168 | static inline bool gk20a_kind_zbc(u8 k) | 175 | static noinline_for_stack bool gk20a_kind_zbc(u8 k) |
169 | { | 176 | { |
170 | return (k >= gmmu_pte_kind_z16_2c_v() && | 177 | return (k >= gmmu_pte_kind_z16_2c_v() && |
171 | k <= gmmu_pte_kind_z16_ms16_2c_v()) || | 178 | k <= gmmu_pte_kind_z16_ms16_2c_v()) || |