summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv100/nvlink_gv100.c
diff options
context:
space:
mode:
authorThomas Fleury <tfleury@nvidia.com>2018-01-26 20:56:55 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-02-26 00:48:28 -0500
commit180604fec0bde1710923e78a3877d49892cbf883 (patch)
treec5d5942600d9310da86fc12df12a75dda314e153 /drivers/gpu/nvgpu/gv100/nvlink_gv100.c
parent0601fd25a5e01d0da638efef13c58b64f198bafb (diff)
gpu: nvgpu: gv100: fb hal to init and enable nvlink
Add the following hals: (1) init_nvlink to configure nvlink(s) for sysmem in HSHUB (2) enable_nvlink to switch from PCIe sysmem to nvlink sysmem, and setup atomics. Change-Id: I73d2370aaf8e0530158a1091d9efef4a8cf2aac5 Signed-off-by: Thomas Fleury <tfleury@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1648044 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv100/nvlink_gv100.c')
-rw-r--r--drivers/gpu/nvgpu/gv100/nvlink_gv100.c14
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