All of lore.kernel.org
 help / color / mirror / Atom feed
* [lpieralisi:gic/v4-1-vsgi-disable 2/4] drivers/misc/smmu-test-engine.c:1748:4: error: implicit declaration of function 'pci_msix_vec_count'
@ 2021-03-16 19:25 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-03-16 19:25 UTC (permalink / raw)
  To: kbuild-all

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git gic/v4-1-vsgi-disable
head:   028f565ab5e5e9eb425fc4a976073afa455ed40b
commit: ac343379cbdfd6dee5b781f1f0e1dfb8d6d607a1 [2/4] smmute: driver for the SMMUv3TestEngine
config: arm64-randconfig-r024-20210316 (attached as .config)
compiler: aarch64-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://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git/commit/?id=ac343379cbdfd6dee5b781f1f0e1dfb8d6d607a1
        git remote add lpieralisi https://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git
        git fetch --no-tags lpieralisi gic/v4-1-vsgi-disable
        git checkout ac343379cbdfd6dee5b781f1f0e1dfb8d6d607a1
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64 

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

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

>> drivers/misc/smmu-test-engine.c:348:6: warning: no previous prototype for '__smmute_task_put' [-Wmissing-prototypes]
     348 | void __smmute_task_put(struct smmute_task *smmute_task)
         |      ^~~~~~~~~~~~~~~~~
>> drivers/misc/smmu-test-engine.c:484:6: warning: no previous prototype for 'smmute_task_fd_put_all' [-Wmissing-prototypes]
     484 | void smmute_task_fd_put_all(struct smmute_file_desc *fd)
         |      ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/misc/smmu-test-engine.c:502:6: warning: no previous prototype for 'smmute_task_put' [-Wmissing-prototypes]
     502 | void smmute_task_put(struct smmute_file_desc *fd,
         |      ^~~~~~~~~~~~~~~
>> drivers/misc/smmu-test-engine.c:1206:6: warning: no previous prototype for 'smmute_vm_close' [-Wmissing-prototypes]
    1206 | void smmute_vm_close(struct vm_area_struct *vma)
         |      ^~~~~~~~~~~~~~~
   In file included from include/linux/device.h:15,
                    from include/linux/cdev.h:8,
                    from drivers/misc/smmu-test-engine.c:13:
   drivers/misc/smmu-test-engine.c: In function 'smmute_pci_msi_enable':
>> drivers/misc/smmu-test-engine.c:1748:4: error: implicit declaration of function 'pci_msix_vec_count' [-Werror=implicit-function-declaration]
    1748 |    pci_msix_vec_count(pdev));
         |    ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:131:47: note: in definition of macro 'dev_dbg'
     131 |   dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \
         |                                               ^~~~~~~~~~~
>> drivers/misc/smmu-test-engine.c:1752:44: error: invalid application of 'sizeof' to incomplete type 'struct msix_entry'
    1752 |  entries = devm_kmalloc(&pdev->dev, sizeof(struct msix_entry) * nr_msis,
         |                                            ^~~~~~
>> drivers/misc/smmu-test-engine.c:1763:10: error: invalid use of undefined type 'struct msix_entry'
    1763 |   entries[i].entry = i;
         |          ^
>> drivers/misc/smmu-test-engine.c:1763:10: error: dereferencing pointer to incomplete type 'struct msix_entry'
>> drivers/misc/smmu-test-engine.c:1765:8: error: implicit declaration of function 'pci_enable_msix_range' [-Werror=implicit-function-declaration]
    1765 |  ret = pci_enable_msix_range(pdev, entries, 1, nr_msis);
         |        ^~~~~~~~~~~~~~~~~~~~~
   drivers/misc/smmu-test-engine.c: In function 'smmute_init_msi_pool':
   drivers/misc/smmu-test-engine.c:155:53: error: invalid use of undefined type 'struct msix_entry'
     155 |  (dev_is_pci((smmute)->dev) ? (smmute)->msix_entries[idx].vector : \
         |                                                     ^
   drivers/misc/smmu-test-engine.c:1793:9: note: in expansion of macro 'smmute_get_msi_vector'
    1793 |   vec = smmute_get_msi_vector(smmute, i);
         |         ^~~~~~~~~~~~~~~~~~~~~
   drivers/misc/smmu-test-engine.c: In function 'smmute_free_msi_pool':
   drivers/misc/smmu-test-engine.c:155:53: error: invalid use of undefined type 'struct msix_entry'
     155 |  (dev_is_pci((smmute)->dev) ? (smmute)->msix_entries[idx].vector : \
         |                                                     ^
   drivers/misc/smmu-test-engine.c:1813:12: note: in expansion of macro 'smmute_get_msi_vector'
    1813 |   free_irq(smmute_get_msi_vector(smmute, i),
         |            ^~~~~~~~~~~~~~~~~~~~~
   drivers/misc/smmu-test-engine.c: In function 'smmute_common_probe':
>> drivers/misc/smmu-test-engine.c:1888:9: error: implicit declaration of function 'iommu_dev_has_feature'; did you mean 'iommu_dev_enable_feature'? [-Werror=implicit-function-declaration]
    1888 |   ret = iommu_dev_has_feature(dev, IOMMU_DEV_FEAT_SVA);
         |         ^~~~~~~~~~~~~~~~~~~~~
         |         iommu_dev_enable_feature
   drivers/misc/smmu-test-engine.c: In function 'smmute_pci_probe':
>> drivers/misc/smmu-test-engine.c:2047:2: error: implicit declaration of function 'pci_disable_msix'; did you mean 'pci_disable_sriov'? [-Werror=implicit-function-declaration]
    2047 |  pci_disable_msix(pdev);
         |  ^~~~~~~~~~~~~~~~
         |  pci_disable_sriov
   cc1: some warnings being treated as errors


vim +/pci_msix_vec_count +1748 drivers/misc/smmu-test-engine.c

  1735	
  1736	static int smmute_pci_msi_enable(struct pci_dev *pdev)
  1737	{
  1738		int ret, i;
  1739		int nr_msis;
  1740		struct smmute_device *smmute;
  1741		struct msix_entry *entries;
  1742	
  1743		smmute = pci_get_drvdata(pdev);
  1744		if (!smmute)
  1745			return -EINVAL;
  1746	
  1747		dev_dbg(&pdev->dev, "max number of MSI-X vectors: %d\n",
> 1748				pci_msix_vec_count(pdev));
  1749	
  1750		nr_msis = min_t(size_t, SMMUTE_MAX_MSIS,
  1751				smmute->nr_pairs * SMMUTE_FRAMES_PER_PAGE);
> 1752		entries = devm_kmalloc(&pdev->dev, sizeof(struct msix_entry) * nr_msis,
  1753				       GFP_KERNEL);
  1754	
  1755		if (!entries) {
  1756			dev_err(&pdev->dev, "could not allocate MSI-X entries\n");
  1757			return -ENOMEM;
  1758		}
  1759	
  1760		smmute->msix_entries = entries;
  1761	
  1762		for (i = 0; i < nr_msis; i++)
> 1763			entries[i].entry = i;
  1764	
> 1765		ret = pci_enable_msix_range(pdev, entries, 1, nr_msis);
  1766		if (ret <= 0) {
  1767			devm_kfree(&pdev->dev, entries);
  1768			return ret;
  1769		}
  1770	
  1771		smmute->nr_msix_entries = ret;
  1772		dev_dbg(&pdev->dev, "requested %d MSIs, got %d\n", nr_msis, ret);
  1773	
  1774		return 0;
  1775	}
  1776	
  1777	static int smmute_init_msi_pool(struct smmute_device *smmute)
  1778	{
  1779		int vec, ret, i;
  1780		struct smmute_msi_pool *pool;
  1781		int nr_pools = smmute->nr_msix_entries;
  1782	
  1783		smmute->msi_pools = devm_kcalloc(smmute->dev, nr_pools, sizeof(*pool),
  1784						 GFP_KERNEL);
  1785		if (!smmute->msi_pools)
  1786			return -ENOMEM;
  1787	
  1788		for (i = 0; i < nr_pools; i++) {
  1789			pool = &smmute->msi_pools[i];
  1790			spin_lock_init(&pool->lock);
  1791			INIT_LIST_HEAD(&pool->transactions);
  1792	
  1793			vec = smmute_get_msi_vector(smmute, i);
  1794			ret = request_irq(vec, smmute_msi_handler, 0,
  1795					  dev_name(smmute->dev), pool);
  1796			if (ret)
  1797				break;
  1798		}
  1799	
  1800		return ret;
  1801	}
  1802	
  1803	static void smmute_free_msi_pool(struct smmute_device *smmute)
  1804	{
  1805		int i;
  1806	
  1807		/*
  1808		 * Other resources are managed (freed automatically), but we don't use
  1809		 * devm for MSIs, because they have to be unregistered before MSIs are
  1810		 * freed by pci_disable_msix.
  1811		 */
  1812		for (i = 0; i < smmute->nr_msix_entries; i++)
  1813			free_irq(smmute_get_msi_vector(smmute, i),
  1814				 &smmute->msi_pools[i]);
  1815	}
  1816	
  1817	static int smmute_common_probe(struct smmute_device *smmute)
  1818	{
  1819		int minor;
  1820		size_t nr_frames;
  1821		int ret = -ENOMEM;
  1822		int cache_flags = 0;
  1823		struct device *dev = smmute->dev;
  1824	
  1825	#ifdef DEBUG
  1826		/* prevents merging caches, allows to get stats from /proc/slabinfo */
  1827		cache_flags = SLAB_POISON | SLAB_CONSISTENCY_CHECKS;
  1828	#endif
  1829	
  1830		mutex_init(&smmute->task_mutex);
  1831		mutex_init(&smmute->resources_mutex);
  1832		INIT_LIST_HEAD(&smmute->tasks);
  1833	
  1834		nr_frames = smmute->nr_pairs * SMMUTE_FRAMES_PER_PAGE;
  1835		smmute->reserved_frames = devm_kzalloc(dev, BITS_TO_LONGS(nr_frames),
  1836						       GFP_KERNEL);
  1837		if (!smmute->reserved_frames)
  1838			return ret;
  1839	
  1840		smmute->transaction_cache = kmem_cache_create("smmute_transactions",
  1841				sizeof(struct smmute_transaction), 0, cache_flags, NULL);
  1842		if (!smmute->transaction_cache)
  1843			goto err_free_frames;
  1844	
  1845		smmute->dma_regions_cache = kmem_cache_create("smmute_dma_regions",
  1846				sizeof(struct smmute_dma), 0, cache_flags, NULL);
  1847		if (!smmute->dma_regions_cache)
  1848			goto err_destroy_transaction_cache;
  1849	
  1850		smmute->file_desc_cache = kmem_cache_create("smmute_file_descs",
  1851				sizeof(struct smmute_file_desc), 0, cache_flags, NULL);
  1852		if (!smmute->file_desc_cache)
  1853			goto err_destroy_dma_cache;
  1854	
  1855		minor = ida_simple_get(&smmute_minor_ida, 0, SMMUTE_MAX_DEVICES,
  1856				       GFP_KERNEL);
  1857		if (minor < 0) {
  1858			dev_dbg(dev, "idr_alloc failed with %d\n", minor);
  1859			goto err_destroy_fd_cache;
  1860		}
  1861	
  1862		smmute->chrdev = device_create(smmute_class, dev,
  1863				MKDEV(smmute_major, minor), smmute,
  1864				"smmute%d", minor);
  1865		if (IS_ERR(smmute->chrdev)) {
  1866			dev_err(dev, "unable to create char dev (%d, %d)\n",
  1867				smmute_major, minor);
  1868			ret = PTR_ERR(smmute->chrdev);
  1869			goto err_free_minor;
  1870		}
  1871		smmute->minor = minor;
  1872	
  1873		atomic64_set(&smmute->files_ida, 0);
  1874		smmute->files_set = kset_create_and_add("files", NULL, &smmute->chrdev->kobj);
  1875		if (!smmute->files_set)
  1876			goto err_device_destroy;
  1877	
  1878		smmute->tasks_set = kset_create_and_add("tasks", NULL, &smmute->chrdev->kobj);
  1879		if (!smmute->tasks_set)
  1880			goto err_release_files;
  1881	
  1882		ret = iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_SVA);
  1883		if (ret) {
  1884			dev_warn(dev, "failed to initialize SVA (%d)\n", ret);
  1885		} else {
  1886			dev_info(dev, "enabled SVA feature\n");
  1887			/* Sanity-check for the API */
> 1888			ret = iommu_dev_has_feature(dev, IOMMU_DEV_FEAT_SVA);
  1889			if (!ret)
  1890				dev_warn(dev, "enabled SVA feature but IOMMU reports unsupported?\n");
  1891			ret = iommu_dev_feature_enabled(dev, IOMMU_DEV_FEAT_SVA);
  1892			if (!ret)
  1893				dev_warn(dev, "SVA feature not enabled?\n");
  1894			smmute->sva = true;
  1895		}
  1896	
  1897		ret = iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_AUX);
  1898		if (ret) {
  1899			dev_warn(dev, "failed to initalize AUX (%d)\n", ret);
  1900		} else {
  1901			dev_info(dev, "enabled AUX feature\n");
  1902	
  1903			ret = iommu_dev_has_feature(dev, IOMMU_DEV_FEAT_AUX);
  1904			if (!ret)
  1905				dev_warn(dev, "enabled AUX feature but IOMMU reports unsupported?\n");
  1906			ret = iommu_dev_feature_enabled(dev, IOMMU_DEV_FEAT_AUX);
  1907			if (!ret)
  1908				dev_warn(dev, "AUX feature not enabled?\n");
  1909			smmute->aux = true;
  1910		}
  1911	
  1912		ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64));
  1913		if (ret) {
  1914			dev_warn(dev, "failed to set requested DMA mask\n");
  1915			ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
  1916			if (ret) {
  1917				dev_err(dev, "failed to set DMA mask\n");
  1918				goto err_release_tasks;
  1919			}
  1920		}
  1921	
  1922		ret = smmute_init_msi_pool(smmute);
  1923		if (ret)
  1924			goto err_release_tasks;
  1925	
  1926		mutex_lock(&smmute_devices_mutex);
  1927		list_add(&smmute->list, &smmute_devices);
  1928		mutex_unlock(&smmute_devices_mutex);
  1929	
  1930		dev_info(dev, "has %zux2 pages of %zu frames\n", smmute->nr_pairs,
  1931			 SMMUTE_FRAMES_PER_PAGE);
  1932	
  1933		/* TODO: self-test */
  1934	
  1935		return 0;
  1936	
  1937	err_release_tasks:
  1938		kset_unregister(smmute->tasks_set);
  1939	err_release_files:
  1940		kset_unregister(smmute->files_set);
  1941	err_device_destroy:
  1942		device_destroy(smmute_class, MKDEV(smmute_major, smmute->minor));
  1943	err_free_minor:
  1944		ida_simple_remove(&smmute_minor_ida, minor);
  1945	err_destroy_fd_cache:
  1946		kmem_cache_destroy(smmute->file_desc_cache);
  1947	err_destroy_dma_cache:
  1948		kmem_cache_destroy(smmute->dma_regions_cache);
  1949	err_destroy_transaction_cache:
  1950		kmem_cache_destroy(smmute->transaction_cache);
  1951	err_free_frames:
  1952		devm_kfree(smmute->dev, smmute->reserved_frames);
  1953	
  1954		return ret;
  1955	}
  1956	

---
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: 41686 bytes --]

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

only message in thread, other threads:[~2021-03-16 19:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-16 19:25 [lpieralisi:gic/v4-1-vsgi-disable 2/4] drivers/misc/smmu-test-engine.c:1748:4: 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.