Hi Hannes, I love your patch! Perhaps something to improve: [auto build test WARNING on mkp-scsi/for-next] [also build test WARNING on v5.4-rc4 next-20191021] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Hannes-Reinecke/scsi-Revamp-result-values/20191022-004918 base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next config: m68k-multi_defconfig (attached as .config) compiler: m68k-linux-gcc (GCC) 7.4.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=7.4.0 make.cross ARCH=m68k If you fix the issue, kindly add following tag Reported-by: kbuild test robot All warnings (new ones prefixed by >>): drivers/scsi/wd33c93.c: In function 'wd33c93_intr': >> drivers/scsi/wd33c93.c:1297:19: warning: passing argument 1 of 'set_host_byte' makes pointer from integer without a cast [-Wint-conversion] set_host_byte(cmd->result, DID_ERROR); ^~~ In file included from drivers/scsi/wd33c93.c:79:0: include/scsi/scsi_cmnd.h:315:20: note: expected 'struct scsi_cmnd *' but argument is of type 'int' static inline void set_host_byte(struct scsi_cmnd *cmd, char status) ^~~~~~~~~~~~~ vim +/set_host_byte +1297 drivers/scsi/wd33c93.c 1200 1201 case CSR_SDP: 1202 DB(DB_INTR, printk("SDP")) 1203 hostdata->state = S_RUNNING_LEVEL2; 1204 write_wd33c93(regs, WD_COMMAND_PHASE, 0x41); 1205 write_wd33c93_cmd(regs, WD_CMD_SEL_ATN_XFER); 1206 spin_unlock_irqrestore(&hostdata->lock, flags); 1207 break; 1208 1209 case CSR_XFER_DONE | PHS_MESS_OUT: 1210 case CSR_UNEXP | PHS_MESS_OUT: 1211 case CSR_SRV_REQ | PHS_MESS_OUT: 1212 DB(DB_INTR, printk("MSG_OUT=")) 1213 1214 /* To get here, we've probably requested MESSAGE_OUT and have 1215 * already put the correct bytes in outgoing_msg[] and filled 1216 * in outgoing_len. We simply send them out to the SCSI bus. 1217 * Sometimes we get MESSAGE_OUT phase when we're not expecting 1218 * it - like when our SDTR message is rejected by a target. Some 1219 * targets send the REJECT before receiving all of the extended 1220 * message, and then seem to go back to MESSAGE_OUT for a byte 1221 * or two. Not sure why, or if I'm doing something wrong to 1222 * cause this to happen. Regardless, it seems that sending 1223 * NOP messages in these situations results in no harm and 1224 * makes everyone happy. 1225 */ 1226 if (hostdata->outgoing_len == 0) { 1227 hostdata->outgoing_len = 1; 1228 hostdata->outgoing_msg[0] = NOP; 1229 } 1230 transfer_pio(regs, hostdata->outgoing_msg, 1231 hostdata->outgoing_len, DATA_OUT_DIR, hostdata); 1232 DB(DB_INTR, printk("%02x", hostdata->outgoing_msg[0])) 1233 hostdata->outgoing_len = 0; 1234 hostdata->state = S_CONNECTED; 1235 spin_unlock_irqrestore(&hostdata->lock, flags); 1236 break; 1237 1238 case CSR_UNEXP_DISC: 1239 1240 /* I think I've seen this after a request-sense that was in response 1241 * to an error condition, but not sure. We certainly need to do 1242 * something when we get this interrupt - the question is 'what?'. 1243 * Let's think positively, and assume some command has finished 1244 * in a legal manner (like a command that provokes a request-sense), 1245 * so we treat it as a normal command-complete-disconnect. 1246 */ 1247 1248 /* Make sure that reselection is enabled at this point - it may 1249 * have been turned off for the command that just completed. 1250 */ 1251 1252 write_wd33c93(regs, WD_SOURCE_ID, SRCID_ER); 1253 if (cmd == NULL) { 1254 printk(" - Already disconnected! "); 1255 hostdata->state = S_UNCONNECTED; 1256 spin_unlock_irqrestore(&hostdata->lock, flags); 1257 return; 1258 } 1259 DB(DB_INTR, printk("UNEXP_DISC")) 1260 hostdata->connected = NULL; 1261 hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); 1262 hostdata->state = S_UNCONNECTED; 1263 if (cmd->cmnd[0] == REQUEST_SENSE && cmd->SCp.Status != SAM_STAT_GOOD) 1264 set_host_byte(cmd, DID_ERROR); 1265 else 1266 cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8); 1267 cmd->scsi_done(cmd); 1268 1269 /* We are no longer connected to a target - check to see if 1270 * there are commands waiting to be executed. 1271 */ 1272 /* look above for comments on scsi_done() */ 1273 spin_unlock_irqrestore(&hostdata->lock, flags); 1274 wd33c93_execute(instance); 1275 break; 1276 1277 case CSR_DISC: 1278 1279 /* Make sure that reselection is enabled at this point - it may 1280 * have been turned off for the command that just completed. 1281 */ 1282 1283 write_wd33c93(regs, WD_SOURCE_ID, SRCID_ER); 1284 DB(DB_INTR, printk("DISC")) 1285 if (cmd == NULL) { 1286 printk(" - Already disconnected! "); 1287 hostdata->state = S_UNCONNECTED; 1288 } 1289 switch (hostdata->state) { 1290 case S_PRE_CMP_DISC: 1291 hostdata->connected = NULL; 1292 hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); 1293 hostdata->state = S_UNCONNECTED; 1294 DB(DB_INTR, printk(":%d", cmd->SCp.Status)); 1295 if (cmd->cmnd[0] == REQUEST_SENSE 1296 && cmd->SCp.Status != SAM_STAT_GOOD) > 1297 set_host_byte(cmd->result, DID_ERROR); 1298 else 1299 cmd->result = 1300 cmd->SCp.Status | (cmd->SCp.Message << 8); 1301 cmd->scsi_done(cmd); 1302 break; 1303 case S_PRE_TMP_DISC: 1304 case S_RUNNING_LEVEL2: 1305 cmd->host_scribble = (uchar *) hostdata->disconnected_Q; 1306 hostdata->disconnected_Q = cmd; 1307 hostdata->connected = NULL; 1308 hostdata->state = S_UNCONNECTED; 1309 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation