summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2015-03-04 04:25:32 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-04-04 21:57:57 -0400
commite9f2436c290c2c02b25f30df11ee73ebe0f8953a (patch)
tree984cd16fda4a1b0f8b6dd6bd25348d046c951df2 /drivers/gpu/nvgpu
parenta0dcd3b203cb5c2eb3b5bb83903a8aece67b70ec (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/gpu/nvgpu')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c7
-rw-r--r--drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h4
-rw-r--r--drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h4
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}
181static inline u32 gr_exception_memfmt_m(void)
182{
183 return 0x1 << 1;
184}
181static inline u32 gr_exception1_r(void) 185static 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}
169static inline u32 gr_exception_memfmt_m(void)
170{
171 return 0x1 << 1;
172}
169static inline u32 gr_exception1_r(void) 173static inline u32 gr_exception1_r(void)
170{ 174{
171 return 0x00400118; 175 return 0x00400118;