diff options
author | Richard Zhao <rizhao@nvidia.com> | 2017-03-28 18:27:02 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-04-07 11:14:38 -0400 |
commit | 71fc7829149007437a56745e7f05d218c9ed27cc (patch) | |
tree | f927bdc3f2538804c07c5596ecee3ddbfb5b0f99 /drivers | |
parent | 50667e097b2be567e3d2f95e23b046243bca2bf6 (diff) |
gpu: nvgpu: vgpu: init vars in gk20a vgpu missed
pending_sema_waits and a few other variables in struct gk20a is used
in gk20a shutdown path but we didn't initialize them in vgpu. I added
a function vgpu_init_vars dedicated to init variables for struct gk20a.
The native code also similar function nvgpu_init_vars().
This is a quick fix. Finally, the common probe code is better be put
in common function btween vgpu and native gpu.
Bug 200293437
Jira EVLR-1152
Change-Id: I55f0d179d7adba556e0cb404766e14405b3e27e5
Signed-off-by: Richard Zhao <rizhao@nvidia.com>
Reviewed-on: http://git-master/r/1330229
(cherry picked from commit 7691902fec8abdd621ee17561607efeef615499f)
Reviewed-on: http://git-master/r/1331604
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/vgpu.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/vgpu.c b/drivers/gpu/nvgpu/vgpu/vgpu.c index 49f0fb39..871f0874 100644 --- a/drivers/gpu/nvgpu/vgpu/vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/vgpu.c | |||
@@ -227,6 +227,16 @@ static void vgpu_remove_support(struct gk20a *g) | |||
227 | } | 227 | } |
228 | } | 228 | } |
229 | 229 | ||
230 | static void vgpu_init_vars(struct gk20a *g) | ||
231 | { | ||
232 | nvgpu_mutex_init(&g->poweroff_lock); | ||
233 | g->regs_saved = g->regs; | ||
234 | g->bar1_saved = g->bar1; | ||
235 | |||
236 | INIT_LIST_HEAD(&g->pending_sema_waits); | ||
237 | nvgpu_raw_spinlock_init(&g->pending_sema_waits_lock); | ||
238 | } | ||
239 | |||
230 | static int vgpu_init_support(struct platform_device *pdev) | 240 | static int vgpu_init_support(struct platform_device *pdev) |
231 | { | 241 | { |
232 | struct resource *r = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 242 | struct resource *r = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
@@ -583,6 +593,8 @@ int vgpu_probe(struct platform_device *pdev) | |||
583 | 593 | ||
584 | vgpu_init_support(pdev); | 594 | vgpu_init_support(pdev); |
585 | 595 | ||
596 | vgpu_init_vars(gk20a); | ||
597 | |||
586 | init_rwsem(&gk20a->busy_lock); | 598 | init_rwsem(&gk20a->busy_lock); |
587 | 599 | ||
588 | nvgpu_spinlock_init(&gk20a->mc_enable_lock); | 600 | nvgpu_spinlock_init(&gk20a->mc_enable_lock); |