summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/nvlink.c
diff options
context:
space:
mode:
authorNitin Kumbhar <nkumbhar@nvidia.com>2018-05-30 02:43:59 -0400
committerTejal Kudav <tkudav@nvidia.com>2018-06-14 09:44:07 -0400
commitebc8b262500a55d55acca627db9db0e11760375b (patch)
treebf2b868658eed18b5948d5a29a13d2443b3c472f /drivers/gpu/nvgpu/common/nvlink.c
parent34e9ab1f26155ae72521be80cf496bbc0573f03e (diff)
gpu: nvgpu: remove nvlink on driver removal
Unregister nvlink and nvlink device when gpu is getting removed. Without this next modprobe of nvgpu results in nvlink registration failure. Bug 1987855 Change-Id: I785e707d1fa90f45a3ff0e9790f3f02fa15510d4 Signed-off-by: Nitin Kumbhar <nkumbhar@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1735986 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/common/nvlink.c')
-rw-r--r--drivers/gpu/nvgpu/common/nvlink.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/common/nvlink.c b/drivers/gpu/nvgpu/common/nvlink.c
index 25c1b10b..1a6ee853 100644
--- a/drivers/gpu/nvgpu/common/nvlink.c
+++ b/drivers/gpu/nvgpu/common/nvlink.c
@@ -503,3 +503,33 @@ free_ndev:
503 return -ENODEV; 503 return -ENODEV;
504#endif 504#endif
505} 505}
506
507int nvgpu_nvlink_remove(struct gk20a *g)
508{
509#ifdef CONFIG_TEGRA_NVLINK
510 struct nvlink_device *ndev;
511 int err;
512
513 ndev = g->nvlink.priv;
514
515 __nvgpu_set_enabled(g, NVGPU_SUPPORT_NVLINK, false);
516
517 err = nvlink_unregister_link(&ndev->link);
518 if (err) {
519 nvgpu_err(g, "failed on nvlink link unregistration");
520 return err;
521 }
522
523 err = nvlink_unregister_device(ndev);
524 if (err) {
525 nvgpu_err(g, "failed on nvlink device unregistration");
526 return err;
527 }
528
529 nvgpu_kfree(g, ndev);
530
531 return 0;
532#else
533 return -ENODEV;
534#endif
535}