diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gv100/nvlink_gv100.c')
-rw-r--r-- | drivers/gpu/nvgpu/gv100/nvlink_gv100.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv100/nvlink_gv100.c b/drivers/gpu/nvgpu/gv100/nvlink_gv100.c index e5e65c51..ba649382 100644 --- a/drivers/gpu/nvgpu/gv100/nvlink_gv100.c +++ b/drivers/gpu/nvgpu/gv100/nvlink_gv100.c | |||
@@ -1638,6 +1638,13 @@ int gv100_nvlink_init(struct gk20a *g) | |||
1638 | 1638 | ||
1639 | /* Set HSHUB and SG_PHY */ | 1639 | /* Set HSHUB and SG_PHY */ |
1640 | __nvgpu_set_enabled(g, NVGPU_MM_USE_PHYSICAL_SG, true); | 1640 | __nvgpu_set_enabled(g, NVGPU_MM_USE_PHYSICAL_SG, true); |
1641 | |||
1642 | err = g->ops.fb.enable_nvlink(g); | ||
1643 | if (err) { | ||
1644 | nvgpu_err(g, "failed switch to nvlink sysmem"); | ||
1645 | return err; | ||
1646 | } | ||
1647 | |||
1641 | return err; | 1648 | return err; |
1642 | } | 1649 | } |
1643 | 1650 | ||
@@ -2142,12 +2149,19 @@ int gv100_nvlink_interface_init(struct gk20a *g) | |||
2142 | { | 2149 | { |
2143 | unsigned long mask = g->nvlink.enabled_links; | 2150 | unsigned long mask = g->nvlink.enabled_links; |
2144 | u32 link_id; | 2151 | u32 link_id; |
2152 | int err; | ||
2145 | 2153 | ||
2146 | for_each_set_bit(link_id, &mask, 32) { | 2154 | for_each_set_bit(link_id, &mask, 32) { |
2147 | gv100_nvlink_initialize_mif(g, link_id); | 2155 | gv100_nvlink_initialize_mif(g, link_id); |
2148 | gv100_nvlink_mif_intr_enable(g, link_id, true); | 2156 | gv100_nvlink_mif_intr_enable(g, link_id, true); |
2149 | } | 2157 | } |
2150 | 2158 | ||
2159 | err = g->ops.fb.init_nvlink(g); | ||
2160 | if (err) { | ||
2161 | nvgpu_err(g, "failed to setup nvlinks for sysmem"); | ||
2162 | return err; | ||
2163 | } | ||
2164 | |||
2151 | return 0; | 2165 | return 0; |
2152 | } | 2166 | } |
2153 | 2167 | ||