summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c')
-rw-r--r--drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c b/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c
index e01178ed..aa2fa998 100644
--- a/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c
+++ b/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c
@@ -33,6 +33,7 @@
33#include <nvgpu/defaults.h> 33#include <nvgpu/defaults.h>
34#include <nvgpu/ltc.h> 34#include <nvgpu/ltc.h>
35#include <nvgpu/channel.h> 35#include <nvgpu/channel.h>
36#include <nvgpu/clk_arb.h>
36 37
37#include "vgpu_linux.h" 38#include "vgpu_linux.h"
38#include "vgpu/fecs_trace_vgpu.h" 39#include "vgpu/fecs_trace_vgpu.h"
@@ -72,12 +73,19 @@ static void vgpu_remove_support(struct gk20a *g)
72static void vgpu_init_vars(struct gk20a *g, struct gk20a_platform *platform) 73static void vgpu_init_vars(struct gk20a *g, struct gk20a_platform *platform)
73{ 74{
74 struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g); 75 struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
76 struct vgpu_priv_data *priv = vgpu_get_priv_data(g);
75 77
76 nvgpu_mutex_init(&g->power_lock); 78 nvgpu_mutex_init(&g->power_lock);
77 nvgpu_mutex_init(&g->ctxsw_disable_lock); 79 nvgpu_mutex_init(&g->ctxsw_disable_lock);
80 nvgpu_mutex_init(&g->clk_arb_enable_lock);
81
82 nvgpu_mutex_init(&priv->vgpu_clk_get_freq_lock);
83
78 l->regs_saved = l->regs; 84 l->regs_saved = l->regs;
79 l->bar1_saved = l->bar1; 85 l->bar1_saved = l->bar1;
80 86
87 nvgpu_atomic_set(&g->clk_arb_global_nr, 0);
88
81 g->aggressive_sync_destroy = platform->aggressive_sync_destroy; 89 g->aggressive_sync_destroy = platform->aggressive_sync_destroy;
82 g->aggressive_sync_destroy_thresh = platform->aggressive_sync_destroy_thresh; 90 g->aggressive_sync_destroy_thresh = platform->aggressive_sync_destroy_thresh;
83 __nvgpu_set_enabled(g, NVGPU_HAS_SYNCPOINTS, platform->has_syncpoints); 91 __nvgpu_set_enabled(g, NVGPU_HAS_SYNCPOINTS, platform->has_syncpoints);
@@ -206,6 +214,12 @@ int vgpu_pm_finalize_poweron(struct device *dev)
206 goto done; 214 goto done;
207 } 215 }
208 216
217 err = nvgpu_clk_arb_init_arbiter(g);
218 if (err) {
219 nvgpu_err(g, "failed to init clk arb");
220 goto done;
221 }
222
209 err = g->ops.chip_init_gpu_characteristics(g); 223 err = g->ops.chip_init_gpu_characteristics(g);
210 if (err) { 224 if (err) {
211 nvgpu_err(g, "failed to init gk20a gpu characteristics"); 225 nvgpu_err(g, "failed to init gk20a gpu characteristics");