diff options
Diffstat (limited to 'drivers/gpu/nvgpu/clk')
-rw-r--r-- | drivers/gpu/nvgpu/clk/clk_arb.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/clk/clk_arb.c b/drivers/gpu/nvgpu/clk/clk_arb.c index 452d9de3..3d97535d 100644 --- a/drivers/gpu/nvgpu/clk/clk_arb.c +++ b/drivers/gpu/nvgpu/clk/clk_arb.c | |||
@@ -772,6 +772,11 @@ int nvgpu_clk_arb_init_arbiter(struct gk20a *g) | |||
772 | return err; | 772 | return err; |
773 | } | 773 | } |
774 | 774 | ||
775 | bool nvgpu_clk_arb_has_active_req(struct gk20a *g) | ||
776 | { | ||
777 | return (nvgpu_atomic_read(&g->clk_arb_global_nr) > 0); | ||
778 | } | ||
779 | |||
775 | void nvgpu_clk_arb_send_thermal_alarm(struct gk20a *g) | 780 | void nvgpu_clk_arb_send_thermal_alarm(struct gk20a *g) |
776 | { | 781 | { |
777 | nvgpu_clk_arb_schedule_alarm(g, | 782 | nvgpu_clk_arb_schedule_alarm(g, |
@@ -854,10 +859,12 @@ void nvgpu_clk_arb_free_fd(struct nvgpu_ref *refcount) | |||
854 | struct nvgpu_clk_dev *dev = container_of(refcount, | 859 | struct nvgpu_clk_dev *dev = container_of(refcount, |
855 | struct nvgpu_clk_dev, refcount); | 860 | struct nvgpu_clk_dev, refcount); |
856 | struct nvgpu_clk_session *session = dev->session; | 861 | struct nvgpu_clk_session *session = dev->session; |
862 | struct gk20a *g = session->g; | ||
857 | 863 | ||
858 | nvgpu_clk_notification_queue_free(session->g, &dev->queue); | 864 | nvgpu_clk_notification_queue_free(g, &dev->queue); |
859 | 865 | ||
860 | nvgpu_kfree(session->g, dev); | 866 | nvgpu_atomic_dec(&g->clk_arb_global_nr); |
867 | nvgpu_kfree(g, dev); | ||
861 | } | 868 | } |
862 | 869 | ||
863 | void nvgpu_clk_arb_free_session(struct nvgpu_ref *refcount) | 870 | void nvgpu_clk_arb_free_session(struct nvgpu_ref *refcount) |