From 180604fec0bde1710923e78a3877d49892cbf883 Mon Sep 17 00:00:00 2001 From: Thomas Fleury Date: Fri, 26 Jan 2018 17:56:55 -0800 Subject: 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 Reviewed-on: https://git-master.nvidia.com/r/1648044 Reviewed-by: svc-mobile-coverity GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gv100/nvlink_gv100.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'drivers/gpu/nvgpu/gv100/nvlink_gv100.c') 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) /* Set HSHUB and SG_PHY */ __nvgpu_set_enabled(g, NVGPU_MM_USE_PHYSICAL_SG, true); + + err = g->ops.fb.enable_nvlink(g); + if (err) { + nvgpu_err(g, "failed switch to nvlink sysmem"); + return err; + } + return err; } @@ -2142,12 +2149,19 @@ int gv100_nvlink_interface_init(struct gk20a *g) { unsigned long mask = g->nvlink.enabled_links; u32 link_id; + int err; for_each_set_bit(link_id, &mask, 32) { gv100_nvlink_initialize_mif(g, link_id); gv100_nvlink_mif_intr_enable(g, link_id, true); } + err = g->ops.fb.init_nvlink(g); + if (err) { + nvgpu_err(g, "failed to setup nvlinks for sysmem"); + return err; + } + return 0; } -- cgit v1.2.2