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 --]
next prev parent 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.