From 63b17cb482a39cded26eeab1446a6bb078aacb30 Mon Sep 17 00:00:00 2001 From: Shashank Singh Date: Wed, 20 Mar 2019 14:00:50 +0530 Subject: [PATCH] gpu: nvgpu: add force argument to os channel close os channel close may block for other OSes. Add force argument so that wait can be skipped for forced close use-case. Change-Id: Ic0749d78b2af8aecfeb6dee7a2c56e6dec8d2a20 Signed-off-by: Shashank Singh Reviewed-on: https://git-master.nvidia.com/r/2077239 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/fifo/channel.c | 2 +- drivers/gpu/nvgpu/include/nvgpu/gk20a.h | 2 +- drivers/gpu/nvgpu/os/linux/linux-channel.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/nvgpu/common/fifo/channel.c b/drivers/gpu/nvgpu/common/fifo/channel.c index 23b5d1e6c..5c5580e5b 100644 --- a/drivers/gpu/nvgpu/common/fifo/channel.c +++ b/drivers/gpu/nvgpu/common/fifo/channel.c @@ -340,7 +340,7 @@ static void gk20a_free_channel(struct channel_gk20a *ch, bool force) trace_gk20a_free_channel(ch->chid); if (g->os_channel.close != NULL) { - g->os_channel.close(ch); + g->os_channel.close(ch, force); } /* diff --git a/drivers/gpu/nvgpu/include/nvgpu/gk20a.h b/drivers/gpu/nvgpu/include/nvgpu/gk20a.h index 9227bf430..e517e8506 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/gk20a.h +++ b/drivers/gpu/nvgpu/include/nvgpu/gk20a.h @@ -2066,7 +2066,7 @@ struct gk20a { struct { void (*open)(struct channel_gk20a *ch); - void (*close)(struct channel_gk20a *ch); + void (*close)(struct channel_gk20a *ch, bool force); void (*work_completion_signal)(struct channel_gk20a *ch); void (*work_completion_cancel_sync)(struct channel_gk20a *ch); bool (*os_fence_framework_inst_exists)(struct channel_gk20a *ch); diff --git a/drivers/gpu/nvgpu/os/linux/linux-channel.c b/drivers/gpu/nvgpu/os/linux/linux-channel.c index 2ecd9903e..153a1e08e 100644 --- a/drivers/gpu/nvgpu/os/linux/linux-channel.c +++ b/drivers/gpu/nvgpu/os/linux/linux-channel.c @@ -270,7 +270,7 @@ static void nvgpu_channel_open_linux(struct channel_gk20a *ch) { } -static void nvgpu_channel_close_linux(struct channel_gk20a *ch) +static void nvgpu_channel_close_linux(struct channel_gk20a *ch, bool force) { nvgpu_channel_work_completion_clear(ch);