diff options
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 13 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mc_gk20a.c | 23 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mc_gk20a.h | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hal_gm20b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp106/hal_gp106.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/hal_gp10b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/mc_gp10b.c | 25 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/mc_gp10b.h | 4 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv100/hal_gv100.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c | 2 |
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 | ||
96 | static 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 | |||
96 | int gk20a_prepare_poweroff(struct gk20a *g) | 107 | int 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 | ||
124 | void 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 | |||
124 | void mc_gk20a_intr_enable(struct gk20a *g) | 132 | void 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 | ||
303 | void 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 | |||
295 | void mc_gk20a_handle_intr_nonstall(struct gk20a *g, u32 ops) | 318 | void 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 |
25 | struct gk20a; | 25 | struct gk20a; |
26 | 26 | ||
27 | void mc_gk20a_intr_mask(struct gk20a *g); | ||
27 | void mc_gk20a_intr_enable(struct gk20a *g); | 28 | void mc_gk20a_intr_enable(struct gk20a *g); |
28 | void mc_gk20a_intr_unit_config(struct gk20a *g, bool enable, | 29 | void 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); | |||
41 | u32 gk20a_mc_boot_0(struct gk20a *g, u32 *arch, u32 *impl, u32 *rev); | 42 | u32 gk20a_mc_boot_0(struct gk20a *g, u32 *arch, u32 *impl, u32 *rev); |
42 | bool mc_gk20a_is_intr1_pending(struct gk20a *g, | 43 | bool 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); |
45 | void mc_gk20a_log_pending_intrs(struct gk20a *g); | ||
44 | void mc_gk20a_handle_intr_nonstall(struct gk20a *g, u32 ops); | 46 | void 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 | |||
37 | void 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 | |||
35 | void mc_gp10b_intr_enable(struct gk20a *g) | 46 | void 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 | |||
210 | void 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 | ||
30 | void mc_gp10b_intr_mask(struct gk20a *g); | ||
30 | void mc_gp10b_intr_enable(struct gk20a *g); | 31 | void mc_gp10b_intr_enable(struct gk20a *g); |
31 | void mc_gp10b_intr_unit_config(struct gk20a *g, bool enable, | 32 | void 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); | |||
34 | bool mc_gp10b_is_intr1_pending(struct gk20a *g, | 35 | bool 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 | ||
38 | void mc_gp10b_log_pending_intrs(struct gk20a *g); | ||
37 | u32 mc_gp10b_intr_stall(struct gk20a *g); | 39 | u32 mc_gp10b_intr_stall(struct gk20a *g); |
38 | void mc_gp10b_intr_stall_pause(struct gk20a *g); | 40 | void mc_gp10b_intr_stall_pause(struct gk20a *g); |
39 | void mc_gp10b_intr_stall_resume(struct gk20a *g); | 41 | void 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, |