diff options
Diffstat (limited to 'drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c')
-rw-r--r-- | drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c b/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c index a7612e54..25024e7d 100644 --- a/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c +++ b/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c | |||
@@ -147,7 +147,9 @@ int vgpu_pm_prepare_poweroff(struct device *dev) | |||
147 | if (!g->power_on) | 147 | if (!g->power_on) |
148 | return 0; | 148 | return 0; |
149 | 149 | ||
150 | ret = gk20a_channel_suspend(g); | 150 | if (g->ops.fifo.channel_suspend) |
151 | ret = g->ops.fifo.channel_suspend(g); | ||
152 | |||
151 | if (ret) | 153 | if (ret) |
152 | return ret; | 154 | return ret; |
153 | 155 | ||
@@ -473,3 +475,35 @@ bool vgpu_is_reduced_bar1(struct gk20a *g) | |||
473 | 475 | ||
474 | return resource_size(l->bar1_mem) == (resource_size_t)f->userd.size; | 476 | return resource_size(l->bar1_mem) == (resource_size_t)f->userd.size; |
475 | } | 477 | } |
478 | |||
479 | int vgpu_tegra_suspend(struct device *dev) | ||
480 | { | ||
481 | struct tegra_vgpu_cmd_msg msg = {}; | ||
482 | struct gk20a *g = get_gk20a(dev); | ||
483 | int err = 0; | ||
484 | |||
485 | msg.cmd = TEGRA_VGPU_CMD_SUSPEND; | ||
486 | msg.handle = vgpu_get_handle(g); | ||
487 | err = vgpu_comm_sendrecv(&msg, sizeof(msg), sizeof(msg)); | ||
488 | err = err ? err : msg.ret; | ||
489 | if (err) | ||
490 | nvgpu_err(g, "vGPU suspend failed\n"); | ||
491 | |||
492 | return err; | ||
493 | } | ||
494 | |||
495 | int vgpu_tegra_resume(struct device *dev) | ||
496 | { | ||
497 | struct tegra_vgpu_cmd_msg msg = {}; | ||
498 | struct gk20a *g = get_gk20a(dev); | ||
499 | int err = 0; | ||
500 | |||
501 | msg.cmd = TEGRA_VGPU_CMD_RESUME; | ||
502 | msg.handle = vgpu_get_handle(g); | ||
503 | err = vgpu_comm_sendrecv(&msg, sizeof(msg), sizeof(msg)); | ||
504 | err = err ? err : msg.ret; | ||
505 | if (err) | ||
506 | nvgpu_err(g, "vGPU resume failed\n"); | ||
507 | |||
508 | return err; | ||
509 | } | ||