summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c10
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h4
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gm20b/hw_gr_gm20b.h4
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_gr_gp10b.h4
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h4
5 files changed, 24 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index b94eade1..a9a87a54 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -5288,10 +5288,16 @@ int gk20a_gr_handle_fecs_error(struct gk20a *g, struct channel_gk20a *ch,
5288 gk20a_readl(g, gr_fecs_ctxsw_mailbox_r(6)), 5288 gk20a_readl(g, gr_fecs_ctxsw_mailbox_r(6)),
5289 isr_data->data_lo); 5289 isr_data->data_lo);
5290 ret = -1; 5290 ret = -1;
5291 } else if ((gr_fecs_intr &
5292 gr_fecs_host_int_status_watchdog_active_f()) != 0U) {
5293 /* currently, recovery is not initiated */
5294 nvgpu_err(g, "fecs watchdog triggered for channel %u, "
5295 "cannot ctxsw anymore !!", isr_data->chid);
5296 gk20a_fecs_dump_falcon_stats(g);
5291 } else { 5297 } else {
5292 nvgpu_err(g, 5298 nvgpu_err(g,
5293 "fecs error interrupt 0x%08x for channel %u", 5299 "fecs error interrupt 0x%08x for channel %u",
5294 gr_fecs_intr, isr_data->chid); 5300 gr_fecs_intr, isr_data->chid);
5295 } 5301 }
5296 5302
5297 gk20a_writel(g, gr_fecs_host_int_clear_r(), gr_fecs_intr); 5303 gk20a_writel(g, gr_fecs_host_int_clear_r(), gr_fecs_intr);
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h
index 8655a0d3..826108f1 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h
@@ -996,6 +996,10 @@ static inline u32 gr_fecs_host_int_status_umimp_illegal_method_f(u32 v)
996{ 996{
997 return (v & 0x1U) << 18U; 997 return (v & 0x1U) << 18U;
998} 998}
999static inline u32 gr_fecs_host_int_status_watchdog_active_f(void)
1000{
1001 return 0x80000U;
1002}
999static inline u32 gr_fecs_host_int_status_ctxsw_intr_f(u32 v) 1003static inline u32 gr_fecs_host_int_status_ctxsw_intr_f(u32 v)
1000{ 1004{
1001 return (v & 0xffffU) << 0U; 1005 return (v & 0xffffU) << 0U;
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gm20b/hw_gr_gm20b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gm20b/hw_gr_gm20b.h
index be05d031..5bbb3b9f 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gm20b/hw_gr_gm20b.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gm20b/hw_gr_gm20b.h
@@ -1012,6 +1012,10 @@ static inline u32 gr_fecs_host_int_status_umimp_illegal_method_f(u32 v)
1012{ 1012{
1013 return (v & 0x1U) << 18U; 1013 return (v & 0x1U) << 18U;
1014} 1014}
1015static inline u32 gr_fecs_host_int_status_watchdog_active_f(void)
1016{
1017 return 0x80000U;
1018}
1015static inline u32 gr_fecs_host_int_status_ctxsw_intr_f(u32 v) 1019static inline u32 gr_fecs_host_int_status_ctxsw_intr_f(u32 v)
1016{ 1020{
1017 return (v & 0xffffU) << 0U; 1021 return (v & 0xffffU) << 0U;
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_gr_gp10b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_gr_gp10b.h
index efd8b555..f7bc4c23 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_gr_gp10b.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_gr_gp10b.h
@@ -1200,6 +1200,10 @@ static inline u32 gr_fecs_host_int_status_umimp_illegal_method_f(u32 v)
1200{ 1200{
1201 return (v & 0x1U) << 18U; 1201 return (v & 0x1U) << 18U;
1202} 1202}
1203static inline u32 gr_fecs_host_int_status_watchdog_active_f(void)
1204{
1205 return 0x80000U;
1206}
1203static inline u32 gr_fecs_host_int_status_ctxsw_intr_f(u32 v) 1207static inline u32 gr_fecs_host_int_status_ctxsw_intr_f(u32 v)
1204{ 1208{
1205 return (v & 0xffffU) << 0U; 1209 return (v & 0xffffU) << 0U;
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h
index 588452cd..36a7ebf5 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h
@@ -2032,6 +2032,10 @@ static inline u32 gr_fecs_host_int_status_umimp_illegal_method_f(u32 v)
2032{ 2032{
2033 return (v & 0x1U) << 18U; 2033 return (v & 0x1U) << 18U;
2034} 2034}
2035static inline u32 gr_fecs_host_int_status_watchdog_active_f(void)
2036{
2037 return 0x80000U;
2038}
2035static inline u32 gr_fecs_host_int_status_ctxsw_intr_f(u32 v) 2039static inline u32 gr_fecs_host_int_status_ctxsw_intr_f(u32 v)
2036{ 2040{
2037 return (v & 0xffffU) << 0U; 2041 return (v & 0xffffU) << 0U;