tree:
https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git habanalabs-next
head: f3fad4c1da9034b716430407921cbd316d8c76dd
commit: 926c1bd50451e2c0e0dbec4b88a7f7ac93cbee9e [19/62] habanalabs: sync stream
collective support
config: s390-allyesconfig (attached as .config)
compiler: s390-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
#
https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git/commit/...
git remote add ogabbay
https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git
git fetch --no-tags ogabbay habanalabs-next
git checkout 926c1bd50451e2c0e0dbec4b88a7f7ac93cbee9e
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=s390
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/misc/habanalabs/gaudi/gaudi.c: In function
'gaudi_collective_wait_init_cs':
> drivers/misc/habanalabs/gaudi/gaudi.c:1032:36: warning: variable
'prop' set but not used [-Wunused-but-set-variable]
1032 | struct
hl_sync_stream_properties *prop;
| ^~~~
drivers/misc/habanalabs/gaudi/gaudi.c: At top level:
drivers/misc/habanalabs/gaudi/gaudi.c:3012:6: warning: no previous prototype for
'gaudi_init_nic_qmans' [-Wmissing-prototypes]
3012 | void gaudi_init_nic_qmans(struct hl_device *hdev)
| ^~~~~~~~~~~~~~~~~~~~
> drivers/misc/habanalabs/gaudi/gaudi.c:7688:6: warning: no
previous prototype for 'gaudi_ctx_fini' [-Wmissing-prototypes]
7688 |
void gaudi_ctx_fini(struct hl_ctx *ctx)
| ^~~~~~~~~~~~~~
vim +/prop +1032 drivers/misc/habanalabs/gaudi/gaudi.c
1023
1024 static void gaudi_collective_wait_init_cs(struct hl_cs *cs)
1025 {
1026 struct hl_cs_compl *signal_cs_cmpl =
1027 container_of(cs->signal_fence, struct hl_cs_compl, base_fence);
1028 struct hl_cs_compl *cs_cmpl =
1029 container_of(cs->fence, struct hl_cs_compl, base_fence);
1030 struct gaudi_collective_properties *cprop;
1031 u32 stream, queue_id, sob_group_offset;
1032 struct hl_sync_stream_properties *prop;
1033 struct
gaudi_device *gaudi;
1034 struct hl_device *hdev;
1035 struct hl_cs_job *job;
1036 struct hl_ctx *ctx;
1037
1038 ctx = cs->ctx;
1039 hdev = ctx->hdev;
1040 gaudi = hdev->asic_specific;
1041 cprop = &gaudi->collective_props;
1042
1043 /* copy the SOB id and value of the signal CS */
1044 cs_cmpl->hw_sob = signal_cs_cmpl->hw_sob;
1045 cs_cmpl->sob_val = signal_cs_cmpl->sob_val;
1046
1047 /* Calculate the stream from collective master queue (1st job) */
1048 job = list_first_entry(&cs->job_list, struct hl_cs_job, cs_node);
1049 stream = job->hw_queue_id % 4;
1050 sob_group_offset =
1051 stream * HL_RSVD_SOBS + cprop->curr_sob_group_idx[stream];
1052
1053 list_for_each_entry(job, &cs->job_list, cs_node) {
1054 queue_id = job->hw_queue_id;
1055 prop = &hdev->kernel_queues[queue_id].sync_stream_prop;
1056
1057 if (hdev->kernel_queues[queue_id].collective_mode ==
1058 HL_COLLECTIVE_MASTER) {
1059 gaudi_collective_master_init_job(hdev, job, stream,
1060 sob_group_offset);
1061 } else {
1062 gaudi_collective_slave_init_job(hdev, job, cs_cmpl);
1063 }
1064 }
1065
1066 cs_cmpl->sob_group = sob_group_offset;
1067
1068 /* Handle sob group kref and wraparound */
1069 kref_get(&cprop->hw_sob_group[sob_group_offset].kref);
1070 cprop->next_sob_group_val[stream]++;
1071
1072 if (cprop->next_sob_group_val[stream] == HL_MAX_SOB_VAL) {
1073 /*
1074 * Decrement as we reached the max value.
1075 * The release function won't be called here as we've
1076 * just incremented the refcount.
1077 */
1078 kref_put(&cprop->hw_sob_group[sob_group_offset].kref,
1079 gaudi_sob_group_reset_error);
1080 cprop->next_sob_group_val[stream] = 1;
1081 /* only two SOBs are currently in use */
1082 cprop->curr_sob_group_idx[stream] =
1083 (cprop->curr_sob_group_idx[stream] + 1) &
1084 (HL_RSVD_SOBS - 1);
1085
1086 gaudi_collective_map_sobs(hdev, stream);
1087
1088 dev_dbg(hdev->dev, "switched to SOB group %d, stream: %d\n",
1089 cprop->curr_sob_group_idx[stream], stream);
1090 }
1091
1092 /* Increment kref since all slave queues are now waiting on it */
1093 kref_get(&cs_cmpl->hw_sob->kref);
1094 /*
1095 * Must put the signal fence after the SOB refcnt increment so
1096 * the SOB refcnt won't turn 0 and reset the SOB before the
1097 * wait CS was submitted.
1098 */
1099 mb();
1100 hl_fence_put(cs->signal_fence);
1101 cs->signal_fence = NULL;
1102 }
1103
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org