diff options
author | Ranjanikar Nikhil Prabhakarrao <rprabhakarra@nvidia.com> | 2018-12-13 06:59:20 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2020-06-30 13:07:26 -0400 |
commit | f56874aec2ec61f2c341b813cc76de5acc51ea12 (patch) | |
tree | efd3d6a3921c930a76bf0cb7011ca6b9809ed5f3 /drivers/gpu/nvgpu/gv11b | |
parent | bbef4c6927a13a24821c43cb2b6af72f859f7deb (diff) |
gpu: nvgpu: add speculative barrier
Data can be speculativerly stored and
code flow can be hijacked.
To mitigate this problem insert a
speculation barrier.
Bug 200447167
Change-Id: Ia865ff2add8b30de49aa970715625b13e8f71c08
Signed-off-by: Ranjanikar Nikhil Prabhakarrao <rprabhakarra@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1972221
(cherry picked from commit f0762ed4831b3fe6cc953a4a4ec26c2537dcb69f)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/1996052
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: Deepak Nibade <dnibade@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c index 1dfecfc1..5820a695 100644 --- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c | |||
@@ -77,6 +77,7 @@ bool gr_gv11b_is_valid_class(struct gk20a *g, u32 class_num) | |||
77 | { | 77 | { |
78 | bool valid = false; | 78 | bool valid = false; |
79 | 79 | ||
80 | nvgpu_speculation_barrier(); | ||
80 | switch (class_num) { | 81 | switch (class_num) { |
81 | case VOLTA_COMPUTE_A: | 82 | case VOLTA_COMPUTE_A: |
82 | case VOLTA_A: | 83 | case VOLTA_A: |
@@ -106,6 +107,7 @@ bool gr_gv11b_is_valid_gfx_class(struct gk20a *g, u32 class_num) | |||
106 | { | 107 | { |
107 | bool valid = false; | 108 | bool valid = false; |
108 | 109 | ||
110 | nvgpu_speculation_barrier(); | ||
109 | switch (class_num) { | 111 | switch (class_num) { |
110 | case VOLTA_A: | 112 | case VOLTA_A: |
111 | case PASCAL_A: | 113 | case PASCAL_A: |
@@ -140,6 +142,7 @@ bool gr_gv11b_is_valid_compute_class(struct gk20a *g, u32 class_num) | |||
140 | { | 142 | { |
141 | bool valid = false; | 143 | bool valid = false; |
142 | 144 | ||
145 | nvgpu_speculation_barrier(); | ||
143 | switch (class_num) { | 146 | switch (class_num) { |
144 | case VOLTA_COMPUTE_A: | 147 | case VOLTA_COMPUTE_A: |
145 | case PASCAL_COMPUTE_A: | 148 | case PASCAL_COMPUTE_A: |