diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2015-03-04 04:25:32 -0500 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-04-04 21:57:57 -0400 |
commit | e9f2436c290c2c02b25f30df11ee73ebe0f8953a (patch) | |
tree | 984cd16fda4a1b0f8b6dd6bd25348d046c951df2 /drivers | |
parent | a0dcd3b203cb5c2eb3b5bb83903a8aece67b70ec (diff) |
gpu: nvgpu: handle memfmt exception
In gk20a_gr_isr(), handle memfmt exception as below :
- read NV_PGRAPH_PRI_MEMFMT_HWW_ESR
- debug print for contents of above register
- write same value back to NV_PGRAPH_PRI_MEMFMT_HWW_ESR and
clear the exception
Bug 200078514
Change-Id: I5b9afacd7f99b5a37de953041582b3a53b863642
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/713713
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 7 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h | 4 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | 4 |
3 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index b0fd3c0c..6a9e1753 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -5740,6 +5740,13 @@ int gk20a_gr_isr(struct gk20a *g) | |||
5740 | need_reset |= -EFAULT; | 5740 | need_reset |= -EFAULT; |
5741 | } | 5741 | } |
5742 | 5742 | ||
5743 | if (exception & gr_exception_memfmt_m()) { | ||
5744 | u32 memfmt = gk20a_readl(g, gr_memfmt_hww_esr_r()); | ||
5745 | gk20a_dbg(gpu_dbg_intr, "memfmt exception %08x\n", | ||
5746 | memfmt); | ||
5747 | gk20a_writel(g, gr_memfmt_hww_esr_r(), memfmt); | ||
5748 | } | ||
5749 | |||
5743 | /* check if a gpc exception has occurred */ | 5750 | /* check if a gpc exception has occurred */ |
5744 | if (exception & gr_exception_gpc_m() && need_reset == 0) { | 5751 | if (exception & gr_exception_gpc_m() && need_reset == 0) { |
5745 | struct channel_gk20a *fault_ch; | 5752 | struct channel_gk20a *fault_ch; |
diff --git a/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h b/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h index ff698a51..8fe75614 100644 --- a/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h | |||
@@ -178,6 +178,10 @@ static inline u32 gr_exception_gpc_m(void) | |||
178 | { | 178 | { |
179 | return 0x1 << 24; | 179 | return 0x1 << 24; |
180 | } | 180 | } |
181 | static inline u32 gr_exception_memfmt_m(void) | ||
182 | { | ||
183 | return 0x1 << 1; | ||
184 | } | ||
181 | static inline u32 gr_exception1_r(void) | 185 | static inline u32 gr_exception1_r(void) |
182 | { | 186 | { |
183 | return 0x00400118; | 187 | return 0x00400118; |
diff --git a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h index 543c7773..868b8fe7 100644 --- a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | |||
@@ -166,6 +166,10 @@ static inline u32 gr_exception_gpc_m(void) | |||
166 | { | 166 | { |
167 | return 0x1 << 24; | 167 | return 0x1 << 24; |
168 | } | 168 | } |
169 | static inline u32 gr_exception_memfmt_m(void) | ||
170 | { | ||
171 | return 0x1 << 1; | ||
172 | } | ||
169 | static inline u32 gr_exception1_r(void) | 173 | static inline u32 gr_exception1_r(void) |
170 | { | 174 | { |
171 | return 0x00400118; | 175 | return 0x00400118; |