All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Kashyap Desai <kashyap.desai@broadcom.com>, linux-scsi@vger.kernel.org
Cc: kbuild-all@lists.01.org, jejb@linux.ibm.com,
	martin.petersen@oracle.com, steve.hagan@broadcom.com,
	peter.rivera@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com,
	Kashyap Desai <kashyap.desai@broadcom.com>,
	sathya.prakash@broadcom.com
Subject: Re: [PATCH 06/24] mpi3mr: add support of event handling part-1
Date: Sun, 27 Dec 2020 21:14:49 +0800	[thread overview]
Message-ID: <202012272151.xYcx9E4D-lkp@intel.com> (raw)
In-Reply-To: <20201222101156.98308-7-kashyap.desai@broadcom.com>

[-- Attachment #1: Type: text/plain, Size: 9632 bytes --]

Hi Kashyap,

I love your patch! Perhaps something to improve:

[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on scsi/for-next v5.10 next-20201223]
[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/Kashyap-Desai/Introducing-mpi3mr-driver/20201222-181732
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
config: powerpc-allyesconfig (attached as .config)
compiler: powerpc64-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://github.com/0day-ci/linux/commit/f353c97f9e813b38c4546df7698017174df5a559
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Kashyap-Desai/Introducing-mpi3mr-driver/20201222-181732
        git checkout f353c97f9e813b38c4546df7698017174df5a559
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc 

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

All warnings (new ones prefixed by >>):

   drivers/scsi/mpi3mr/mpi3mr_os.c:281:6: warning: no previous prototype for 'mpi3mr_cleanup_fwevt_list' [-Wmissing-prototypes]
     281 | void mpi3mr_cleanup_fwevt_list(struct mpi3mr_ioc *mrioc)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/mpi3mr/mpi3mr_os.c:412:24: warning: no previous prototype for 'mpi3mr_get_tgtdev_by_handle' [-Wmissing-prototypes]
     412 | struct mpi3mr_tgt_dev *mpi3mr_get_tgtdev_by_handle(
         |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/mpi3mr/mpi3mr_os.c:460:24: warning: no previous prototype for 'mpi3mr_get_tgtdev_by_perst_id' [-Wmissing-prototypes]
     460 | struct mpi3mr_tgt_dev *mpi3mr_get_tgtdev_by_perst_id(
         |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/mpi3mr/mpi3mr_os.c:580:6: warning: no previous prototype for 'mpi3mr_rfresh_tgtdevs' [-Wmissing-prototypes]
     580 | void mpi3mr_rfresh_tgtdevs(struct mpi3mr_ioc *mrioc)
         |      ^~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/mpi3mr/mpi3mr_os.c: In function 'mpi3mr_devstatuschg_evt_bh':
>> drivers/scsi/mpi3mr/mpi3mr_os.c:689:32: warning: variable 'scsi_tgt_priv_data' set but not used [-Wunused-but-set-variable]
     689 |  struct mpi3mr_stgt_priv_data *scsi_tgt_priv_data = NULL;
         |                                ^~~~~~~~~~~~~~~~~~
   drivers/scsi/mpi3mr/mpi3mr_os.c: At top level:
   drivers/scsi/mpi3mr/mpi3mr_os.c:952:6: warning: no previous prototype for 'mpi3mr_flush_delayed_rmhs_list' [-Wmissing-prototypes]
     952 | void mpi3mr_flush_delayed_rmhs_list(struct mpi3mr_ioc *mrioc)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/mpi3mr_get_tgtdev_by_handle +412 drivers/scsi/mpi3mr/mpi3mr_os.c

   271	
   272	/**
   273	 * mpi3mr_cleanup_fwevt_list - Cleanup firmware event list
   274	 * @mrioc: Adapter instance reference
   275	 *
   276	 * Flush all pending firmware events from the firmware event
   277	 * list.
   278	 *
   279	 * Return: Nothing.
   280	 */
 > 281	void mpi3mr_cleanup_fwevt_list(struct mpi3mr_ioc *mrioc)
   282	{
   283		struct mpi3mr_fwevt *fwevt = NULL;
   284	
   285		if ((list_empty(&mrioc->fwevt_list) && !mrioc->current_event) ||
   286		    !mrioc->fwevt_worker_thread || in_interrupt())
   287			return;
   288	
   289		while ((fwevt = mpi3mr_dequeue_fwevt(mrioc)) ||
   290		    (fwevt = mrioc->current_event)) {
   291			/*
   292			 * Wait on the fwevt to complete. If this returns 1, then
   293			 * the event was never executed, and we need a put for the
   294			 * reference the work had on the fwevt.
   295			 *
   296			 * If it did execute, we wait for it to finish, and the put will
   297			 * happen from mpi3mr_process_fwevt()
   298			 */
   299			if (cancel_work_sync(&fwevt->work)) {
   300				/*
   301				 * Put fwevt reference count after
   302				 * dequeuing it from worker queue
   303				 */
   304				mpi3mr_fwevt_put(fwevt);
   305				/*
   306				 * Put fwevt reference count to neutralize
   307				 * kref_init increment
   308				 */
   309				mpi3mr_fwevt_put(fwevt);
   310			}
   311		}
   312	}
   313	
   314	/**
   315	 * mpi3mr_alloc_tgtdev - target device allocator
   316	 *
   317	 * Allocate target device instance and initialize the reference
   318	 * count
   319	 *
   320	 * Return: target device instance.
   321	 */
   322	static struct mpi3mr_tgt_dev *mpi3mr_alloc_tgtdev(void)
   323	{
   324		struct mpi3mr_tgt_dev *tgtdev;
   325	
   326		tgtdev = kzalloc(sizeof(*tgtdev), GFP_ATOMIC);
   327		if (!tgtdev)
   328			return NULL;
   329		kref_init(&tgtdev->ref_count);
   330		return tgtdev;
   331	}
   332	
   333	/**
   334	 * mpi3mr_tgtdev_add_to_list -Add tgtdevice to the list
   335	 * @mrioc: Adapter instance reference
   336	 * @tgtdev: Target device
   337	 *
   338	 * Add the target device to the target device list
   339	 *
   340	 * Return: Nothing.
   341	 */
   342	static void mpi3mr_tgtdev_add_to_list(struct mpi3mr_ioc *mrioc,
   343		struct mpi3mr_tgt_dev *tgtdev)
   344	{
   345		unsigned long flags;
   346	
   347		spin_lock_irqsave(&mrioc->tgtdev_lock, flags);
   348		mpi3mr_tgtdev_get(tgtdev);
   349		INIT_LIST_HEAD(&tgtdev->list);
   350		list_add_tail(&tgtdev->list, &mrioc->tgtdev_list);
   351		spin_unlock_irqrestore(&mrioc->tgtdev_lock, flags);
   352	}
   353	
   354	/**
   355	 * mpi3mr_tgtdev_del_from_list -Delete tgtdevice from the list
   356	 * @mrioc: Adapter instance reference
   357	 * @tgtdev: Target device
   358	 *
   359	 * Remove the target device from the target device list
   360	 *
   361	 * Return: Nothing.
   362	 */
   363	static void mpi3mr_tgtdev_del_from_list(struct mpi3mr_ioc *mrioc,
   364		struct mpi3mr_tgt_dev *tgtdev)
   365	{
   366		unsigned long flags;
   367	
   368		spin_lock_irqsave(&mrioc->tgtdev_lock, flags);
   369		if (!list_empty(&tgtdev->list)) {
   370			list_del_init(&tgtdev->list);
   371			mpi3mr_tgtdev_put(tgtdev);
   372		}
   373		spin_unlock_irqrestore(&mrioc->tgtdev_lock, flags);
   374	}
   375	
   376	/**
   377	 * __mpi3mr_get_tgtdev_by_handle -Get tgtdev from device handle
   378	 * @mrioc: Adapter instance reference
   379	 * @handle: Device handle
   380	 *
   381	 * Accessor to retrieve target device from the device handle.
   382	 * Non Lock version
   383	 *
   384	 * Return: Target device reference.
   385	 */
   386	static struct mpi3mr_tgt_dev  *__mpi3mr_get_tgtdev_by_handle(
   387		struct mpi3mr_ioc *mrioc, u16 handle)
   388	{
   389		struct mpi3mr_tgt_dev *tgtdev;
   390	
   391		assert_spin_locked(&mrioc->tgtdev_lock);
   392		list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list)
   393			if (tgtdev->dev_handle == handle)
   394				goto found_tgtdev;
   395		return NULL;
   396	
   397	found_tgtdev:
   398		mpi3mr_tgtdev_get(tgtdev);
   399		return tgtdev;
   400	}
   401	
   402	/**
   403	 * mpi3mr_get_tgtdev_by_handle -Get tgtdev from device handle
   404	 * @mrioc: Adapter instance reference
   405	 * @handle: Device handle
   406	 *
   407	 * Accessor to retrieve target device from the device handle.
   408	 * Lock version
   409	 *
   410	 * Return: Target device reference.
   411	 */
 > 412	struct mpi3mr_tgt_dev *mpi3mr_get_tgtdev_by_handle(
   413		struct mpi3mr_ioc *mrioc, u16 handle)
   414	{
   415		struct mpi3mr_tgt_dev *tgtdev;
   416		unsigned long flags;
   417	
   418		spin_lock_irqsave(&mrioc->tgtdev_lock, flags);
   419		tgtdev = __mpi3mr_get_tgtdev_by_handle(mrioc, handle);
   420		spin_unlock_irqrestore(&mrioc->tgtdev_lock, flags);
   421		return tgtdev;
   422	}
   423	
   424	/**
   425	 * __mpi3mr_get_tgtdev_by_perst_id -Get tgtdev from persist ID
   426	 * @mrioc: Adapter instance reference
   427	 * @persist_id: Persistent ID
   428	 *
   429	 * Accessor to retrieve target device from the Persistent ID.
   430	 * Non Lock version
   431	 *
   432	 * Return: Target device reference.
   433	 */
   434	static struct mpi3mr_tgt_dev  *__mpi3mr_get_tgtdev_by_perst_id(
   435		struct mpi3mr_ioc *mrioc, u16 persist_id)
   436	{
   437		struct mpi3mr_tgt_dev *tgtdev;
   438	
   439		assert_spin_locked(&mrioc->tgtdev_lock);
   440		list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list)
   441			if (tgtdev->perst_id == persist_id)
   442				goto found_tgtdev;
   443		return NULL;
   444	
   445	found_tgtdev:
   446		mpi3mr_tgtdev_get(tgtdev);
   447		return tgtdev;
   448	}
   449	
   450	/**
   451	 * mpi3mr_get_tgtdev_by_perst_id -Get tgtdev from persistent ID
   452	 * @mrioc: Adapter instance reference
   453	 * @persist_id: Persistent ID
   454	 *
   455	 * Accessor to retrieve target device from the Persistent ID.
   456	 * Lock version
   457	 *
   458	 * Return: Target device reference.
   459	 */
 > 460	struct mpi3mr_tgt_dev *mpi3mr_get_tgtdev_by_perst_id(
   461		struct mpi3mr_ioc *mrioc, u16 persist_id)
   462	{
   463		struct mpi3mr_tgt_dev *tgtdev;
   464		unsigned long flags;
   465	
   466		spin_lock_irqsave(&mrioc->tgtdev_lock, flags);
   467		tgtdev = __mpi3mr_get_tgtdev_by_perst_id(mrioc, persist_id);
   468		spin_unlock_irqrestore(&mrioc->tgtdev_lock, flags);
   469		return tgtdev;
   470	}
   471	

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 71613 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 06/24] mpi3mr: add support of event handling part-1
Date: Sun, 27 Dec 2020 21:14:49 +0800	[thread overview]
Message-ID: <202012272151.xYcx9E4D-lkp@intel.com> (raw)
In-Reply-To: <20201222101156.98308-7-kashyap.desai@broadcom.com>

[-- Attachment #1: Type: text/plain, Size: 9892 bytes --]

Hi Kashyap,

I love your patch! Perhaps something to improve:

[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on scsi/for-next v5.10 next-20201223]
[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/Kashyap-Desai/Introducing-mpi3mr-driver/20201222-181732
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
config: powerpc-allyesconfig (attached as .config)
compiler: powerpc64-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://github.com/0day-ci/linux/commit/f353c97f9e813b38c4546df7698017174df5a559
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Kashyap-Desai/Introducing-mpi3mr-driver/20201222-181732
        git checkout f353c97f9e813b38c4546df7698017174df5a559
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc 

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

All warnings (new ones prefixed by >>):

   drivers/scsi/mpi3mr/mpi3mr_os.c:281:6: warning: no previous prototype for 'mpi3mr_cleanup_fwevt_list' [-Wmissing-prototypes]
     281 | void mpi3mr_cleanup_fwevt_list(struct mpi3mr_ioc *mrioc)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/mpi3mr/mpi3mr_os.c:412:24: warning: no previous prototype for 'mpi3mr_get_tgtdev_by_handle' [-Wmissing-prototypes]
     412 | struct mpi3mr_tgt_dev *mpi3mr_get_tgtdev_by_handle(
         |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/mpi3mr/mpi3mr_os.c:460:24: warning: no previous prototype for 'mpi3mr_get_tgtdev_by_perst_id' [-Wmissing-prototypes]
     460 | struct mpi3mr_tgt_dev *mpi3mr_get_tgtdev_by_perst_id(
         |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/mpi3mr/mpi3mr_os.c:580:6: warning: no previous prototype for 'mpi3mr_rfresh_tgtdevs' [-Wmissing-prototypes]
     580 | void mpi3mr_rfresh_tgtdevs(struct mpi3mr_ioc *mrioc)
         |      ^~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/mpi3mr/mpi3mr_os.c: In function 'mpi3mr_devstatuschg_evt_bh':
>> drivers/scsi/mpi3mr/mpi3mr_os.c:689:32: warning: variable 'scsi_tgt_priv_data' set but not used [-Wunused-but-set-variable]
     689 |  struct mpi3mr_stgt_priv_data *scsi_tgt_priv_data = NULL;
         |                                ^~~~~~~~~~~~~~~~~~
   drivers/scsi/mpi3mr/mpi3mr_os.c: At top level:
   drivers/scsi/mpi3mr/mpi3mr_os.c:952:6: warning: no previous prototype for 'mpi3mr_flush_delayed_rmhs_list' [-Wmissing-prototypes]
     952 | void mpi3mr_flush_delayed_rmhs_list(struct mpi3mr_ioc *mrioc)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/mpi3mr_get_tgtdev_by_handle +412 drivers/scsi/mpi3mr/mpi3mr_os.c

   271	
   272	/**
   273	 * mpi3mr_cleanup_fwevt_list - Cleanup firmware event list
   274	 * @mrioc: Adapter instance reference
   275	 *
   276	 * Flush all pending firmware events from the firmware event
   277	 * list.
   278	 *
   279	 * Return: Nothing.
   280	 */
 > 281	void mpi3mr_cleanup_fwevt_list(struct mpi3mr_ioc *mrioc)
   282	{
   283		struct mpi3mr_fwevt *fwevt = NULL;
   284	
   285		if ((list_empty(&mrioc->fwevt_list) && !mrioc->current_event) ||
   286		    !mrioc->fwevt_worker_thread || in_interrupt())
   287			return;
   288	
   289		while ((fwevt = mpi3mr_dequeue_fwevt(mrioc)) ||
   290		    (fwevt = mrioc->current_event)) {
   291			/*
   292			 * Wait on the fwevt to complete. If this returns 1, then
   293			 * the event was never executed, and we need a put for the
   294			 * reference the work had on the fwevt.
   295			 *
   296			 * If it did execute, we wait for it to finish, and the put will
   297			 * happen from mpi3mr_process_fwevt()
   298			 */
   299			if (cancel_work_sync(&fwevt->work)) {
   300				/*
   301				 * Put fwevt reference count after
   302				 * dequeuing it from worker queue
   303				 */
   304				mpi3mr_fwevt_put(fwevt);
   305				/*
   306				 * Put fwevt reference count to neutralize
   307				 * kref_init increment
   308				 */
   309				mpi3mr_fwevt_put(fwevt);
   310			}
   311		}
   312	}
   313	
   314	/**
   315	 * mpi3mr_alloc_tgtdev - target device allocator
   316	 *
   317	 * Allocate target device instance and initialize the reference
   318	 * count
   319	 *
   320	 * Return: target device instance.
   321	 */
   322	static struct mpi3mr_tgt_dev *mpi3mr_alloc_tgtdev(void)
   323	{
   324		struct mpi3mr_tgt_dev *tgtdev;
   325	
   326		tgtdev = kzalloc(sizeof(*tgtdev), GFP_ATOMIC);
   327		if (!tgtdev)
   328			return NULL;
   329		kref_init(&tgtdev->ref_count);
   330		return tgtdev;
   331	}
   332	
   333	/**
   334	 * mpi3mr_tgtdev_add_to_list -Add tgtdevice to the list
   335	 * @mrioc: Adapter instance reference
   336	 * @tgtdev: Target device
   337	 *
   338	 * Add the target device to the target device list
   339	 *
   340	 * Return: Nothing.
   341	 */
   342	static void mpi3mr_tgtdev_add_to_list(struct mpi3mr_ioc *mrioc,
   343		struct mpi3mr_tgt_dev *tgtdev)
   344	{
   345		unsigned long flags;
   346	
   347		spin_lock_irqsave(&mrioc->tgtdev_lock, flags);
   348		mpi3mr_tgtdev_get(tgtdev);
   349		INIT_LIST_HEAD(&tgtdev->list);
   350		list_add_tail(&tgtdev->list, &mrioc->tgtdev_list);
   351		spin_unlock_irqrestore(&mrioc->tgtdev_lock, flags);
   352	}
   353	
   354	/**
   355	 * mpi3mr_tgtdev_del_from_list -Delete tgtdevice from the list
   356	 * @mrioc: Adapter instance reference
   357	 * @tgtdev: Target device
   358	 *
   359	 * Remove the target device from the target device list
   360	 *
   361	 * Return: Nothing.
   362	 */
   363	static void mpi3mr_tgtdev_del_from_list(struct mpi3mr_ioc *mrioc,
   364		struct mpi3mr_tgt_dev *tgtdev)
   365	{
   366		unsigned long flags;
   367	
   368		spin_lock_irqsave(&mrioc->tgtdev_lock, flags);
   369		if (!list_empty(&tgtdev->list)) {
   370			list_del_init(&tgtdev->list);
   371			mpi3mr_tgtdev_put(tgtdev);
   372		}
   373		spin_unlock_irqrestore(&mrioc->tgtdev_lock, flags);
   374	}
   375	
   376	/**
   377	 * __mpi3mr_get_tgtdev_by_handle -Get tgtdev from device handle
   378	 * @mrioc: Adapter instance reference
   379	 * @handle: Device handle
   380	 *
   381	 * Accessor to retrieve target device from the device handle.
   382	 * Non Lock version
   383	 *
   384	 * Return: Target device reference.
   385	 */
   386	static struct mpi3mr_tgt_dev  *__mpi3mr_get_tgtdev_by_handle(
   387		struct mpi3mr_ioc *mrioc, u16 handle)
   388	{
   389		struct mpi3mr_tgt_dev *tgtdev;
   390	
   391		assert_spin_locked(&mrioc->tgtdev_lock);
   392		list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list)
   393			if (tgtdev->dev_handle == handle)
   394				goto found_tgtdev;
   395		return NULL;
   396	
   397	found_tgtdev:
   398		mpi3mr_tgtdev_get(tgtdev);
   399		return tgtdev;
   400	}
   401	
   402	/**
   403	 * mpi3mr_get_tgtdev_by_handle -Get tgtdev from device handle
   404	 * @mrioc: Adapter instance reference
   405	 * @handle: Device handle
   406	 *
   407	 * Accessor to retrieve target device from the device handle.
   408	 * Lock version
   409	 *
   410	 * Return: Target device reference.
   411	 */
 > 412	struct mpi3mr_tgt_dev *mpi3mr_get_tgtdev_by_handle(
   413		struct mpi3mr_ioc *mrioc, u16 handle)
   414	{
   415		struct mpi3mr_tgt_dev *tgtdev;
   416		unsigned long flags;
   417	
   418		spin_lock_irqsave(&mrioc->tgtdev_lock, flags);
   419		tgtdev = __mpi3mr_get_tgtdev_by_handle(mrioc, handle);
   420		spin_unlock_irqrestore(&mrioc->tgtdev_lock, flags);
   421		return tgtdev;
   422	}
   423	
   424	/**
   425	 * __mpi3mr_get_tgtdev_by_perst_id -Get tgtdev from persist ID
   426	 * @mrioc: Adapter instance reference
   427	 * @persist_id: Persistent ID
   428	 *
   429	 * Accessor to retrieve target device from the Persistent ID.
   430	 * Non Lock version
   431	 *
   432	 * Return: Target device reference.
   433	 */
   434	static struct mpi3mr_tgt_dev  *__mpi3mr_get_tgtdev_by_perst_id(
   435		struct mpi3mr_ioc *mrioc, u16 persist_id)
   436	{
   437		struct mpi3mr_tgt_dev *tgtdev;
   438	
   439		assert_spin_locked(&mrioc->tgtdev_lock);
   440		list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list)
   441			if (tgtdev->perst_id == persist_id)
   442				goto found_tgtdev;
   443		return NULL;
   444	
   445	found_tgtdev:
   446		mpi3mr_tgtdev_get(tgtdev);
   447		return tgtdev;
   448	}
   449	
   450	/**
   451	 * mpi3mr_get_tgtdev_by_perst_id -Get tgtdev from persistent ID
   452	 * @mrioc: Adapter instance reference
   453	 * @persist_id: Persistent ID
   454	 *
   455	 * Accessor to retrieve target device from the Persistent ID.
   456	 * Lock version
   457	 *
   458	 * Return: Target device reference.
   459	 */
 > 460	struct mpi3mr_tgt_dev *mpi3mr_get_tgtdev_by_perst_id(
   461		struct mpi3mr_ioc *mrioc, u16 persist_id)
   462	{
   463		struct mpi3mr_tgt_dev *tgtdev;
   464		unsigned long flags;
   465	
   466		spin_lock_irqsave(&mrioc->tgtdev_lock, flags);
   467		tgtdev = __mpi3mr_get_tgtdev_by_perst_id(mrioc, persist_id);
   468		spin_unlock_irqrestore(&mrioc->tgtdev_lock, flags);
   469		return tgtdev;
   470	}
   471	

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 71613 bytes --]

  reply	other threads:[~2020-12-27 13:16 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-22 10:11 [PATCH 00/24] Introducing mpi3mr driver Kashyap Desai
2020-12-22 10:11 ` [PATCH 01/24] mpi3mr: add mpi30 Rev-R headers and Kconfig Kashyap Desai
2020-12-22 18:15   ` Bart Van Assche
2020-12-23 13:33     ` Kashyap Desai
2021-02-23 12:30   ` Hannes Reinecke
2021-03-02 18:11     ` Kashyap Desai
2020-12-22 10:11 ` [PATCH 02/24] mpi3mr: base driver code Kashyap Desai
2020-12-27 14:14   ` kernel test robot
2020-12-27 14:14     ` kernel test robot
2021-02-23 12:55   ` Hannes Reinecke
2021-03-02 18:36     ` Kashyap Desai
2020-12-22 10:11 ` [PATCH 03/24] mpi3mr: create operational request and reply queue pair Kashyap Desai
2020-12-22 18:18   ` Bart Van Assche
2020-12-23 13:16     ` Kashyap Desai
2021-02-28 13:04   ` Hannes Reinecke
2021-03-02 19:05     ` Kashyap Desai
2020-12-22 10:11 ` [PATCH 04/24] mpi3mr: add support of queue command processing Kashyap Desai
2021-02-22 15:23   ` Tomas Henzl
2021-02-25 13:24     ` Kashyap Desai
2021-02-25 14:11       ` Tomas Henzl
2021-02-28 13:22   ` Hannes Reinecke
2021-03-08 18:25     ` Kashyap Desai
2020-12-22 10:11 ` [PATCH 05/24] mpi3mr: add support of internal watchdog thread Kashyap Desai
2021-02-28 13:24   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 06/24] mpi3mr: add support of event handling part-1 Kashyap Desai
2020-12-27 13:14   ` kernel test robot [this message]
2020-12-27 13:14     ` kernel test robot
2021-02-22 15:31   ` Tomas Henzl
2021-02-25 13:36     ` Kashyap Desai
2021-03-01  6:47   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 07/24] mpi3mr: add support of event handling pcie devices part-2 Kashyap Desai
2021-03-01  6:52   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 08/24] mpi3mr: add support of event handling part-3 Kashyap Desai
2021-03-01  6:53   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 09/24] mpi3mr: add support for recovering controller Kashyap Desai
2021-03-01  6:56   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 10/24] mpi3mr: add support of timestamp sync with firmware Kashyap Desai
2021-03-01  6:57   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 11/24] mpi3mr: print ioc info for debugging Kashyap Desai
2021-03-01  6:59   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 12/24] mpi3mr: add bios_param shost template hook Kashyap Desai
2021-03-01  7:00   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 13/24] mpi3mr: implement scsi error handler hooks Kashyap Desai
2021-03-01  7:09   ` Hannes Reinecke
2021-04-16 14:12     ` Kashyap Desai
2021-04-16 14:31       ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 14/24] mpi3mr: add change queue depth support Kashyap Desai
2021-03-01  7:10   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 15/24] mpi3mr: allow certain commands during pci-remove hook Kashyap Desai
2021-03-01  7:11   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 16/24] mpi3mr: hardware workaround for UNMAP commands to nvme drives Kashyap Desai
2021-03-01  7:13   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 17/24] mpi3mr: add support of threaded isr Kashyap Desai
2020-12-27 13:51   ` kernel test robot
2020-12-27 13:51     ` kernel test robot
2021-03-01  7:14   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 18/24] mpi3mr: add complete support of soft reset Kashyap Desai
2021-03-01  7:16   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 19/24] mpi3mr: print pending host ios for debug Kashyap Desai
2021-03-01  7:16   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 20/24] mpi3mr: wait for pending IO completions upon detection of VD IO timeout Kashyap Desai
2021-03-01  7:17   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 21/24] mpi3mr: add support of PM suspend and resume Kashyap Desai
2021-02-22 15:32   ` Tomas Henzl
2021-02-25 13:37     ` Kashyap Desai
2021-03-01  7:18   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 22/24] mpi3mr: add support of DSN secure fw check Kashyap Desai
2021-03-01  7:19   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 23/24] mpi3mr: add eedp dif dix support Kashyap Desai
2021-02-22 15:37   ` Tomas Henzl
2021-02-25 13:39     ` Kashyap Desai
2021-03-01  7:20   ` Hannes Reinecke
2020-12-22 10:11 ` [PATCH 24/24] mpi3mr: add event handling debug prints Kashyap Desai
2021-03-01  7:20   ` Hannes Reinecke
2021-02-22 15:39 ` [PATCH 00/24] Introducing mpi3mr driver Tomas Henzl

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202012272151.xYcx9E4D-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=jejb@linux.ibm.com \
    --cc=kashyap.desai@broadcom.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=mpi3mr-linuxdrv.pdl@broadcom.com \
    --cc=peter.rivera@broadcom.com \
    --cc=sathya.prakash@broadcom.com \
    --cc=steve.hagan@broadcom.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.