diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2018-04-09 10:26:59 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-04-10 14:23:30 -0400 |
commit | d91ea322e1a6ae51ae8e017d09bfaf3e139ecf2d (patch) | |
tree | c8f95d7f89ad3a7cec265ee0b69b619119af161e /drivers/gpu/nvgpu/gk20a/gk20a.h | |
parent | aa1f8e01ced661b640ee612f6a7bd201f0bbd6a4 (diff) |
gpu: nvgpu: fix gpc/tpc index for SMPC broadcast conversion
In gv11b_gr_egpc_etpc_priv_addr_table(), we call
gv11b_gr_update_priv_addr_table_smpc() to convert SMPC broadcast address into
list of unicast addresses
But before calling gv11b_gr_update_priv_addr_table_smpc() we sometimes
incorrectly set gpc_num/tpc_num to zero and that leads to generating incorrect
list of unicast addresses
Remove this incorrect initialization of gpc_num/tpc_num
Also update gv11b_gr_egpc_etpc_priv_addr_table() to receive tpc_num along with
gpc_num
Bug 2099717
Jira NVGPU-580
Change-Id: Idd4e5f78dbe6ca1800efae93c66355d06417d1f2
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1691373
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index c2a8d6ce..e3b37747 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -244,7 +244,8 @@ struct gpu_ops { | |||
244 | u32 addr, int *addr_type, | 244 | u32 addr, int *addr_type, |
245 | u32 *gpc_num, u32 *tpc_num, u32 *broadcast_flags); | 245 | u32 *gpc_num, u32 *tpc_num, u32 *broadcast_flags); |
246 | void (*egpc_etpc_priv_addr_table)(struct gk20a *g, u32 addr, | 246 | void (*egpc_etpc_priv_addr_table)(struct gk20a *g, u32 addr, |
247 | u32 gpc, u32 broadcast_flags, u32 *priv_addr_table, | 247 | u32 gpc, u32 tpc, u32 broadcast_flags, |
248 | u32 *priv_addr_table, | ||
248 | u32 *priv_addr_table_index); | 249 | u32 *priv_addr_table_index); |
249 | bool (*is_tpc_addr)(struct gk20a *g, u32 addr); | 250 | bool (*is_tpc_addr)(struct gk20a *g, u32 addr); |
250 | bool (*is_egpc_addr)(struct gk20a *g, u32 addr); | 251 | bool (*is_egpc_addr)(struct gk20a *g, u32 addr); |