mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-25 02:52:51 +03:00
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>
This commit is contained in:
committed by
mobile promotions
parent
3a956a573d
commit
ea1b69d3f5
@@ -32,6 +32,16 @@ void nvgpu_writel(struct gk20a *g, u32 r, u32 v)
|
||||
}
|
||||
|
||||
u32 nvgpu_readl(struct gk20a *g, u32 r)
|
||||
{
|
||||
u32 v = __nvgpu_readl(g, r);
|
||||
|
||||
if (v == 0xffffffff)
|
||||
__nvgpu_check_gpu_state(g);
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
u32 __nvgpu_readl(struct gk20a *g, u32 r)
|
||||
{
|
||||
struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
|
||||
u32 v = 0xffffffff;
|
||||
@@ -41,8 +51,6 @@ u32 nvgpu_readl(struct gk20a *g, u32 r)
|
||||
gk20a_dbg(gpu_dbg_reg, "r=0x%x v=0x%x (failed)", r, v);
|
||||
} else {
|
||||
v = readl(l->regs + r);
|
||||
if (v == 0xffffffff)
|
||||
__nvgpu_check_gpu_state(g);
|
||||
gk20a_dbg(gpu_dbg_reg, "r=0x%x v=0x%x", r, v);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user