From: kernel test robot <lkp@intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>,
jgg@nvidia.com, yishaih@nvidia.com,
shameerali.kolothum.thodi@huawei.com, kevin.tian@intel.com,
alex.williamson@redhat.com
Cc: oe-kbuild-all@lists.linux.dev, tglx@linutronix.de,
darwi@linutronix.de, kvm@vger.kernel.org, dave.jiang@intel.com,
jing2.liu@intel.com, ashok.raj@intel.com, fenghua.yu@intel.com,
tom.zanussi@linux.intel.com, reinette.chatre@intel.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH V2 7/8] vfio/pci: Support dynamic MSI-x
Date: Wed, 29 Mar 2023 10:48:02 +0800 [thread overview]
Message-ID: <202303291000.PWFqGCxH-lkp@intel.com> (raw)
In-Reply-To: <419f3ba2f732154d8ae079b3deb02d0fdbe3e258.1680038771.git.reinette.chatre@intel.com>
Hi Reinette,
I love your patch! Yet something to improve:
[auto build test ERROR on 197b6b60ae7bc51dd0814953c562833143b292aa]
url: https://github.com/intel-lab-lkp/linux/commits/Reinette-Chatre/vfio-pci-Consolidate-irq-cleanup-on-MSI-MSI-X-disable/20230329-055735
base: 197b6b60ae7bc51dd0814953c562833143b292aa
patch link: https://lore.kernel.org/r/419f3ba2f732154d8ae079b3deb02d0fdbe3e258.1680038771.git.reinette.chatre%40intel.com
patch subject: [PATCH V2 7/8] vfio/pci: Support dynamic MSI-x
config: i386-randconfig-a001-20230327 (https://download.01.org/0day-ci/archive/20230329/202303291000.PWFqGCxH-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/420198d6ba9227a0ef81a2192ca35019fa6439cf
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Reinette-Chatre/vfio-pci-Consolidate-irq-cleanup-on-MSI-MSI-X-disable/20230329-055735
git checkout 420198d6ba9227a0ef81a2192ca35019fa6439cf
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=i386 olddefconfig
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/vfio/pci/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303291000.PWFqGCxH-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/vfio/pci/vfio_pci_intrs.c: In function 'vfio_msi_set_vector_signal':
>> drivers/vfio/pci/vfio_pci_intrs.c:427:21: error: implicit declaration of function 'pci_msix_can_alloc_dyn' [-Werror=implicit-function-declaration]
427 | if (msix && pci_msix_can_alloc_dyn(vdev->pdev))
| ^~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/pci_msix_can_alloc_dyn +427 drivers/vfio/pci/vfio_pci_intrs.c
413
414 static int vfio_msi_set_vector_signal(struct vfio_pci_core_device *vdev,
415 unsigned int vector, int fd, bool msix)
416 {
417 struct pci_dev *pdev = vdev->pdev;
418 struct vfio_pci_irq_ctx *ctx;
419 struct msi_map msix_map = {};
420 bool allow_dyn_alloc = false;
421 struct eventfd_ctx *trigger;
422 bool new_ctx = false;
423 int irq, ret;
424 u16 cmd;
425
426 /* Only MSI-X allows dynamic allocation. */
> 427 if (msix && pci_msix_can_alloc_dyn(vdev->pdev))
428 allow_dyn_alloc = true;
429
430 ctx = vfio_irq_ctx_get(vdev, vector);
431 if (!ctx && !allow_dyn_alloc)
432 return -EINVAL;
433
434 irq = pci_irq_vector(pdev, vector);
435 /* Context and interrupt are always allocated together. */
436 WARN_ON((ctx && irq == -EINVAL) || (!ctx && irq != -EINVAL));
437
438 if (ctx && ctx->trigger) {
439 irq_bypass_unregister_producer(&ctx->producer);
440
441 cmd = vfio_pci_memory_lock_and_enable(vdev);
442 free_irq(irq, ctx->trigger);
443 if (allow_dyn_alloc) {
444 msix_map.index = vector;
445 msix_map.virq = irq;
446 pci_msix_free_irq(pdev, msix_map);
447 irq = -EINVAL;
448 }
449 vfio_pci_memory_unlock_and_restore(vdev, cmd);
450 kfree(ctx->name);
451 eventfd_ctx_put(ctx->trigger);
452 ctx->trigger = NULL;
453 if (allow_dyn_alloc) {
454 vfio_irq_ctx_free(vdev, ctx, vector);
455 ctx = NULL;
456 }
457 }
458
459 if (fd < 0)
460 return 0;
461
462 if (!ctx) {
463 ctx = vfio_irq_ctx_alloc_single(vdev, vector);
464 if (!ctx)
465 return -ENOMEM;
466 new_ctx = true;
467 }
468
469 ctx->name = kasprintf(GFP_KERNEL_ACCOUNT, "vfio-msi%s[%d](%s)",
470 msix ? "x" : "", vector, pci_name(pdev));
471 if (!ctx->name) {
472 ret = -ENOMEM;
473 goto out_free_ctx;
474 }
475
476 trigger = eventfd_ctx_fdget(fd);
477 if (IS_ERR(trigger)) {
478 ret = PTR_ERR(trigger);
479 goto out_free_name;
480 }
481
482 cmd = vfio_pci_memory_lock_and_enable(vdev);
483 if (msix) {
484 if (irq == -EINVAL) {
485 msix_map = pci_msix_alloc_irq_at(pdev, vector, NULL);
486 if (msix_map.index < 0) {
487 vfio_pci_memory_unlock_and_restore(vdev, cmd);
488 ret = msix_map.index;
489 goto out_put_eventfd_ctx;
490 }
491 irq = msix_map.virq;
492 } else {
493 /*
494 * The MSIx vector table resides in device memory which
495 * may be cleared via backdoor resets. We don't allow
496 * direct access to the vector table so even if a
497 * userspace driver attempts to save/restore around
498 * such a reset it would be unsuccessful. To avoid
499 * this, restore the cached value of the message prior
500 * to enabling.
501 */
502 struct msi_msg msg;
503
504 get_cached_msi_msg(irq, &msg);
505 pci_write_msi_msg(irq, &msg);
506 }
507 }
508
509 ret = request_irq(irq, vfio_msihandler, 0, ctx->name, trigger);
510 if (ret)
511 goto out_free_irq_locked;
512
513 vfio_pci_memory_unlock_and_restore(vdev, cmd);
514
515 ctx->producer.token = trigger;
516 ctx->producer.irq = irq;
517 ret = irq_bypass_register_producer(&ctx->producer);
518 if (unlikely(ret)) {
519 dev_info(&pdev->dev,
520 "irq bypass producer (token %p) registration fails: %d\n",
521 ctx->producer.token, ret);
522
523 ctx->producer.token = NULL;
524 }
525 ctx->trigger = trigger;
526
527 return 0;
528
529 out_free_irq_locked:
530 if (allow_dyn_alloc && new_ctx) {
531 msix_map.index = vector;
532 msix_map.virq = irq;
533 pci_msix_free_irq(pdev, msix_map);
534 }
535 vfio_pci_memory_unlock_and_restore(vdev, cmd);
536 out_put_eventfd_ctx:
537 eventfd_ctx_put(trigger);
538 out_free_name:
539 kfree(ctx->name);
540 ctx->name = NULL;
541 out_free_ctx:
542 if (allow_dyn_alloc && new_ctx)
543 vfio_irq_ctx_free(vdev, ctx, vector);
544 return ret;
545 }
546
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
next prev parent reply other threads:[~2023-03-29 2:48 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-28 21:53 [PATCH V2 0/8] vfio/pci: Support dynamic allocation of MSI-X interrupts Reinette Chatre
2023-03-28 21:53 ` [PATCH V2 1/8] vfio/pci: Consolidate irq cleanup on MSI/MSI-X disable Reinette Chatre
2023-03-28 21:53 ` [PATCH V2 2/8] vfio/pci: Remove negative check on unsigned vector Reinette Chatre
2023-03-30 20:26 ` Alex Williamson
2023-03-30 22:32 ` Reinette Chatre
2023-03-30 22:54 ` Alex Williamson
2023-03-30 23:54 ` Reinette Chatre
2023-03-28 21:53 ` [PATCH V2 3/8] vfio/pci: Prepare for dynamic interrupt context storage Reinette Chatre
2023-03-28 21:53 ` [PATCH V2 4/8] vfio/pci: Use xarray for " Reinette Chatre
2023-04-07 7:21 ` Liu, Jing2
2023-04-07 16:44 ` Reinette Chatre
2023-03-28 21:53 ` [PATCH V2 5/8] vfio/pci: Remove interrupt context counter Reinette Chatre
2023-03-28 21:53 ` [PATCH V2 6/8] vfio/pci: Move to single error path Reinette Chatre
2023-03-28 21:53 ` [PATCH V2 7/8] vfio/pci: Support dynamic MSI-x Reinette Chatre
2023-03-29 2:48 ` kernel test robot [this message]
2023-03-29 14:42 ` Reinette Chatre
2023-03-29 22:10 ` Reinette Chatre
2023-03-29 2:58 ` kernel test robot
2023-03-30 22:40 ` Alex Williamson
2023-03-30 22:42 ` Alex Williamson
2023-03-31 17:49 ` Reinette Chatre
2023-03-31 22:24 ` Alex Williamson
2023-04-03 17:31 ` Reinette Chatre
2023-04-03 20:22 ` Alex Williamson
2023-04-03 22:50 ` Reinette Chatre
2023-04-04 3:18 ` Alex Williamson
2023-04-04 3:51 ` Tian, Kevin
2023-04-04 17:29 ` Reinette Chatre
2023-04-04 18:43 ` Alex Williamson
2023-04-04 20:46 ` Reinette Chatre
2023-04-04 16:54 ` Reinette Chatre
2023-04-04 18:24 ` Alex Williamson
2023-04-06 20:13 ` Reinette Chatre
2023-03-31 10:02 ` Liu, Jing2
2023-03-31 13:51 ` Alex Williamson
2023-04-04 3:19 ` Liu, Jing2
2023-03-28 21:53 ` [PATCH V2 8/8] vfio/pci: Clear VFIO_IRQ_INFO_NORESIZE for MSI-X Reinette Chatre
2023-03-29 3:29 ` kernel test robot
2023-03-29 3:29 ` kernel test robot
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=202303291000.PWFqGCxH-lkp@intel.com \
--to=lkp@intel.com \
--cc=alex.williamson@redhat.com \
--cc=ashok.raj@intel.com \
--cc=darwi@linutronix.de \
--cc=dave.jiang@intel.com \
--cc=fenghua.yu@intel.com \
--cc=jgg@nvidia.com \
--cc=jing2.liu@intel.com \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=reinette.chatre@intel.com \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=tglx@linutronix.de \
--cc=tom.zanussi@linux.intel.com \
--cc=yishaih@nvidia.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.