diff options
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/vgpu.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/vgpu.c b/drivers/gpu/nvgpu/vgpu/vgpu.c index d3d793d1..c998b10b 100644 --- a/drivers/gpu/nvgpu/vgpu/vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/vgpu.c | |||
@@ -311,7 +311,17 @@ static int vgpu_pm_initialise_domain(struct platform_device *pdev) | |||
311 | { | 311 | { |
312 | struct gk20a_platform *platform = platform_get_drvdata(pdev); | 312 | struct gk20a_platform *platform = platform_get_drvdata(pdev); |
313 | struct dev_power_governor *pm_domain_gov = NULL; | 313 | struct dev_power_governor *pm_domain_gov = NULL; |
314 | struct generic_pm_domain *domain = &platform->g->pd; | 314 | struct gk20a_domain_data *vgpu_pd_data; |
315 | struct generic_pm_domain *domain; | ||
316 | |||
317 | vgpu_pd_data = (struct gk20a_domain_data *)kzalloc | ||
318 | (sizeof(struct gk20a_domain_data), GFP_KERNEL); | ||
319 | |||
320 | if (!vgpu_pd_data) | ||
321 | return -ENOMEM; | ||
322 | |||
323 | domain = &vgpu_pd_data->gpd; | ||
324 | vgpu_pd_data->gk20a = platform->g; | ||
315 | 325 | ||
316 | domain->name = "gpu"; | 326 | domain->name = "gpu"; |
317 | 327 | ||
@@ -432,11 +442,16 @@ int vgpu_probe(struct platform_device *dev) | |||
432 | int vgpu_remove(struct platform_device *dev) | 442 | int vgpu_remove(struct platform_device *dev) |
433 | { | 443 | { |
434 | struct gk20a *g = get_gk20a(dev); | 444 | struct gk20a *g = get_gk20a(dev); |
445 | struct gk20a_domain_data *vgpu_gpd; | ||
435 | gk20a_dbg_fn(""); | 446 | gk20a_dbg_fn(""); |
436 | 447 | ||
437 | if (g->remove_support) | 448 | if (g->remove_support) |
438 | g->remove_support(dev); | 449 | g->remove_support(dev); |
439 | 450 | ||
451 | vgpu_gpd = container_of(&g, struct gk20a_domain_data, gk20a); | ||
452 | vgpu_gpd->gk20a = NULL; | ||
453 | kfree(vgpu_gpd); | ||
454 | |||
440 | vgpu_comm_deinit(); | 455 | vgpu_comm_deinit(); |
441 | gk20a_user_deinit(dev); | 456 | gk20a_user_deinit(dev); |
442 | gk20a_get_platform(dev)->g = NULL; | 457 | gk20a_get_platform(dev)->g = NULL; |