oe-kbuild-all.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* Re: [RFC PATCH 7/8] vfio/pci: Support dynamic MSI-x
       [not found] <591ce11f4a33e022fc9242324ebdc077202bedaf.1678911529.git.reinette.chatre@intel.com>
@ 2023-03-18  7:40 ` Dan Carpenter
  2023-03-20 15:53   ` Reinette Chatre
  0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2023-03-18  7:40 UTC (permalink / raw)
  To: oe-kbuild, Reinette Chatre; +Cc: lkp, oe-kbuild-all

Hi Reinette,

url:    https://github.com/intel-lab-lkp/linux/commits/Reinette-Chatre/vfio-pci-Consolidate-irq-cleanup-on-MSI-MSI-X-disable/20230316-050150
base:   eeac8ede17557680855031c6f305ece2378af326
patch link:    https://lore.kernel.org/r/591ce11f4a33e022fc9242324ebdc077202bedaf.1678911529.git.reinette.chatre%40intel.com
patch subject: [RFC PATCH 7/8] vfio/pci: Support dynamic MSI-x
config: ia64-randconfig-m031-20230312 (https://download.01.org/0day-ci/archive/20230316/202303162207.6AD9wdJd-lkp@intel.com/config)
compiler: ia64-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Link: https://lore.kernel.org/r/202303162207.6AD9wdJd-lkp@intel.com/

New smatch warnings:
drivers/vfio/pci/vfio_pci_intrs.c:557 vfio_msi_set_vector_signal() error: uninitialized symbol 'new_ctx'.

Old smatch warnings:
drivers/vfio/pci/vfio_pci_intrs.c:569 vfio_msi_set_vector_signal() error: uninitialized symbol 'new_ctx'.

vim +/new_ctx +557 drivers/vfio/pci/vfio_pci_intrs.c

536475109c8284 Max Gurtovoy      2021-08-26  440  static int vfio_msi_set_vector_signal(struct vfio_pci_core_device *vdev,
45d99835bd7f50 Reinette Chatre   2023-03-15  441  				      unsigned int vector, int fd, bool msix)
89e1f7d4c66d85 Alex Williamson   2012-07-31  442  {
89e1f7d4c66d85 Alex Williamson   2012-07-31  443  	struct pci_dev *pdev = vdev->pdev;
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  444  	struct vfio_pci_irq_ctx *ctx;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  445  	struct msi_map msix_map = {};
89e1f7d4c66d85 Alex Williamson   2012-07-31  446  	struct eventfd_ctx *trigger;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  447  	bool new_ctx;

Was never intiliazed to false.

b95d9305e8cb8d Alex Williamson   2016-02-22  448  	int irq, ret;
abafbc551fdded Alex Williamson   2020-04-22  449  	u16 cmd;
89e1f7d4c66d85 Alex Williamson   2012-07-31  450  
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  451  	ctx = vfio_irq_ctx_get(vdev, vector);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  452  	/* Only MSI-X allows dynamic allocation. */
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  453  	if (!msix && !ctx)
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  454  		return -EINVAL;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  455  
61771468e0a567 Christoph Hellwig 2016-09-11  456  	irq = pci_irq_vector(pdev, vector);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  457  	/* Context and interrupt are always allocated together. */
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  458  	WARN_ON((ctx && irq == -EINVAL) || (!ctx && irq != -EINVAL));
b95d9305e8cb8d Alex Williamson   2016-02-22  459  
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  460  	if (ctx && ctx->trigger) {
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  461  		irq_bypass_unregister_producer(&ctx->producer);
abafbc551fdded Alex Williamson   2020-04-22  462  
abafbc551fdded Alex Williamson   2020-04-22  463  		cmd = vfio_pci_memory_lock_and_enable(vdev);
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  464  		free_irq(irq, ctx->trigger);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  465  		if (msix) {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  466  			msix_map.index = vector;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  467  			msix_map.virq = irq;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  468  			pci_msix_free_irq(pdev, msix_map);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  469  			irq = -EINVAL;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  470  		}
abafbc551fdded Alex Williamson   2020-04-22  471  		vfio_pci_memory_unlock_and_restore(vdev, cmd);
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  472  		kfree(ctx->name);
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  473  		eventfd_ctx_put(ctx->trigger);
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  474  		ctx->trigger = NULL;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  475  		if (msix) {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  476  			vfio_irq_ctx_free(vdev, vector);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  477  			ctx = NULL;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  478  		}
89e1f7d4c66d85 Alex Williamson   2012-07-31  479  	}
89e1f7d4c66d85 Alex Williamson   2012-07-31  480  
89e1f7d4c66d85 Alex Williamson   2012-07-31  481  	if (fd < 0)
89e1f7d4c66d85 Alex Williamson   2012-07-31  482  		return 0;
89e1f7d4c66d85 Alex Williamson   2012-07-31  483  
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  484  	if (!ctx) {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  485  		ret = vfio_irq_ctx_alloc_single(vdev, vector);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  486  		if (ret)
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  487  			return ret;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  488  		ctx = vfio_irq_ctx_get(vdev, vector);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  489  		if (!ctx) {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  490  			ret = -EINVAL;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  491  			goto out_free_ctx;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  492  		}
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  493  		new_ctx = true;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  494  	}
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  495  
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  496  	ctx->name = kasprintf(GFP_KERNEL_ACCOUNT, "vfio-msi%s[%d](%s)",
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  497  			      msix ? "x" : "", vector, pci_name(pdev));
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  498  	if (!ctx->name) {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  499  		ret = -ENOMEM;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  500  		goto out_free_ctx;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  501  	}
89e1f7d4c66d85 Alex Williamson   2012-07-31  502  
89e1f7d4c66d85 Alex Williamson   2012-07-31  503  	trigger = eventfd_ctx_fdget(fd);
89e1f7d4c66d85 Alex Williamson   2012-07-31  504  	if (IS_ERR(trigger)) {
224474be3986e1 Reinette Chatre   2023-03-15  505  		ret = PTR_ERR(trigger);
224474be3986e1 Reinette Chatre   2023-03-15  506  		goto out_free_name;
89e1f7d4c66d85 Alex Williamson   2012-07-31  507  	}
89e1f7d4c66d85 Alex Williamson   2012-07-31  508  
abafbc551fdded Alex Williamson   2020-04-22  509  	cmd = vfio_pci_memory_lock_and_enable(vdev);
b8f02af096b1fc Gavin Shan        2014-09-29  510  	if (msix) {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  511  		if (irq == -EINVAL) {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  512  			msix_map = pci_msix_alloc_irq_at(pdev, vector, NULL);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  513  			if (msix_map.index < 0) {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  514  				vfio_pci_memory_unlock_and_restore(vdev, cmd);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  515  				ret = msix_map.index;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  516  				goto out_put_eventfd_ctx;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  517  			}
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  518  			irq = msix_map.virq;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  519  		} else {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  520  			/*
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  521  			 * The MSIx vector table resides in device memory which
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  522  			 * may be cleared via backdoor resets. We don't allow
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  523  			 * direct access to the vector table so even if a
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  524  			 * userspace driver attempts to save/restore around
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  525  			 * such a reset it would be unsuccessful. To avoid
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  526  			 * this, restore the cached value of the message prior
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  527  			 * to enabling.
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  528  			 */
b8f02af096b1fc Gavin Shan        2014-09-29  529  			struct msi_msg msg;
b8f02af096b1fc Gavin Shan        2014-09-29  530  
b8f02af096b1fc Gavin Shan        2014-09-29  531  			get_cached_msi_msg(irq, &msg);
83a18912b0e8d2 Jiang Liu         2014-11-09  532  			pci_write_msi_msg(irq, &msg);
b8f02af096b1fc Gavin Shan        2014-09-29  533  		}
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  534  	}
b8f02af096b1fc Gavin Shan        2014-09-29  535  
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  536  	ret = request_irq(irq, vfio_msihandler, 0, ctx->name, trigger);
224474be3986e1 Reinette Chatre   2023-03-15  537  	if (ret)
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  538  		goto out_free_irq_locked;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  539  
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  540  	vfio_pci_memory_unlock_and_restore(vdev, cmd);
89e1f7d4c66d85 Alex Williamson   2012-07-31  541  
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  542  	ctx->producer.token = trigger;
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  543  	ctx->producer.irq = irq;
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  544  	ret = irq_bypass_register_producer(&ctx->producer);
852b1beecb6ff9 Alex Williamson   2020-10-19  545  	if (unlikely(ret)) {
6d7425f109d262 Feng Wu           2015-09-18  546  		dev_info(&pdev->dev,
6d7425f109d262 Feng Wu           2015-09-18  547  		"irq bypass producer (token %p) registration fails: %d\n",
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  548  		ctx->producer.token, ret);
6d7425f109d262 Feng Wu           2015-09-18  549  
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  550  		ctx->producer.token = NULL;
852b1beecb6ff9 Alex Williamson   2020-10-19  551  	}
d6ddf3a1f66d02 Reinette Chatre   2023-03-15  552  	ctx->trigger = trigger;
89e1f7d4c66d85 Alex Williamson   2012-07-31  553  
89e1f7d4c66d85 Alex Williamson   2012-07-31  554  	return 0;
224474be3986e1 Reinette Chatre   2023-03-15  555  
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  556  out_free_irq_locked:
db5c3d2cbe1a75 Reinette Chatre   2023-03-15 @557  	if (msix && new_ctx) {
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  558  		msix_map.index = vector;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  559  		msix_map.virq = irq;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  560  		pci_msix_free_irq(pdev, msix_map);
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  561  	}
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  562  	vfio_pci_memory_unlock_and_restore(vdev, cmd);
224474be3986e1 Reinette Chatre   2023-03-15  563  out_put_eventfd_ctx:
224474be3986e1 Reinette Chatre   2023-03-15  564  	eventfd_ctx_put(trigger);
224474be3986e1 Reinette Chatre   2023-03-15  565  out_free_name:
224474be3986e1 Reinette Chatre   2023-03-15  566  	kfree(ctx->name);
224474be3986e1 Reinette Chatre   2023-03-15  567  	ctx->name = NULL;
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  568  out_free_ctx:
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  569  	if (msix && new_ctx)
db5c3d2cbe1a75 Reinette Chatre   2023-03-15  570  		vfio_irq_ctx_free(vdev, vector);
224474be3986e1 Reinette Chatre   2023-03-15  571  	return ret;
89e1f7d4c66d85 Alex Williamson   2012-07-31  572  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [RFC PATCH 7/8] vfio/pci: Support dynamic MSI-x
  2023-03-18  7:40 ` [RFC PATCH 7/8] vfio/pci: Support dynamic MSI-x Dan Carpenter
@ 2023-03-20 15:53   ` Reinette Chatre
  0 siblings, 0 replies; 2+ messages in thread
From: Reinette Chatre @ 2023-03-20 15:53 UTC (permalink / raw)
  To: Dan Carpenter, oe-kbuild; +Cc: lkp, oe-kbuild-all



On 3/18/2023 12:40 AM, Dan Carpenter wrote:
> Hi Reinette,
> 
> url:    https://github.com/intel-lab-lkp/linux/commits/Reinette-Chatre/vfio-pci-Consolidate-irq-cleanup-on-MSI-MSI-X-disable/20230316-050150
> base:   eeac8ede17557680855031c6f305ece2378af326
> patch link:    https://lore.kernel.org/r/591ce11f4a33e022fc9242324ebdc077202bedaf.1678911529.git.reinette.chatre%40intel.com
> patch subject: [RFC PATCH 7/8] vfio/pci: Support dynamic MSI-x
> config: ia64-randconfig-m031-20230312 (https://download.01.org/0day-ci/archive/20230316/202303162207.6AD9wdJd-lkp@intel.com/config)
> compiler: ia64-linux-gcc (GCC) 12.1.0
> 
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@intel.com>
> | Reported-by: Dan Carpenter <error27@gmail.com>
> | Link: https://lore.kernel.org/r/202303162207.6AD9wdJd-lkp@intel.com/
> 
> New smatch warnings:
> drivers/vfio/pci/vfio_pci_intrs.c:557 vfio_msi_set_vector_signal() error: uninitialized symbol 'new_ctx'.
> 
> Old smatch warnings:
> drivers/vfio/pci/vfio_pci_intrs.c:569 vfio_msi_set_vector_signal() error: uninitialized symbol 'new_ctx'.

Thank you very much Dan. 

Reinette

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-03-20 15:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <591ce11f4a33e022fc9242324ebdc077202bedaf.1678911529.git.reinette.chatre@intel.com>
2023-03-18  7:40 ` [RFC PATCH 7/8] vfio/pci: Support dynamic MSI-x Dan Carpenter
2023-03-20 15:53   ` Reinette Chatre

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).