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 <l...@intel.com>

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

Attachment: .config.gz
Description: application/gzip

Reply via email to