summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c13
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h2
-rw-r--r--drivers/gpu/nvgpu/gk20a/mc_gk20a.c23
-rw-r--r--drivers/gpu/nvgpu/gk20a/mc_gk20a.h3
-rw-r--r--drivers/gpu/nvgpu/gm20b/hal_gm20b.c2
-rw-r--r--drivers/gpu/nvgpu/gp106/hal_gp106.c2
-rw-r--r--drivers/gpu/nvgpu/gp10b/hal_gp10b.c2
-rw-r--r--drivers/gpu/nvgpu/gp10b/mc_gp10b.c25
-rw-r--r--drivers/gpu/nvgpu/gp10b/mc_gp10b.h4
-rw-r--r--drivers/gpu/nvgpu/gv100/hal_gv100.c2
-rw-r--r--drivers/gpu/nvgpu/gv11b/hal_gv11b.c2
-rw-r--r--drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c2
-rw-r--r--drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c2
13 files changed, 83 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index ed48253f..c8b094cf 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -93,6 +93,17 @@ int gk20a_detect_chip(struct gk20a *g)
93 return gpu_init_hal(g); 93 return gpu_init_hal(g);
94} 94}
95 95
96static void gk20a_mask_interrupts(struct gk20a *g)
97{
98 if (g->ops.mc.intr_mask != NULL) {
99 g->ops.mc.intr_mask(g);
100 }
101
102 if (g->ops.mc.log_pending_intrs != NULL) {
103 g->ops.mc.log_pending_intrs(g);
104 }
105}
106
96int gk20a_prepare_poweroff(struct gk20a *g) 107int gk20a_prepare_poweroff(struct gk20a *g)
97{ 108{
98 int ret = 0; 109 int ret = 0;
@@ -122,6 +133,8 @@ int gk20a_prepare_poweroff(struct gk20a *g)
122 if (nvgpu_is_enabled(g, NVGPU_PMU_PSTATE)) 133 if (nvgpu_is_enabled(g, NVGPU_PMU_PSTATE))
123 gk20a_deinit_pstate_support(g); 134 gk20a_deinit_pstate_support(g);
124 135
136 gk20a_mask_interrupts(g);
137
125 g->power_on = false; 138 g->power_on = false;
126 139
127 return ret; 140 return ret;
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index 6d19d8a3..13c8928f 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -1119,6 +1119,7 @@ struct gpu_ops {
1119 int (*apply_smpc_war)(struct dbg_session_gk20a *dbg_s); 1119 int (*apply_smpc_war)(struct dbg_session_gk20a *dbg_s);
1120 } regops; 1120 } regops;
1121 struct { 1121 struct {
1122 void (*intr_mask)(struct gk20a *g);
1122 void (*intr_enable)(struct gk20a *g); 1123 void (*intr_enable)(struct gk20a *g);
1123 void (*intr_unit_config)(struct gk20a *g, 1124 void (*intr_unit_config)(struct gk20a *g,
1124 bool enable, bool is_stalling, u32 unit); 1125 bool enable, bool is_stalling, u32 unit);
@@ -1139,6 +1140,7 @@ struct gpu_ops {
1139 void (*reset)(struct gk20a *g, u32 units); 1140 void (*reset)(struct gk20a *g, u32 units);
1140 u32 (*boot_0)(struct gk20a *g, u32 *arch, u32 *impl, u32 *rev); 1141 u32 (*boot_0)(struct gk20a *g, u32 *arch, u32 *impl, u32 *rev);
1141 bool (*is_intr1_pending)(struct gk20a *g, enum nvgpu_unit unit, u32 mc_intr_1); 1142 bool (*is_intr1_pending)(struct gk20a *g, enum nvgpu_unit unit, u32 mc_intr_1);
1143 void (*log_pending_intrs)(struct gk20a *g);
1142 } mc; 1144 } mc;
1143 struct { 1145 struct {
1144 void (*show_dump)(struct gk20a *g, 1146 void (*show_dump)(struct gk20a *g,
diff --git a/drivers/gpu/nvgpu/gk20a/mc_gk20a.c b/drivers/gpu/nvgpu/gk20a/mc_gk20a.c
index 9ee24ed0..26084bd6 100644
--- a/drivers/gpu/nvgpu/gk20a/mc_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/mc_gk20a.c
@@ -121,6 +121,14 @@ u32 mc_gk20a_isr_nonstall(struct gk20a *g)
121 return ops; 121 return ops;
122} 122}
123 123
124void mc_gk20a_intr_mask(struct gk20a *g)
125{
126 nvgpu_writel(g, mc_intr_en_0_r(),
127 mc_intr_en_0_inta_disabled_f());
128 nvgpu_writel(g, mc_intr_en_1_r(),
129 mc_intr_en_1_inta_disabled_f());
130}
131
124void mc_gk20a_intr_enable(struct gk20a *g) 132void mc_gk20a_intr_enable(struct gk20a *g)
125{ 133{
126 u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g); 134 u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g);
@@ -292,6 +300,21 @@ bool mc_gk20a_is_intr1_pending(struct gk20a *g,
292 return is_pending; 300 return is_pending;
293} 301}
294 302
303void mc_gk20a_log_pending_intrs(struct gk20a *g)
304{
305 u32 intr;
306
307 intr = g->ops.mc.intr_stall(g);
308 if (intr != 0U) {
309 nvgpu_info(g, "Pending stall intr0=0x%08x", intr);
310 }
311
312 intr = g->ops.mc.intr_nonstall(g);
313 if (intr != 0U) {
314 nvgpu_info(g, "Pending nonstall intr1=0x%08x", intr);
315 }
316}
317
295void mc_gk20a_handle_intr_nonstall(struct gk20a *g, u32 ops) 318void mc_gk20a_handle_intr_nonstall(struct gk20a *g, u32 ops)
296{ 319{
297 bool semaphore_wakeup, post_events; 320 bool semaphore_wakeup, post_events;
diff --git a/drivers/gpu/nvgpu/gk20a/mc_gk20a.h b/drivers/gpu/nvgpu/gk20a/mc_gk20a.h
index 1b59d634..0dfdf906 100644
--- a/drivers/gpu/nvgpu/gk20a/mc_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/mc_gk20a.h
@@ -24,6 +24,7 @@
24#define MC_GK20A_H 24#define MC_GK20A_H
25struct gk20a; 25struct gk20a;
26 26
27void mc_gk20a_intr_mask(struct gk20a *g);
27void mc_gk20a_intr_enable(struct gk20a *g); 28void mc_gk20a_intr_enable(struct gk20a *g);
28void mc_gk20a_intr_unit_config(struct gk20a *g, bool enable, 29void mc_gk20a_intr_unit_config(struct gk20a *g, bool enable,
29 bool is_stalling, u32 mask); 30 bool is_stalling, u32 mask);
@@ -41,5 +42,7 @@ void gk20a_mc_reset(struct gk20a *g, u32 units);
41u32 gk20a_mc_boot_0(struct gk20a *g, u32 *arch, u32 *impl, u32 *rev); 42u32 gk20a_mc_boot_0(struct gk20a *g, u32 *arch, u32 *impl, u32 *rev);
42bool mc_gk20a_is_intr1_pending(struct gk20a *g, 43bool mc_gk20a_is_intr1_pending(struct gk20a *g,
43 enum nvgpu_unit unit, u32 mc_intr_1); 44 enum nvgpu_unit unit, u32 mc_intr_1);
45void mc_gk20a_log_pending_intrs(struct gk20a *g);
44void mc_gk20a_handle_intr_nonstall(struct gk20a *g, u32 ops); 46void mc_gk20a_handle_intr_nonstall(struct gk20a *g, u32 ops);
47
45#endif /* MC_GK20A_H */ 48#endif /* MC_GK20A_H */
diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c
index 30349304..7e94d6c7 100644
--- a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c
@@ -578,6 +578,7 @@ static const struct gpu_ops gm20b_ops = {
578 .apply_smpc_war = gm20b_apply_smpc_war, 578 .apply_smpc_war = gm20b_apply_smpc_war,
579 }, 579 },
580 .mc = { 580 .mc = {
581 .intr_mask = mc_gk20a_intr_mask,
581 .intr_enable = mc_gk20a_intr_enable, 582 .intr_enable = mc_gk20a_intr_enable,
582 .intr_unit_config = mc_gk20a_intr_unit_config, 583 .intr_unit_config = mc_gk20a_intr_unit_config,
583 .isr_stall = mc_gk20a_isr_stall, 584 .isr_stall = mc_gk20a_isr_stall,
@@ -593,6 +594,7 @@ static const struct gpu_ops gm20b_ops = {
593 .reset = gk20a_mc_reset, 594 .reset = gk20a_mc_reset,
594 .boot_0 = gk20a_mc_boot_0, 595 .boot_0 = gk20a_mc_boot_0,
595 .is_intr1_pending = mc_gk20a_is_intr1_pending, 596 .is_intr1_pending = mc_gk20a_is_intr1_pending,
597 .log_pending_intrs = mc_gk20a_log_pending_intrs,
596 }, 598 },
597 .debug = { 599 .debug = {
598 .show_dump = gk20a_debug_show_dump, 600 .show_dump = gk20a_debug_show_dump,
diff --git a/drivers/gpu/nvgpu/gp106/hal_gp106.c b/drivers/gpu/nvgpu/gp106/hal_gp106.c
index eb150ce8..286ed3c7 100644
--- a/drivers/gpu/nvgpu/gp106/hal_gp106.c
+++ b/drivers/gpu/nvgpu/gp106/hal_gp106.c
@@ -694,6 +694,7 @@ static const struct gpu_ops gp106_ops = {
694 .apply_smpc_war = gp106_apply_smpc_war, 694 .apply_smpc_war = gp106_apply_smpc_war,
695 }, 695 },
696 .mc = { 696 .mc = {
697 .intr_mask = mc_gp10b_intr_mask,
697 .intr_enable = mc_gp10b_intr_enable, 698 .intr_enable = mc_gp10b_intr_enable,
698 .intr_unit_config = mc_gp10b_intr_unit_config, 699 .intr_unit_config = mc_gp10b_intr_unit_config,
699 .isr_stall = mc_gp10b_isr_stall, 700 .isr_stall = mc_gp10b_isr_stall,
@@ -709,6 +710,7 @@ static const struct gpu_ops gp106_ops = {
709 .reset = gk20a_mc_reset, 710 .reset = gk20a_mc_reset,
710 .boot_0 = gk20a_mc_boot_0, 711 .boot_0 = gk20a_mc_boot_0,
711 .is_intr1_pending = mc_gp10b_is_intr1_pending, 712 .is_intr1_pending = mc_gp10b_is_intr1_pending,
713 .log_pending_intrs = mc_gp10b_log_pending_intrs,
712 }, 714 },
713 .debug = { 715 .debug = {
714 .show_dump = gk20a_debug_show_dump, 716 .show_dump = gk20a_debug_show_dump,
diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
index d32f644d..2b0c07d8 100644
--- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
@@ -623,6 +623,7 @@ static const struct gpu_ops gp10b_ops = {
623 .apply_smpc_war = gp10b_apply_smpc_war, 623 .apply_smpc_war = gp10b_apply_smpc_war,
624 }, 624 },
625 .mc = { 625 .mc = {
626 .intr_mask = mc_gp10b_intr_mask,
626 .intr_enable = mc_gp10b_intr_enable, 627 .intr_enable = mc_gp10b_intr_enable,
627 .intr_unit_config = mc_gp10b_intr_unit_config, 628 .intr_unit_config = mc_gp10b_intr_unit_config,
628 .isr_stall = mc_gp10b_isr_stall, 629 .isr_stall = mc_gp10b_isr_stall,
@@ -638,6 +639,7 @@ static const struct gpu_ops gp10b_ops = {
638 .reset = gk20a_mc_reset, 639 .reset = gk20a_mc_reset,
639 .boot_0 = gk20a_mc_boot_0, 640 .boot_0 = gk20a_mc_boot_0,
640 .is_intr1_pending = mc_gp10b_is_intr1_pending, 641 .is_intr1_pending = mc_gp10b_is_intr1_pending,
642 .log_pending_intrs = mc_gp10b_log_pending_intrs,
641 }, 643 },
642 .debug = { 644 .debug = {
643 .show_dump = gk20a_debug_show_dump, 645 .show_dump = gk20a_debug_show_dump,
diff --git a/drivers/gpu/nvgpu/gp10b/mc_gp10b.c b/drivers/gpu/nvgpu/gp10b/mc_gp10b.c
index 56db6750..063bda7c 100644
--- a/drivers/gpu/nvgpu/gp10b/mc_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/mc_gp10b.c
@@ -32,6 +32,17 @@
32 32
33#include <nvgpu/hw/gp10b/hw_mc_gp10b.h> 33#include <nvgpu/hw/gp10b/hw_mc_gp10b.h>
34 34
35#define MAX_MC_INTR_REGS 2U
36
37void mc_gp10b_intr_mask(struct gk20a *g)
38{
39 nvgpu_writel(g, mc_intr_en_clear_r(NVGPU_MC_INTR_STALLING),
40 0xffffffffU);
41
42 nvgpu_writel(g, mc_intr_en_clear_r(NVGPU_MC_INTR_NONSTALLING),
43 0xffffffffU);
44}
45
35void mc_gp10b_intr_enable(struct gk20a *g) 46void mc_gp10b_intr_enable(struct gk20a *g)
36{ 47{
37 u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g); 48 u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g);
@@ -195,3 +206,17 @@ bool mc_gp10b_is_intr1_pending(struct gk20a *g,
195 206
196 return is_pending; 207 return is_pending;
197} 208}
209
210void mc_gp10b_log_pending_intrs(struct gk20a *g)
211{
212 u32 i, intr;
213
214 for (i = 0; i < MAX_MC_INTR_REGS; i++) {
215 intr = nvgpu_readl(g, mc_intr_r(i));
216 if (intr == 0U) {
217 continue;
218 }
219 nvgpu_info(g, "Pending intr%d=0x%08x", i, intr);
220 }
221
222}
diff --git a/drivers/gpu/nvgpu/gp10b/mc_gp10b.h b/drivers/gpu/nvgpu/gp10b/mc_gp10b.h
index 4e93235c..8c22de62 100644
--- a/drivers/gpu/nvgpu/gp10b/mc_gp10b.h
+++ b/drivers/gpu/nvgpu/gp10b/mc_gp10b.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved. 2 * Copyright (c) 2014-2018, NVIDIA CORPORATION. All rights reserved.
3 * 3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a 4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"), 5 * copy of this software and associated documentation files (the "Software"),
@@ -27,6 +27,7 @@ struct gk20a;
27#define NVGPU_MC_INTR_STALLING 0U 27#define NVGPU_MC_INTR_STALLING 0U
28#define NVGPU_MC_INTR_NONSTALLING 1U 28#define NVGPU_MC_INTR_NONSTALLING 1U
29 29
30void mc_gp10b_intr_mask(struct gk20a *g);
30void mc_gp10b_intr_enable(struct gk20a *g); 31void mc_gp10b_intr_enable(struct gk20a *g);
31void mc_gp10b_intr_unit_config(struct gk20a *g, bool enable, 32void mc_gp10b_intr_unit_config(struct gk20a *g, bool enable,
32 bool is_stalling, u32 mask); 33 bool is_stalling, u32 mask);
@@ -34,6 +35,7 @@ void mc_gp10b_isr_stall(struct gk20a *g);
34bool mc_gp10b_is_intr1_pending(struct gk20a *g, 35bool mc_gp10b_is_intr1_pending(struct gk20a *g,
35 enum nvgpu_unit unit, u32 mc_intr_1); 36 enum nvgpu_unit unit, u32 mc_intr_1);
36 37
38void mc_gp10b_log_pending_intrs(struct gk20a *g);
37u32 mc_gp10b_intr_stall(struct gk20a *g); 39u32 mc_gp10b_intr_stall(struct gk20a *g);
38void mc_gp10b_intr_stall_pause(struct gk20a *g); 40void mc_gp10b_intr_stall_pause(struct gk20a *g);
39void mc_gp10b_intr_stall_resume(struct gk20a *g); 41void mc_gp10b_intr_stall_resume(struct gk20a *g);
diff --git a/drivers/gpu/nvgpu/gv100/hal_gv100.c b/drivers/gpu/nvgpu/gv100/hal_gv100.c
index 6339110e..55984add 100644
--- a/drivers/gpu/nvgpu/gv100/hal_gv100.c
+++ b/drivers/gpu/nvgpu/gv100/hal_gv100.c
@@ -785,6 +785,7 @@ static const struct gpu_ops gv100_ops = {
785 .apply_smpc_war = gv100_apply_smpc_war, 785 .apply_smpc_war = gv100_apply_smpc_war,
786 }, 786 },
787 .mc = { 787 .mc = {
788 .intr_mask = mc_gp10b_intr_mask,
788 .intr_enable = mc_gv100_intr_enable, 789 .intr_enable = mc_gv100_intr_enable,
789 .intr_unit_config = mc_gp10b_intr_unit_config, 790 .intr_unit_config = mc_gp10b_intr_unit_config,
790 .isr_stall = mc_gp10b_isr_stall, 791 .isr_stall = mc_gp10b_isr_stall,
@@ -799,6 +800,7 @@ static const struct gpu_ops gv100_ops = {
799 .disable = gk20a_mc_disable, 800 .disable = gk20a_mc_disable,
800 .reset = gk20a_mc_reset, 801 .reset = gk20a_mc_reset,
801 .boot_0 = gk20a_mc_boot_0, 802 .boot_0 = gk20a_mc_boot_0,
803 .log_pending_intrs = mc_gp10b_log_pending_intrs,
802 .is_intr1_pending = mc_gp10b_is_intr1_pending, 804 .is_intr1_pending = mc_gp10b_is_intr1_pending,
803 .is_intr_hub_pending = gv11b_mc_is_intr_hub_pending, 805 .is_intr_hub_pending = gv11b_mc_is_intr_hub_pending,
804 .is_intr_nvlink_pending = gv100_mc_is_intr_nvlink_pending, 806 .is_intr_nvlink_pending = gv100_mc_is_intr_nvlink_pending,
diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c
index 0508452c..d0be7e82 100644
--- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c
@@ -718,6 +718,7 @@ static const struct gpu_ops gv11b_ops = {
718 .apply_smpc_war = gv11b_apply_smpc_war, 718 .apply_smpc_war = gv11b_apply_smpc_war,
719 }, 719 },
720 .mc = { 720 .mc = {
721 .intr_mask = mc_gp10b_intr_mask,
721 .intr_enable = mc_gv11b_intr_enable, 722 .intr_enable = mc_gv11b_intr_enable,
722 .intr_unit_config = mc_gp10b_intr_unit_config, 723 .intr_unit_config = mc_gp10b_intr_unit_config,
723 .isr_stall = mc_gp10b_isr_stall, 724 .isr_stall = mc_gp10b_isr_stall,
@@ -733,6 +734,7 @@ static const struct gpu_ops gv11b_ops = {
733 .reset = gk20a_mc_reset, 734 .reset = gk20a_mc_reset,
734 .boot_0 = gk20a_mc_boot_0, 735 .boot_0 = gk20a_mc_boot_0,
735 .is_intr1_pending = mc_gp10b_is_intr1_pending, 736 .is_intr1_pending = mc_gp10b_is_intr1_pending,
737 .log_pending_intrs = mc_gp10b_log_pending_intrs,
736 .is_intr_hub_pending = gv11b_mc_is_intr_hub_pending, 738 .is_intr_hub_pending = gv11b_mc_is_intr_hub_pending,
737 .is_stall_and_eng_intr_pending = 739 .is_stall_and_eng_intr_pending =
738 gv11b_mc_is_stall_and_eng_intr_pending, 740 gv11b_mc_is_stall_and_eng_intr_pending,
diff --git a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c
index fc0f9c84..45b907ac 100644
--- a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c
+++ b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c
@@ -489,6 +489,7 @@ static const struct gpu_ops vgpu_gp10b_ops = {
489 .apply_smpc_war = gp10b_apply_smpc_war, 489 .apply_smpc_war = gp10b_apply_smpc_war,
490 }, 490 },
491 .mc = { 491 .mc = {
492 .intr_mask = mc_gp10b_intr_mask,
492 .intr_enable = mc_gp10b_intr_enable, 493 .intr_enable = mc_gp10b_intr_enable,
493 .intr_unit_config = mc_gp10b_intr_unit_config, 494 .intr_unit_config = mc_gp10b_intr_unit_config,
494 .isr_stall = mc_gp10b_isr_stall, 495 .isr_stall = mc_gp10b_isr_stall,
@@ -504,6 +505,7 @@ static const struct gpu_ops vgpu_gp10b_ops = {
504 .reset = gk20a_mc_reset, 505 .reset = gk20a_mc_reset,
505 .boot_0 = gk20a_mc_boot_0, 506 .boot_0 = gk20a_mc_boot_0,
506 .is_intr1_pending = mc_gp10b_is_intr1_pending, 507 .is_intr1_pending = mc_gp10b_is_intr1_pending,
508 .log_pending_intrs = mc_gp10b_log_pending_intrs,
507 }, 509 },
508 .debug = { 510 .debug = {
509 .show_dump = NULL, 511 .show_dump = NULL,
diff --git a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c
index dbd00c23..f38585f4 100644
--- a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c
+++ b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c
@@ -558,6 +558,7 @@ static const struct gpu_ops vgpu_gv11b_ops = {
558 .apply_smpc_war = gv11b_apply_smpc_war, 558 .apply_smpc_war = gv11b_apply_smpc_war,
559 }, 559 },
560 .mc = { 560 .mc = {
561 .intr_mask = mc_gp10b_intr_mask,
561 .intr_enable = mc_gv11b_intr_enable, 562 .intr_enable = mc_gv11b_intr_enable,
562 .intr_unit_config = mc_gp10b_intr_unit_config, 563 .intr_unit_config = mc_gp10b_intr_unit_config,
563 .isr_stall = mc_gp10b_isr_stall, 564 .isr_stall = mc_gp10b_isr_stall,
@@ -574,6 +575,7 @@ static const struct gpu_ops vgpu_gv11b_ops = {
574 .boot_0 = gk20a_mc_boot_0, 575 .boot_0 = gk20a_mc_boot_0,
575 .is_intr1_pending = mc_gp10b_is_intr1_pending, 576 .is_intr1_pending = mc_gp10b_is_intr1_pending,
576 .is_intr_hub_pending = gv11b_mc_is_intr_hub_pending, 577 .is_intr_hub_pending = gv11b_mc_is_intr_hub_pending,
578 .log_pending_intrs = mc_gp10b_log_pending_intrs,
577 }, 579 },
578 .debug = { 580 .debug = {
579 .show_dump = NULL, 581 .show_dump = NULL,