CC: kbuild-...@lists.01.org
BCC: l...@intel.com
CC: linux-ker...@vger.kernel.org
TO: Sreekanth Reddy <sreekanth.re...@broadcom.com>
CC: "Martin K. Petersen" <martin.peter...@oracle.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   700170bf6b4d773e328fa54ebb70ba444007c702
commit: b64845a7d4039ab9667bafff9d7bb59365f17c0f scsi: mpi3mr: Detect async 
reset that occurred in firmware
date:   5 months ago
:::::: branch date: 13 hours ago
:::::: commit date: 5 months ago
config: microblaze-randconfig-m031-20220529 
(https://download.01.org/0day-ci/archive/20220601/202206012127.c8mqo8d8-...@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

New smatch warnings:
drivers/scsi/mpi3mr/mpi3mr_fw.c:1209 mpi3mr_issue_reset() error: uninitialized 
symbol 'host_diagnostic'.

Old smatch warnings:
drivers/scsi/mpi3mr/mpi3mr_fw.c:1691 mpi3mr_create_op_reply_q() error: we 
previously assumed 'op_reply_q->q_segments' could be null (see line 1662)
drivers/scsi/mpi3mr/mpi3mr_fw.c:1796 mpi3mr_create_op_req_q() error: we 
previously assumed 'op_req_q->q_segments' could be null (see line 1769)

vim +/host_diagnostic +1209 drivers/scsi/mpi3mr/mpi3mr_fw.c

824a156633dfdb0 Kashyap Desai   2021-05-20  1167  
824a156633dfdb0 Kashyap Desai   2021-05-20  1168  /**
824a156633dfdb0 Kashyap Desai   2021-05-20  1169   * mpi3mr_issue_reset - Issue 
reset to the controller
824a156633dfdb0 Kashyap Desai   2021-05-20  1170   * @mrioc: Adapter reference
824a156633dfdb0 Kashyap Desai   2021-05-20  1171   * @reset_type: Reset type
824a156633dfdb0 Kashyap Desai   2021-05-20  1172   * @reset_reason: Reset 
reason code
824a156633dfdb0 Kashyap Desai   2021-05-20  1173   *
f061178e076210a Kashyap Desai   2021-05-20  1174   * Unlock the host diagnostic 
registers and write the specific
f061178e076210a Kashyap Desai   2021-05-20  1175   * reset type to that, wait 
for reset acknowledgment from the
f061178e076210a Kashyap Desai   2021-05-20  1176   * controller, if the reset 
is not successful retry for the
f061178e076210a Kashyap Desai   2021-05-20  1177   * predefined number of times.
824a156633dfdb0 Kashyap Desai   2021-05-20  1178   *
824a156633dfdb0 Kashyap Desai   2021-05-20  1179   * Return: 0 on success, 
non-zero on failure.
824a156633dfdb0 Kashyap Desai   2021-05-20  1180   */
824a156633dfdb0 Kashyap Desai   2021-05-20  1181  static int 
mpi3mr_issue_reset(struct mpi3mr_ioc *mrioc, u16 reset_type,
824a156633dfdb0 Kashyap Desai   2021-05-20  1182        u32 reset_reason)
824a156633dfdb0 Kashyap Desai   2021-05-20  1183  {
f061178e076210a Kashyap Desai   2021-05-20  1184        int retval = -1;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1185        u8 unlock_retry_count = 
0;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1186        u32 host_diagnostic, 
ioc_status, ioc_config;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1187        u32 timeout = 
MPI3MR_RESET_ACK_TIMEOUT * 10;
f061178e076210a Kashyap Desai   2021-05-20  1188  
f061178e076210a Kashyap Desai   2021-05-20  1189        if ((reset_type != 
MPI3_SYSIF_HOST_DIAG_RESET_ACTION_SOFT_RESET) &&
f061178e076210a Kashyap Desai   2021-05-20  1190            (reset_type != 
MPI3_SYSIF_HOST_DIAG_RESET_ACTION_DIAG_FAULT))
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1191                return retval;
f061178e076210a Kashyap Desai   2021-05-20  1192        if 
(mrioc->unrecoverable)
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1193                return retval;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1194        if (reset_reason == 
MPI3MR_RESET_FROM_FIRMWARE) {
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1195                retval = 0;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1196                return retval;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1197        }
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1198  
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1199        ioc_info(mrioc, "%s 
reset due to %s(0x%x)\n",
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1200            
mpi3mr_reset_type_name(reset_type),
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1201            
mpi3mr_reset_rc_name(reset_reason), reset_reason);
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1202  
f061178e076210a Kashyap Desai   2021-05-20  1203        
mpi3mr_clear_reset_history(mrioc);
f061178e076210a Kashyap Desai   2021-05-20  1204        do {
f061178e076210a Kashyap Desai   2021-05-20  1205                ioc_info(mrioc,
f061178e076210a Kashyap Desai   2021-05-20  1206                    "Write 
magic sequence to unlock host diag register (retry=%d)\n",
f061178e076210a Kashyap Desai   2021-05-20  1207                    
++unlock_retry_count);
f061178e076210a Kashyap Desai   2021-05-20  1208                if 
(unlock_retry_count >= MPI3MR_HOSTDIAG_UNLOCK_RETRY_COUNT) {
b64845a7d4039ab Sreekanth Reddy 2021-12-20 @1209                        
ioc_err(mrioc,
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1210                            "%s 
reset failed due to unlock failure, host_diagnostic(0x%08x)\n",
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1211                            
mpi3mr_reset_type_name(reset_type),
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1212                            
host_diagnostic);
f061178e076210a Kashyap Desai   2021-05-20  1213                        
mrioc->unrecoverable = 1;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1214                        return 
retval;
f061178e076210a Kashyap Desai   2021-05-20  1215                }
f061178e076210a Kashyap Desai   2021-05-20  1216  
f061178e076210a Kashyap Desai   2021-05-20  1217                
writel(MPI3_SYSIF_WRITE_SEQUENCE_KEY_VALUE_FLUSH,
f061178e076210a Kashyap Desai   2021-05-20  1218                    
&mrioc->sysif_regs->write_sequence);
f061178e076210a Kashyap Desai   2021-05-20  1219                
writel(MPI3_SYSIF_WRITE_SEQUENCE_KEY_VALUE_1ST,
f061178e076210a Kashyap Desai   2021-05-20  1220                    
&mrioc->sysif_regs->write_sequence);
f061178e076210a Kashyap Desai   2021-05-20  1221                
writel(MPI3_SYSIF_WRITE_SEQUENCE_KEY_VALUE_2ND,
f061178e076210a Kashyap Desai   2021-05-20  1222                    
&mrioc->sysif_regs->write_sequence);
f061178e076210a Kashyap Desai   2021-05-20  1223                
writel(MPI3_SYSIF_WRITE_SEQUENCE_KEY_VALUE_3RD,
f061178e076210a Kashyap Desai   2021-05-20  1224                    
&mrioc->sysif_regs->write_sequence);
f061178e076210a Kashyap Desai   2021-05-20  1225                
writel(MPI3_SYSIF_WRITE_SEQUENCE_KEY_VALUE_4TH,
f061178e076210a Kashyap Desai   2021-05-20  1226                    
&mrioc->sysif_regs->write_sequence);
f061178e076210a Kashyap Desai   2021-05-20  1227                
writel(MPI3_SYSIF_WRITE_SEQUENCE_KEY_VALUE_5TH,
f061178e076210a Kashyap Desai   2021-05-20  1228                    
&mrioc->sysif_regs->write_sequence);
f061178e076210a Kashyap Desai   2021-05-20  1229                
writel(MPI3_SYSIF_WRITE_SEQUENCE_KEY_VALUE_6TH,
f061178e076210a Kashyap Desai   2021-05-20  1230                    
&mrioc->sysif_regs->write_sequence);
f061178e076210a Kashyap Desai   2021-05-20  1231                
usleep_range(1000, 1100);
f061178e076210a Kashyap Desai   2021-05-20  1232                host_diagnostic 
= readl(&mrioc->sysif_regs->host_diagnostic);
f061178e076210a Kashyap Desai   2021-05-20  1233                ioc_info(mrioc,
f061178e076210a Kashyap Desai   2021-05-20  1234                    "wrote 
magic sequence: retry_count(%d), host_diagnostic(0x%08x)\n",
f061178e076210a Kashyap Desai   2021-05-20  1235                    
unlock_retry_count, host_diagnostic);
f061178e076210a Kashyap Desai   2021-05-20  1236        } while 
(!(host_diagnostic & MPI3_SYSIF_HOST_DIAG_DIAG_WRITE_ENABLE));
f061178e076210a Kashyap Desai   2021-05-20  1237  
f061178e076210a Kashyap Desai   2021-05-20  1238        writel(reset_reason, 
&mrioc->sysif_regs->scratchpad[0]);
f061178e076210a Kashyap Desai   2021-05-20  1239        writel(host_diagnostic 
| reset_type,
f061178e076210a Kashyap Desai   2021-05-20  1240            
&mrioc->sysif_regs->host_diagnostic);
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1241        switch (reset_type) {
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1242        case 
MPI3_SYSIF_HOST_DIAG_RESET_ACTION_SOFT_RESET:
f061178e076210a Kashyap Desai   2021-05-20  1243                do {
f061178e076210a Kashyap Desai   2021-05-20  1244                        
ioc_status = readl(&mrioc->sysif_regs->ioc_status);
f061178e076210a Kashyap Desai   2021-05-20  1245                        
ioc_config =
f061178e076210a Kashyap Desai   2021-05-20  1246                            
readl(&mrioc->sysif_regs->ioc_configuration);
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1247                        if 
((ioc_status & MPI3_SYSIF_IOC_STATUS_RESET_HISTORY)
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1248                            && 
mpi3mr_soft_reset_success(ioc_status, ioc_config)
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1249                            ) {
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1250                                
mpi3mr_clear_reset_history(mrioc);
f061178e076210a Kashyap Desai   2021-05-20  1251                                
retval = 0;
f061178e076210a Kashyap Desai   2021-05-20  1252                                
break;
f061178e076210a Kashyap Desai   2021-05-20  1253                        }
f061178e076210a Kashyap Desai   2021-05-20  1254                        
msleep(100);
f061178e076210a Kashyap Desai   2021-05-20  1255                } while 
(--timeout);
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1256                
mpi3mr_print_fault_info(mrioc);
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1257                break;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1258        case 
MPI3_SYSIF_HOST_DIAG_RESET_ACTION_DIAG_FAULT:
f061178e076210a Kashyap Desai   2021-05-20  1259                do {
f061178e076210a Kashyap Desai   2021-05-20  1260                        
ioc_status = readl(&mrioc->sysif_regs->ioc_status);
f061178e076210a Kashyap Desai   2021-05-20  1261                        if 
(mpi3mr_diagfault_success(mrioc, ioc_status)) {
f061178e076210a Kashyap Desai   2021-05-20  1262                                
retval = 0;
f061178e076210a Kashyap Desai   2021-05-20  1263                                
break;
f061178e076210a Kashyap Desai   2021-05-20  1264                        }
f061178e076210a Kashyap Desai   2021-05-20  1265                        
msleep(100);
f061178e076210a Kashyap Desai   2021-05-20  1266                } while 
(--timeout);
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1267                break;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1268        default:
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1269                break;
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1270        }
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1271  
f061178e076210a Kashyap Desai   2021-05-20  1272        
writel(MPI3_SYSIF_WRITE_SEQUENCE_KEY_VALUE_2ND,
f061178e076210a Kashyap Desai   2021-05-20  1273            
&mrioc->sysif_regs->write_sequence);
f061178e076210a Kashyap Desai   2021-05-20  1274  
f061178e076210a Kashyap Desai   2021-05-20  1275        ioc_config = 
readl(&mrioc->sysif_regs->ioc_configuration);
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1276        ioc_status = 
readl(&mrioc->sysif_regs->ioc_status);
f061178e076210a Kashyap Desai   2021-05-20  1277        ioc_info(mrioc,
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1278            
"ioc_status/ioc_onfig after %s reset is (0x%x)/(0x%x)\n",
f061178e076210a Kashyap Desai   2021-05-20  1279            
(!retval)?"successful":"failed", ioc_status,
f061178e076210a Kashyap Desai   2021-05-20  1280            ioc_config);
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1281        if (retval)
b64845a7d4039ab Sreekanth Reddy 2021-12-20  1282                
mrioc->unrecoverable = 1;
f061178e076210a Kashyap Desai   2021-05-20  1283        return retval;
824a156633dfdb0 Kashyap Desai   2021-05-20  1284  }
824a156633dfdb0 Kashyap Desai   2021-05-20  1285  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to