tree: https://github.com/ammarfaizi2/linux-block tglx/devel/devmsi head: de8254e5291a22e0fcee0d9ea466a7781cbf6c76 commit: c8aa40727635961bbb57cc0791eafee16da3ad43 [16/93] PCI/MSI: Get rid of PCI_MSI_IRQ_DOMAIN config: arc-randconfig-r043-20221114 compiler: arceb-elf-gcc (GCC) 12.1.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/ammarfaizi2/linux-block/commit/c8aa40727635961bbb57cc0791eafee16da3ad43 git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block git fetch --no-tags ammarfaizi2-block tglx/devel/devmsi git checkout c8aa40727635961bbb57cc0791eafee16da3ad43 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc SHELL=/bin/bash drivers/vfio/pci/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot 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:370:17: error: implicit declaration of function 'pci_write_msi_msg' [-Werror=implicit-function-declaration] 370 | pci_write_msi_msg(irq, &msg); | ^~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/pci_write_msi_msg +370 drivers/vfio/pci/vfio_pci_intrs.c 89e1f7d4c66d85 Alex Williamson 2012-07-31 317 536475109c8284 Max Gurtovoy 2021-08-26 318 static int vfio_msi_set_vector_signal(struct vfio_pci_core_device *vdev, 89e1f7d4c66d85 Alex Williamson 2012-07-31 319 int vector, int fd, bool msix) 89e1f7d4c66d85 Alex Williamson 2012-07-31 320 { 89e1f7d4c66d85 Alex Williamson 2012-07-31 321 struct pci_dev *pdev = vdev->pdev; 89e1f7d4c66d85 Alex Williamson 2012-07-31 322 struct eventfd_ctx *trigger; b95d9305e8cb8d Alex Williamson 2016-02-22 323 int irq, ret; abafbc551fdded Alex Williamson 2020-04-22 324 u16 cmd; 89e1f7d4c66d85 Alex Williamson 2012-07-31 325 b95d9305e8cb8d Alex Williamson 2016-02-22 326 if (vector < 0 || vector >= vdev->num_ctx) 89e1f7d4c66d85 Alex Williamson 2012-07-31 327 return -EINVAL; 89e1f7d4c66d85 Alex Williamson 2012-07-31 328 61771468e0a567 Christoph Hellwig 2016-09-11 329 irq = pci_irq_vector(pdev, vector); b95d9305e8cb8d Alex Williamson 2016-02-22 330 89e1f7d4c66d85 Alex Williamson 2012-07-31 331 if (vdev->ctx[vector].trigger) { 6d7425f109d262 Feng Wu 2015-09-18 332 irq_bypass_unregister_producer(&vdev->ctx[vector].producer); abafbc551fdded Alex Williamson 2020-04-22 333 abafbc551fdded Alex Williamson 2020-04-22 334 cmd = vfio_pci_memory_lock_and_enable(vdev); d567fb88191620 Jiang Yi 2019-11-27 335 free_irq(irq, vdev->ctx[vector].trigger); abafbc551fdded Alex Williamson 2020-04-22 336 vfio_pci_memory_unlock_and_restore(vdev, cmd); abafbc551fdded Alex Williamson 2020-04-22 337 89e1f7d4c66d85 Alex Williamson 2012-07-31 338 kfree(vdev->ctx[vector].name); 89e1f7d4c66d85 Alex Williamson 2012-07-31 339 eventfd_ctx_put(vdev->ctx[vector].trigger); 89e1f7d4c66d85 Alex Williamson 2012-07-31 340 vdev->ctx[vector].trigger = NULL; 89e1f7d4c66d85 Alex Williamson 2012-07-31 341 } 89e1f7d4c66d85 Alex Williamson 2012-07-31 342 89e1f7d4c66d85 Alex Williamson 2012-07-31 343 if (fd < 0) 89e1f7d4c66d85 Alex Williamson 2012-07-31 344 return 0; 89e1f7d4c66d85 Alex Williamson 2012-07-31 345 b95d9305e8cb8d Alex Williamson 2016-02-22 346 vdev->ctx[vector].name = kasprintf(GFP_KERNEL, "vfio-msi%s[%d](%s)", b95d9305e8cb8d Alex Williamson 2016-02-22 347 msix ? "x" : "", vector, b95d9305e8cb8d Alex Williamson 2016-02-22 348 pci_name(pdev)); 89e1f7d4c66d85 Alex Williamson 2012-07-31 349 if (!vdev->ctx[vector].name) 89e1f7d4c66d85 Alex Williamson 2012-07-31 350 return -ENOMEM; 89e1f7d4c66d85 Alex Williamson 2012-07-31 351 89e1f7d4c66d85 Alex Williamson 2012-07-31 352 trigger = eventfd_ctx_fdget(fd); 89e1f7d4c66d85 Alex Williamson 2012-07-31 353 if (IS_ERR(trigger)) { 89e1f7d4c66d85 Alex Williamson 2012-07-31 354 kfree(vdev->ctx[vector].name); 89e1f7d4c66d85 Alex Williamson 2012-07-31 355 return PTR_ERR(trigger); 89e1f7d4c66d85 Alex Williamson 2012-07-31 356 } 89e1f7d4c66d85 Alex Williamson 2012-07-31 357 b8f02af096b1fc Gavin Shan 2014-09-29 358 /* b8f02af096b1fc Gavin Shan 2014-09-29 359 * The MSIx vector table resides in device memory which may be cleared b8f02af096b1fc Gavin Shan 2014-09-29 360 * via backdoor resets. We don't allow direct access to the vector b8f02af096b1fc Gavin Shan 2014-09-29 361 * table so even if a userspace driver attempts to save/restore around b8f02af096b1fc Gavin Shan 2014-09-29 362 * such a reset it would be unsuccessful. To avoid this, restore the b8f02af096b1fc Gavin Shan 2014-09-29 363 * cached value of the message prior to enabling. b8f02af096b1fc Gavin Shan 2014-09-29 364 */ abafbc551fdded Alex Williamson 2020-04-22 365 cmd = vfio_pci_memory_lock_and_enable(vdev); b8f02af096b1fc Gavin Shan 2014-09-29 366 if (msix) { b8f02af096b1fc Gavin Shan 2014-09-29 367 struct msi_msg msg; b8f02af096b1fc Gavin Shan 2014-09-29 368 b8f02af096b1fc Gavin Shan 2014-09-29 369 get_cached_msi_msg(irq, &msg); 83a18912b0e8d2 Jiang Liu 2014-11-09 @370 pci_write_msi_msg(irq, &msg); b8f02af096b1fc Gavin Shan 2014-09-29 371 } b8f02af096b1fc Gavin Shan 2014-09-29 372 89e1f7d4c66d85 Alex Williamson 2012-07-31 373 ret = request_irq(irq, vfio_msihandler, 0, 89e1f7d4c66d85 Alex Williamson 2012-07-31 374 vdev->ctx[vector].name, trigger); abafbc551fdded Alex Williamson 2020-04-22 375 vfio_pci_memory_unlock_and_restore(vdev, cmd); 89e1f7d4c66d85 Alex Williamson 2012-07-31 376 if (ret) { 89e1f7d4c66d85 Alex Williamson 2012-07-31 377 kfree(vdev->ctx[vector].name); 89e1f7d4c66d85 Alex Williamson 2012-07-31 378 eventfd_ctx_put(trigger); 89e1f7d4c66d85 Alex Williamson 2012-07-31 379 return ret; 89e1f7d4c66d85 Alex Williamson 2012-07-31 380 } 89e1f7d4c66d85 Alex Williamson 2012-07-31 381 6d7425f109d262 Feng Wu 2015-09-18 382 vdev->ctx[vector].producer.token = trigger; 6d7425f109d262 Feng Wu 2015-09-18 383 vdev->ctx[vector].producer.irq = irq; 6d7425f109d262 Feng Wu 2015-09-18 384 ret = irq_bypass_register_producer(&vdev->ctx[vector].producer); 852b1beecb6ff9 Alex Williamson 2020-10-19 385 if (unlikely(ret)) { 6d7425f109d262 Feng Wu 2015-09-18 386 dev_info(&pdev->dev, 6d7425f109d262 Feng Wu 2015-09-18 387 "irq bypass producer (token %p) registration fails: %d\n", 6d7425f109d262 Feng Wu 2015-09-18 388 vdev->ctx[vector].producer.token, ret); 6d7425f109d262 Feng Wu 2015-09-18 389 852b1beecb6ff9 Alex Williamson 2020-10-19 390 vdev->ctx[vector].producer.token = NULL; 852b1beecb6ff9 Alex Williamson 2020-10-19 391 } 89e1f7d4c66d85 Alex Williamson 2012-07-31 392 vdev->ctx[vector].trigger = trigger; 89e1f7d4c66d85 Alex Williamson 2012-07-31 393 89e1f7d4c66d85 Alex Williamson 2012-07-31 394 return 0; 89e1f7d4c66d85 Alex Williamson 2012-07-31 395 } 89e1f7d4c66d85 Alex Williamson 2012-07-31 396 :::::: The code at line 370 was first introduced by commit :::::: 83a18912b0e8d275001bca6fc9c0fe519d98f280 PCI/MSI: Rename write_msi_msg() to pci_write_msi_msg() :::::: TO: Jiang Liu :::::: CC: Thomas Gleixner -- 0-DAY CI Kernel Test Service https://01.org/lkp