From b4b1fb97bd095fa0de72550b04dc414b0194903e Mon Sep 17 00:00:00 2001 From: Nitin Kumbhar Date: Mon, 11 Jun 2018 15:31:33 +0530 Subject: gpu: nvgpu: shutdown nvlink in driver remove During driver remove, if nvlink is set up, gracefully shut it down so that it can be enumerated again. Bug 1987855 Change-Id: Ibd83a5e29364b22264e689aa879569a9cccf0f79 Signed-off-by: Nitin Kumbhar Reviewed-on: https://git-master.nvidia.com/r/1746073 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/nvlink.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'drivers/gpu/nvgpu/common/nvlink.c') diff --git a/drivers/gpu/nvgpu/common/nvlink.c b/drivers/gpu/nvgpu/common/nvlink.c index 6bfc154c..b13e5942 100644 --- a/drivers/gpu/nvgpu/common/nvlink.c +++ b/drivers/gpu/nvgpu/common/nvlink.c @@ -92,6 +92,16 @@ static int nvgpu_nvlink_interface_init(struct nvlink_device *ndev) return err; } +static int nvgpu_nvlink_interface_disable(struct nvlink_device *ndev) +{ + int err = 0; + struct gk20a *g = (struct gk20a *) ndev->priv; + + if (g->ops.nvlink.interface_disable) + err = g->ops.nvlink.interface_disable(g); + return err; +} + static int nvgpu_nvlink_shutdown(struct nvlink_device *ndev) { int err; @@ -401,6 +411,7 @@ static int nvgpu_nvlink_init_ops(struct gk20a *g) ndev->dev_ops.dev_early_init = nvgpu_nvlink_early_init; ndev->dev_ops.dev_interface_init = nvgpu_nvlink_interface_init; ndev->dev_ops.dev_reg_init = nvgpu_nvlink_reg_init; + ndev->dev_ops.dev_interface_disable = nvgpu_nvlink_interface_disable; ndev->dev_ops.dev_shutdown = nvgpu_nvlink_shutdown; /* Fill in the link struct */ -- cgit v1.2.2