summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/vgpu/tsg_vgpu.c
diff options
context:
space:
mode:
authorAparna Das <aparnad@nvidia.com>2017-10-30 18:55:11 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-11-01 21:10:41 -0400
commita37cec19f0cf5212cbd472cd8d94acaa1e1cff6d (patch)
tree4caa513f13333d7d2c47fd9059f2c682c46915a4 /drivers/gpu/nvgpu/vgpu/tsg_vgpu.c
parent6fdf03e0b2617ea99803bfea3e730aa69cf40188 (diff)
gpu: nvgpu: vgpu: modify tsg enable sequence
TSG enable sequence in native has been modified due to a hardware bug requiring enabling all channels with NEXT and CTX_RELOAD set in a TSG, and then enabling rest of channels. However it is not possible to check if NEXT and CTX_RELOAD is set in vgpu. Have a separate implementation for enabling tsg sequence in vgpu till the fix for hardware bug is implemented for virtualized configuration. Bug 200348087 Change-Id: I6bfc52138bc540c0ea0ad18a85155eeff6f9efa8 Signed-off-by: Aparna Das <aparnad@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1588740 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu/tsg_vgpu.c')
-rw-r--r--drivers/gpu/nvgpu/vgpu/tsg_vgpu.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/tsg_vgpu.c b/drivers/gpu/nvgpu/vgpu/tsg_vgpu.c
index 2be102e3..94d7140e 100644
--- a/drivers/gpu/nvgpu/vgpu/tsg_vgpu.c
+++ b/drivers/gpu/nvgpu/vgpu/tsg_vgpu.c
@@ -53,6 +53,19 @@ int vgpu_tsg_open(struct tsg_gk20a *tsg)
53 return err; 53 return err;
54} 54}
55 55
56int vgpu_enable_tsg(struct tsg_gk20a *tsg)
57{
58 struct gk20a *g = tsg->g;
59 struct channel_gk20a *ch;
60
61 nvgpu_rwsem_down_read(&tsg->ch_list_lock);
62 nvgpu_list_for_each_entry(ch, &tsg->ch_list, channel_gk20a, ch_entry)
63 g->ops.fifo.enable_channel(ch);
64 nvgpu_rwsem_up_read(&tsg->ch_list_lock);
65
66 return 0;
67}
68
56int vgpu_tsg_bind_channel(struct tsg_gk20a *tsg, 69int vgpu_tsg_bind_channel(struct tsg_gk20a *tsg,
57 struct channel_gk20a *ch) 70 struct channel_gk20a *ch)
58{ 71{