All of lore.kernel.org
 help / color / mirror / Atom feed
* [vireshk:virtio/msg-amp 20/22] drivers/virtio/virtio_msg_amp_pci.c:94:30: error: implicit declaration of function 'pci_msix_vec_count'
@ 2026-04-07  8:51 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-04-07  8:51 UTC (permalink / raw)
  To: Viresh Kumar; +Cc: oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git virtio/msg-amp
head:   781a260a2b5802f6ac428e12ffe8a54d0c6330eb
commit: 47d31ad5e63c3d62a6b26136692b9b480bb11fb3 [20/22] virtio: msg: Add generic PCI transport driver for virtio-msg AMP
config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20260407/202604071622.HEdTlo3h-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260407/202604071622.HEdTlo3h-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604071622.HEdTlo3h-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   In file included from drivers/virtio/virtio_msg_amp.h:21,
                    from drivers/virtio/virtio_msg_amp.c:22:
   drivers/virtio/spsc_queue.h: In function 'spsc_atomic_load':
>> drivers/virtio/spsc_queue.h:72:23: error: implicit declaration of function 'array_index_nospec' [-Wimplicit-function-declaration]
      72 |                 val = array_index_nospec(val, q->capacity);
         |                       ^~~~~~~~~~~~~~~~~~
--
   drivers/virtio/virtio_msg_amp_pci.c: In function 'vmamp_pci_probe':
>> drivers/virtio/virtio_msg_amp_pci.c:94:30: error: implicit declaration of function 'pci_msix_vec_count' [-Wimplicit-function-declaration]
      94 |         vmamp_pci->vectors = pci_msix_vec_count(pdev);
         |                              ^~~~~~~~~~~~~~~~~~
>> drivers/virtio/virtio_msg_amp_pci.c:131:9: error: implicit declaration of function 'pci_free_irq_vectors'; did you mean 'pci_alloc_irq_vectors'? [-Wimplicit-function-declaration]
     131 |         pci_free_irq_vectors(pdev);
         |         ^~~~~~~~~~~~~~~~~~~~
         |         pci_alloc_irq_vectors
   drivers/virtio/virtio_msg_amp_pci.c: At top level:
>> drivers/virtio/virtio_msg_amp_pci.c:178:1: warning: data definition has no type or storage class
     178 | module_pci_driver(vmamp_pci_driver);
         | ^~~~~~~~~~~~~~~~~
>> drivers/virtio/virtio_msg_amp_pci.c:178:1: error: type defaults to 'int' in declaration of 'module_pci_driver' [-Wimplicit-int]
>> drivers/virtio/virtio_msg_amp_pci.c:178:1: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
>> drivers/virtio/virtio_msg_amp_pci.c:171:26: warning: 'vmamp_pci_driver' defined but not used [-Wunused-variable]
     171 | static struct pci_driver vmamp_pci_driver = {
         |                          ^~~~~~~~~~~~~~~~


vim +/pci_msix_vec_count +94 drivers/virtio/virtio_msg_amp_pci.c

    48	
    49	static int vmamp_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
    50	{
    51		struct vmamp_pci *vmamp_pci;
    52		resource_size_t	size;
    53		phys_addr_t addr;
    54		int ret, i;
    55	
    56		vmamp_pci = devm_kzalloc(&pdev->dev, sizeof(*vmamp_pci), GFP_KERNEL);
    57		if (!vmamp_pci) {
    58			ret = -ENOMEM;
    59			goto error;
    60		}
    61	
    62		ret = pcim_enable_device(pdev);
    63		if (ret)
    64			goto error;
    65	
    66		/* Request 3 BARs */
    67		for (i = 0; i < 3; i++) {
    68			ret = pcim_request_region(pdev, i, dev_name(&pdev->dev));
    69			if (ret)
    70				goto error;
    71	
    72			addr = pci_resource_start(pdev, i);
    73			size = pci_resource_len(pdev, i);
    74			dev_dbg(&pdev->dev, "mmr (BAR%d) at %pa, size %pr\n", i, &addr,
    75				&size);
    76		}
    77	
    78		vmamp_pci->regs = pcim_iomap(pdev, 0, 0);
    79		if (!vmamp_pci->regs) {
    80			ret = -ENOMEM;
    81			goto error;
    82		}
    83	
    84		vmamp_pci->ram = pci_iomap_wc(pdev, 1, 0);
    85		if (!vmamp_pci->ram) {
    86			ret = -ENOMEM;
    87			goto error;
    88		}
    89	
    90		/*
    91		 * Grab all vectors although we can only coalesce them into a single
    92		 * notifier. This avoids missing any event.
    93		 */
  > 94		vmamp_pci->vectors = pci_msix_vec_count(pdev);
    95		if (vmamp_pci->vectors < 0)
    96			vmamp_pci->vectors = 1;
    97	
    98		ret = pci_alloc_irq_vectors(pdev, vmamp_pci->vectors,
    99					    vmamp_pci->vectors, PCI_IRQ_MSIX);
   100		if (ret < 0)
   101			goto unmap_ram;
   102	
   103		for (i = 0; i < vmamp_pci->vectors; i++) {
   104			ret = request_irq(pci_irq_vector(pdev, i), irq_handler,
   105					  IRQF_SHARED, dev_name(&pdev->dev), vmamp_pci);
   106			if (ret)
   107				goto free_irq;
   108		}
   109	
   110		vmamp_pci->vmamp.dev = &pdev->dev;
   111		vmamp_pci->vmamp.ops = &vmamp_pci_ops;
   112		pci_set_drvdata(pdev, vmamp_pci);
   113		pci_set_master(pdev);
   114	
   115		/* First 4KB are reserved */
   116		vmamp_pci->vmamp.shmem = vmamp_pci->ram + 4 * 1024;
   117		vmamp_pci->vmamp.shmem_size = 8 * 1024;
   118		memset(vmamp_pci->vmamp.shmem, 0, vmamp_pci->vmamp.shmem_size);
   119	
   120		ret = virtio_msg_amp_register(&vmamp_pci->vmamp);
   121		if (ret)
   122			goto clear_master;
   123	
   124		return 0;
   125	
   126	clear_master:
   127		pci_clear_master(pdev);
   128	free_irq:
   129		while (--i >= 0)
   130			free_irq(pci_irq_vector(pdev, i), vmamp_pci);
 > 131		pci_free_irq_vectors(pdev);
   132	unmap_ram:
   133		pci_iounmap(pdev, vmamp_pci->ram);
   134	error:
   135		dev_err(&pdev->dev, "probe failed: %d\n", ret);
   136		return ret;
   137	}
   138	
   139	static void vmamp_pci_remove(struct pci_dev *pdev)
   140	{
   141		struct vmamp_pci *vmamp_pci = pci_get_drvdata(pdev);
   142		int i;
   143	
   144		virtio_msg_amp_unregister(&vmamp_pci->vmamp);
   145		pci_clear_master(pdev);
   146	
   147		for (i = vmamp_pci->vectors - 1; i >= 0; i--)
   148			free_irq(pci_irq_vector(pdev, i), vmamp_pci);
   149	
   150		pci_free_irq_vectors(pdev);
   151		pci_iounmap(pdev, vmamp_pci->ram);
   152	}
   153	
   154	static void vmamp_pci_shutdown(struct pci_dev *pdev)
   155	{
   156		struct vmamp_pci *vmamp_pci = pci_get_drvdata(pdev);
   157	
   158		/*
   159		 * Do the minimal to make device harmless. Need to tell our virtio-msg
   160		 * peer we're going down.
   161		 */
   162		virtio_msg_amp_unregister(&vmamp_pci->vmamp);
   163	}
   164	
   165	static const struct pci_device_id vmamp_pci_id_table[] = {
   166		{ PCI_DEVICE(PCI_VENDOR_ID_XILINX, 0x9039) },
   167		{ 0 }
   168	};
   169	MODULE_DEVICE_TABLE(pci, vmamp_pci_id_table);
   170	
 > 171	static struct pci_driver vmamp_pci_driver = {
   172		.name = "virtio_msg_amp_pci",
   173		.id_table = vmamp_pci_id_table,
   174		.probe = vmamp_pci_probe,
   175		.remove = vmamp_pci_remove,
   176		.shutdown = vmamp_pci_shutdown,
   177	};
 > 178	module_pci_driver(vmamp_pci_driver);
   179	

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-04-07  8:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-07  8:51 [vireshk:virtio/msg-amp 20/22] drivers/virtio/virtio_msg_amp_pci.c:94:30: error: implicit declaration of function 'pci_msix_vec_count' kernel test robot

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.