summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv100
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gv100')
-rw-r--r--drivers/gpu/nvgpu/gv100/flcn_gv100.c22
-rw-r--r--drivers/gpu/nvgpu/gv100/flcn_gv100.h2
-rw-r--r--drivers/gpu/nvgpu/gv100/nvlink_gv100.c6
3 files changed, 18 insertions, 12 deletions
diff --git a/drivers/gpu/nvgpu/gv100/flcn_gv100.c b/drivers/gpu/nvgpu/gv100/flcn_gv100.c
index 5820d6c9..5167e3f0 100644
--- a/drivers/gpu/nvgpu/gv100/flcn_gv100.c
+++ b/drivers/gpu/nvgpu/gv100/flcn_gv100.c
@@ -29,27 +29,29 @@
29 29
30#include <nvgpu/hw/gv100/hw_falcon_gv100.h> 30#include <nvgpu/hw/gv100/hw_falcon_gv100.h>
31 31
32void gv100_falcon_hal_sw_init(struct nvgpu_falcon *flcn) 32int gv100_falcon_hal_sw_init(struct nvgpu_falcon *flcn)
33{ 33{
34 struct gk20a *g = flcn->g; 34 struct gk20a *g = flcn->g;
35 int err = 0;
35 36
36 switch (flcn->flcn_id) { 37 if (flcn->flcn_id == FALCON_ID_MINION) {
37 case FALCON_ID_MINION:
38 flcn->flcn_base = g->nvlink.minion_base; 38 flcn->flcn_base = g->nvlink.minion_base;
39 flcn->is_falcon_supported = true; 39 flcn->is_falcon_supported = true;
40 flcn->is_interrupt_enabled = true; 40 flcn->is_interrupt_enabled = true;
41 break;
42 default:
43 break;
44 }
45 41
46 if (flcn->is_falcon_supported) { 42 err = nvgpu_mutex_init(&flcn->copy_lock);
47 nvgpu_mutex_init(&flcn->copy_lock); 43 if (err != 0) {
44 nvgpu_err(g, "Error in flcn.copy_lock mutex initialization");
45 return err;
46 }
47
48 gk20a_falcon_ops(flcn); 48 gk20a_falcon_ops(flcn);
49 } else { 49 } else {
50 /* 50 /*
51 * Fall back 51 * Fall back
52 */ 52 */
53 gp106_falcon_hal_sw_init(flcn); 53 err = gp106_falcon_hal_sw_init(flcn);
54 } 54 }
55
56 return err;
55} 57}
diff --git a/drivers/gpu/nvgpu/gv100/flcn_gv100.h b/drivers/gpu/nvgpu/gv100/flcn_gv100.h
index 869e74c8..9207519a 100644
--- a/drivers/gpu/nvgpu/gv100/flcn_gv100.h
+++ b/drivers/gpu/nvgpu/gv100/flcn_gv100.h
@@ -22,6 +22,6 @@
22#ifndef __FLCN_GV100_H__ 22#ifndef __FLCN_GV100_H__
23#define __FLCN_GV100_H__ 23#define __FLCN_GV100_H__
24 24
25void gv100_falcon_hal_sw_init(struct nvgpu_falcon *flcn); 25int gv100_falcon_hal_sw_init(struct nvgpu_falcon *flcn);
26 26
27#endif /* __FLCN_GV100_H__ */ 27#endif /* __FLCN_GV100_H__ */
diff --git a/drivers/gpu/nvgpu/gv100/nvlink_gv100.c b/drivers/gpu/nvgpu/gv100/nvlink_gv100.c
index b39e4165..3e1b2cda 100644
--- a/drivers/gpu/nvgpu/gv100/nvlink_gv100.c
+++ b/drivers/gpu/nvgpu/gv100/nvlink_gv100.c
@@ -2715,7 +2715,11 @@ int gv100_nvlink_early_init(struct gk20a *g)
2715 goto nvlink_init_exit; 2715 goto nvlink_init_exit;
2716 } 2716 }
2717 2717
2718 nvgpu_flcn_sw_init(g, FALCON_ID_MINION); 2718 err = nvgpu_flcn_sw_init(g, FALCON_ID_MINION);
2719 if (err != 0) {
2720 nvgpu_err(g, "failed to sw init FALCON_ID_MINION");
2721 goto nvlink_init_exit;
2722 }
2719 2723
2720 g->nvlink.discovered_links &= ~g->nvlink.link_disable_mask; 2724 g->nvlink.discovered_links &= ~g->nvlink.link_disable_mask;
2721 nvgpu_log(g, gpu_dbg_nvlink, "link_disable_mask = 0x%08x (from VBIOS)", 2725 nvgpu_log(g, gpu_dbg_nvlink, "link_disable_mask = 0x%08x (from VBIOS)",