diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common')
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/io.c | 12 |
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 | ||
34 | u32 nvgpu_readl(struct gk20a *g, u32 r) | 34 | u32 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 | |||
44 | u32 __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 | ||