diff options
author | Supriya <ssharatkumar@nvidia.com> | 2017-11-02 02:24:03 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-12-28 06:01:48 -0500 |
commit | ea1b69d3f5e419ab1e66340779fda143e8f4ebc3 (patch) | |
tree | 9c07bc5e9efab1f781bb28d07a89598469948f2a /drivers/gpu/nvgpu/include | |
parent | 3a956a573d2ecb9a7520680ec6bcd6f626054488 (diff) |
gpu: nvgpu: Fix crash on read fail of mc_boot_0_r
This CL handles
- erroneous use of boot_0 function pointer
before being assigned in __nvgpu_check_gpu_state
- And proper handling of error returned from gk20a_readl
in gk20a_mc_boot_0
With these fixes crash is not seen in case mc_boot_0 read
returns 0 in gk20a_mc_boot_0
- And also this handles the recursion caused by mc.boot_0()
calling nvgpu_readl and nvgpu_readl in turn
calling mc.boot_0 in case of read failure
Bug 2010966
Change-Id: Ia087811c67d88948b7fc5fff35e0fabc6ea91989
Signed-off-by: Supriya <ssharatkumar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1616274
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/include')
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/io.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/io.h b/drivers/gpu/nvgpu/include/nvgpu/io.h index 94ae8f95..b7281b41 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/io.h +++ b/drivers/gpu/nvgpu/include/nvgpu/io.h | |||
@@ -40,6 +40,7 @@ struct gk20a; | |||
40 | 40 | ||
41 | void nvgpu_writel(struct gk20a *g, u32 r, u32 v); | 41 | void nvgpu_writel(struct gk20a *g, u32 r, u32 v); |
42 | u32 nvgpu_readl(struct gk20a *g, u32 r); | 42 | u32 nvgpu_readl(struct gk20a *g, u32 r); |
43 | u32 __nvgpu_readl(struct gk20a *g, u32 r); | ||
43 | void nvgpu_writel_check(struct gk20a *g, u32 r, u32 v); | 44 | void nvgpu_writel_check(struct gk20a *g, u32 r, u32 v); |
44 | void nvgpu_bar1_writel(struct gk20a *g, u32 b, u32 v); | 45 | void nvgpu_bar1_writel(struct gk20a *g, u32 b, u32 v); |
45 | u32 nvgpu_bar1_readl(struct gk20a *g, u32 b); | 46 | u32 nvgpu_bar1_readl(struct gk20a *g, u32 b); |