Re: [PATCH 1/8] mpt3sas: Sync time stamp periodically between Driver and FW

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Suganath,

I love your patch! Perhaps something to improve:

[auto build test WARNING on scsi/for-next]
[also build test WARNING on mkp-scsi/for-next v5.10-rc5 next-20201123]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Suganath-Prabu-S/mpt3sas-Features-to-enhance-driver-debugging/20201124-115842
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
config: i386-randconfig-s001-20201124 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-151-g540c2c4b-dirty
        # https://github.com/0day-ci/linux/commit/25de902f6dde291c7e0266b943d68ff8ed4d683b
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Suganath-Prabu-S/mpt3sas-Features-to-enhance-driver-debugging/20201124-115842
        git checkout 25de902f6dde291c7e0266b943d68ff8ed4d683b
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


"sparse warnings: (new ones prefixed by >>)"
>> drivers/scsi/mpt3sas/mpt3sas_base.c:633:19: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned long long [usertype] TimeStamp @@     got restricted __le64 [usertype] @@
>> drivers/scsi/mpt3sas/mpt3sas_base.c:633:19: sparse:     expected unsigned long long [usertype] TimeStamp
   drivers/scsi/mpt3sas/mpt3sas_base.c:633:19: sparse:     got restricted __le64 [usertype]
>> drivers/scsi/mpt3sas/mpt3sas_base.c:634:32: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] Reserved7 @@     got unsigned int [usertype] @@
>> drivers/scsi/mpt3sas/mpt3sas_base.c:634:32: sparse:     expected restricted __le32 [usertype] Reserved7
   drivers/scsi/mpt3sas/mpt3sas_base.c:634:32: sparse:     got unsigned int [usertype]
>> drivers/scsi/mpt3sas/mpt3sas_base.c:635:40: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] IOCParameterValue @@     got unsigned int [usertype] @@
>> drivers/scsi/mpt3sas/mpt3sas_base.c:635:40: sparse:     expected restricted __le32 [usertype] IOCParameterValue
   drivers/scsi/mpt3sas/mpt3sas_base.c:635:40: sparse:     got unsigned int [usertype]
   drivers/scsi/mpt3sas/mpt3sas_base.c:1704:64: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got unsigned long long [usertype] * @@
   drivers/scsi/mpt3sas/mpt3sas_base.c:1704:64: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/scsi/mpt3sas/mpt3sas_base.c:1704:64: sparse:     got unsigned long long [usertype] *
   drivers/scsi/mpt3sas/mpt3sas_base.c:1758:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got unsigned long long [usertype] * @@
   drivers/scsi/mpt3sas/mpt3sas_base.c:1758:52: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/scsi/mpt3sas/mpt3sas_base.c:1758:52: sparse:     got unsigned long long [usertype] *
   drivers/scsi/mpt3sas/mpt3sas_base.c:4105:16: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int val @@     got restricted __le32 [usertype] @@
   drivers/scsi/mpt3sas/mpt3sas_base.c:4105:16: sparse:     expected unsigned int val
   drivers/scsi/mpt3sas/mpt3sas_base.c:4105:16: sparse:     got restricted __le32 [usertype]
   drivers/scsi/mpt3sas/mpt3sas_base.c:4127:16: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int val @@     got restricted __le32 [usertype] @@
   drivers/scsi/mpt3sas/mpt3sas_base.c:4127:16: sparse:     expected unsigned int val
   drivers/scsi/mpt3sas/mpt3sas_base.c:4127:16: sparse:     got restricted __le32 [usertype]
   drivers/scsi/mpt3sas/mpt3sas_base.c:4150:16: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int val @@     got restricted __le32 [usertype] @@
   drivers/scsi/mpt3sas/mpt3sas_base.c:4150:16: sparse:     expected unsigned int val
   drivers/scsi/mpt3sas/mpt3sas_base.c:4150:16: sparse:     got restricted __le32 [usertype]
   drivers/scsi/mpt3sas/mpt3sas_base.c:4171:16: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int val @@     got restricted __le32 [usertype] @@
   drivers/scsi/mpt3sas/mpt3sas_base.c:4171:16: sparse:     expected unsigned int val
   drivers/scsi/mpt3sas/mpt3sas_base.c:4171:16: sparse:     got restricted __le32 [usertype]
   drivers/scsi/mpt3sas/mpt3sas_base.c:6035:24: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int val @@     got restricted __le32 [usertype] @@
   drivers/scsi/mpt3sas/mpt3sas_base.c:6035:24: sparse:     expected unsigned int val
   drivers/scsi/mpt3sas/mpt3sas_base.c:6035:24: sparse:     got restricted __le32 [usertype]
   drivers/scsi/mpt3sas/mpt3sas_base.c:6054:20: sparse: sparse: cast to restricted __le16
   drivers/scsi/mpt3sas/mpt3sas_base.c:6062:20: sparse: sparse: cast to restricted __le16
   drivers/scsi/mpt3sas/mpt3sas_base.c:6075:36: sparse: sparse: cast to restricted __le16
   drivers/scsi/mpt3sas/mpt3sas_base.c:7213:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got unsigned long long [usertype] * @@
   drivers/scsi/mpt3sas/mpt3sas_base.c:7213:55: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/scsi/mpt3sas/mpt3sas_base.c:7213:55: sparse:     got unsigned long long [usertype] *

vim +633 drivers/scsi/mpt3sas/mpt3sas_base.c

   598	
   599	/**
   600	 * _base_sync_drv_fw_timestamp - Sync Drive-Fw TimeStamp.
   601	 * @ioc: Per Adapter Object
   602	 *
   603	 * Return nothing.
   604	 */
   605	static void _base_sync_drv_fw_timestamp(struct MPT3SAS_ADAPTER *ioc)
   606	{
   607		Mpi26IoUnitControlRequest_t *mpi_request;
   608		Mpi26IoUnitControlReply_t *mpi_reply;
   609		u16 smid;
   610		ktime_t current_time;
   611		u64 TimeStamp = 0;
   612		u8 issue_reset = 0;
   613	
   614		mutex_lock(&ioc->scsih_cmds.mutex);
   615		if (ioc->scsih_cmds.status != MPT3_CMD_NOT_USED) {
   616			ioc_err(ioc, "scsih_cmd in use %s\n", __func__);
   617			goto out;
   618		}
   619		ioc->scsih_cmds.status = MPT3_CMD_PENDING;
   620		smid = mpt3sas_base_get_smid(ioc, ioc->scsih_cb_idx);
   621		if (!smid) {
   622			ioc_err(ioc, "Failed obtaining a smid %s\n", __func__);
   623			ioc->scsih_cmds.status = MPT3_CMD_NOT_USED;
   624			goto out;
   625		}
   626		mpi_request = mpt3sas_base_get_msg_frame(ioc, smid);
   627		ioc->scsih_cmds.smid = smid;
   628		memset(mpi_request, 0, sizeof(Mpi26IoUnitControlRequest_t));
   629		mpi_request->Function = MPI2_FUNCTION_IO_UNIT_CONTROL;
   630		mpi_request->Operation = MPI26_CTRL_OP_SET_IOC_PARAMETER;
   631		mpi_request->IOCParameter = MPI26_SET_IOC_PARAMETER_SYNC_TIMESTAMP;
   632		current_time = ktime_get_real();
 > 633		TimeStamp = cpu_to_le64(ktime_to_ms(current_time));
 > 634		mpi_request->Reserved7 = (u32) (TimeStamp & 0xFFFFFFFF);
 > 635		mpi_request->IOCParameterValue = (u32) (TimeStamp >> 32);
   636		init_completion(&ioc->scsih_cmds.done);
   637		ioc->put_smid_default(ioc, smid);
   638		dinitprintk(ioc, ioc_info(ioc,
   639		    "Io Unit Control Sync TimeStamp (sending), @time %lld ms\n",
   640		    TimeStamp));
   641		wait_for_completion_timeout(&ioc->scsih_cmds.done,
   642			MPT3SAS_TIMESYNC_TIMEOUT_SECONDS*HZ);
   643		if (!(ioc->scsih_cmds.status & MPT3_CMD_COMPLETE)) {
   644			mpt3sas_check_cmd_timeout(ioc,
   645			    ioc->scsih_cmds.status, mpi_request,
   646			    sizeof(Mpi2SasIoUnitControlRequest_t)/4, issue_reset);
   647			goto issue_host_reset;
   648		}
   649		if (ioc->scsih_cmds.status & MPT3_CMD_REPLY_VALID) {
   650			mpi_reply = ioc->scsih_cmds.reply;
   651			dinitprintk(ioc, ioc_info(ioc,
   652			    "Io Unit Control sync timestamp (complete): ioc_status(0x%04x), loginfo(0x%08x)\n",
   653			    le16_to_cpu(mpi_reply->IOCStatus),
   654			    le32_to_cpu(mpi_reply->IOCLogInfo)));
   655		}
   656	issue_host_reset:
   657		if (issue_reset)
   658			mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER);
   659		ioc->scsih_cmds.status = MPT3_CMD_NOT_USED;
   660	out:
   661		mutex_unlock(&ioc->scsih_cmds.mutex);
   662	}
   663	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux