diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gv100')
-rw-r--r-- | drivers/gpu/nvgpu/gv100/flcn_gv100.c | 22 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv100/flcn_gv100.h | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv100/nvlink_gv100.c | 6 |
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 | ||
32 | void gv100_falcon_hal_sw_init(struct nvgpu_falcon *flcn) | 32 | int 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 | ||
25 | void gv100_falcon_hal_sw_init(struct nvgpu_falcon *flcn); | 25 | int 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)", |