From bb7ed28ab17ce68c71838bc2aa3fd6e2a0a71a15 Mon Sep 17 00:00:00 2001 From: Sourab Gupta Date: Tue, 1 May 2018 18:11:14 +0530 Subject: gpu: nvgpu: add worker for clk arb work handling Implement a worker thread to replace the workqueue based handling for clk arbiter update callbacks. The work items scheduled with the thread are of two types, update_vf_table and arb_update. Previously, there were two workqueues for handling these two work struct's separately. Now the single worker thread would process these two events. If a work item of a particular type is scheduled to be run on the worker, another instance of same type won't be scheduled, which mirrors the linux workqueue behavior. This also removes dependency on linux workqueues/work struct and makes code portable to be used by QNX also. Jira VQRM-3741 Change-Id: Ic27ce718c62c7d7c3f8820fbd1db386a159e28f2 Signed-off-by: Sourab Gupta Reviewed-on: https://git-master.nvidia.com/r/1706032 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/ioctl_clk_arb.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'drivers/gpu/nvgpu/common/linux/ioctl_clk_arb.c') diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_clk_arb.c b/drivers/gpu/nvgpu/common/linux/ioctl_clk_arb.c index 6d09b4b8..039f65f8 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_clk_arb.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_clk_arb.c @@ -424,8 +424,7 @@ int nvgpu_clk_arb_commit_request_fd(struct gk20a *g, nvgpu_spinlock_acquire(&session->session_lock); nvgpu_list_add(&dev->node, &session->targets); nvgpu_spinlock_release(&session->session_lock); - if (arb->update_work_queue) - queue_work(arb->update_work_queue, &arb->update_fn_work); + nvgpu_clk_arb_worker_enqueue(g, &arb->update_arb_work_item); fdput_fd: fdput(fd); -- cgit v1.2.2