summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/nvlink.c
diff options
context:
space:
mode:
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}