diff options
author | Nitin Kumbhar <nkumbhar@nvidia.com> | 2018-05-30 02:43:59 -0400 |
---|---|---|
committer | Tejal Kudav <tkudav@nvidia.com> | 2018-06-14 09:44:07 -0400 |
commit | ebc8b262500a55d55acca627db9db0e11760375b (patch) | |
tree | bf2b868658eed18b5948d5a29a13d2443b3c472f /drivers/gpu/nvgpu/common/nvlink.c | |
parent | 34e9ab1f26155ae72521be80cf496bbc0573f03e (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.c | 30 |
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 | |||
507 | int 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 | } | ||