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/?id=926c1bd50451e2c0e0dbec4b88a7f7ac93cbee9e 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 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(a)lists.01.org