summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common')
-rw-r--r--drivers/gpu/nvgpu/common/linux/io.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/io.c b/drivers/gpu/nvgpu/common/linux/io.c
index 729825e7..cde90ddd 100644
--- a/drivers/gpu/nvgpu/common/linux/io.c
+++ b/drivers/gpu/nvgpu/common/linux/io.c
@@ -33,6 +33,16 @@ void nvgpu_writel(struct gk20a *g, u32 r, u32 v)
33 33
34u32 nvgpu_readl(struct gk20a *g, u32 r) 34u32 nvgpu_readl(struct gk20a *g, u32 r)
35{ 35{
36 u32 v = __nvgpu_readl(g, r);
37
38 if (v == 0xffffffff)
39 __nvgpu_check_gpu_state(g);
40
41 return v;
42}
43
44u32 __nvgpu_readl(struct gk20a *g, u32 r)
45{
36 struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g); 46 struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
37 u32 v = 0xffffffff; 47 u32 v = 0xffffffff;
38 48
@@ -41,8 +51,6 @@ u32 nvgpu_readl(struct gk20a *g, u32 r)
41 gk20a_dbg(gpu_dbg_reg, "r=0x%x v=0x%x (failed)", r, v); 51 gk20a_dbg(gpu_dbg_reg, "r=0x%x v=0x%x (failed)", r, v);
42 } else { 52 } else {
43 v = readl(l->regs + r); 53 v = readl(l->regs + r);
44 if (v == 0xffffffff)
45 __nvgpu_check_gpu_state(g);
46 gk20a_dbg(gpu_dbg_reg, "r=0x%x v=0x%x", r, v); 54 gk20a_dbg(gpu_dbg_reg, "r=0x%x v=0x%x", r, v);
47 } 55 }
48 56