There are a bunch of reported randconfig failures now because of this, something like: >> arch/powerpc/kvm/../../../virt/kvm/vfio.c:89:7: warning: attribute declaration must precede definition [-Wignored-attributes] fn = symbol_get(vfio_file_iommu_group); ^ include/linux/module.h:805:60: note: expanded from macro 'symbol_get' #define symbol_get(x) ({ extern typeof(x) x __attribute__((weak,visibility("hidden"))); &(x); }) It happens because the arch forces KVM_VFIO without knowing if VFIO is even enabled. Split the kconfig so the arch selects the usual HAVE_KVM_ARCH_VFIO and then KVM_VFIO is only enabled if the arch wants it and VFIO is turned on. Reported-by: kernel test robot <lkp@xxxxxxxxx> Closes: https://lore.kernel.org/oe-kbuild-all/202308251949.5IiaV0sz-lkp@xxxxxxxxx/ Closes: https://lore.kernel.org/oe-kbuild-all/202309030741.82aLACDG-lkp@xxxxxxxxx/ Closes: https://lore.kernel.org/oe-kbuild-all/202309110914.QLH0LU6L-lkp@xxxxxxxxx/ Cc: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> Fixes: c1cce6d079b8 ("vfio: Compile vfio_group infrastructure optionally") Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx> --- arch/arm64/kvm/Kconfig | 2 +- arch/powerpc/kvm/Kconfig | 2 +- arch/s390/kvm/Kconfig | 2 +- arch/x86/kvm/Kconfig | 2 +- virt/kvm/Kconfig | 7 ++++++- 5 files changed, 10 insertions(+), 5 deletions(-) Sean's large series will also address this: https://lore.kernel.org/kvm/20230916003118.2540661-7-seanjc@xxxxxxxxxx/ I don't know if it is sever enough to fix in the rc cycle, but here is the patch. diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig index 83c1e09be42e5b..7c43eaea51ce05 100644 --- a/arch/arm64/kvm/Kconfig +++ b/arch/arm64/kvm/Kconfig @@ -28,7 +28,7 @@ menuconfig KVM select KVM_MMIO select KVM_GENERIC_DIRTYLOG_READ_PROTECT select KVM_XFER_TO_GUEST_WORK - select KVM_VFIO + select HAVE_KVM_ARCH_VFIO select HAVE_KVM_EVENTFD select HAVE_KVM_IRQFD select HAVE_KVM_DIRTY_RING_ACQ_REL diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig index 902611954200df..b64824e4cbc1eb 100644 --- a/arch/powerpc/kvm/Kconfig +++ b/arch/powerpc/kvm/Kconfig @@ -22,7 +22,7 @@ config KVM select PREEMPT_NOTIFIERS select HAVE_KVM_EVENTFD select HAVE_KVM_VCPU_ASYNC_IOCTL - select KVM_VFIO + select HAVE_KVM_ARCH_VFIO select IRQ_BYPASS_MANAGER select HAVE_KVM_IRQ_BYPASS select INTERVAL_TREE diff --git a/arch/s390/kvm/Kconfig b/arch/s390/kvm/Kconfig index 45fdf2a9b2e326..d206ad3a777d5d 100644 --- a/arch/s390/kvm/Kconfig +++ b/arch/s390/kvm/Kconfig @@ -31,7 +31,7 @@ config KVM select HAVE_KVM_IRQ_ROUTING select HAVE_KVM_INVALID_WAKEUPS select HAVE_KVM_NO_POLL - select KVM_VFIO + select HAVE_KVM_ARCH_VFIO select INTERVAL_TREE select MMU_NOTIFIER help diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig index ed90f148140dfe..8e70e693f90e30 100644 --- a/arch/x86/kvm/Kconfig +++ b/arch/x86/kvm/Kconfig @@ -45,7 +45,7 @@ config KVM select HAVE_KVM_NO_POLL select KVM_XFER_TO_GUEST_WORK select KVM_GENERIC_DIRTYLOG_READ_PROTECT - select KVM_VFIO + select HAVE_KVM_ARCH_VFIO select INTERVAL_TREE select HAVE_KVM_PM_NOTIFIER if PM select KVM_GENERIC_HARDWARE_ENABLING diff --git a/virt/kvm/Kconfig b/virt/kvm/Kconfig index 484d0873061ca5..0bf34809e1bbfe 100644 --- a/virt/kvm/Kconfig +++ b/virt/kvm/Kconfig @@ -59,9 +59,14 @@ config HAVE_KVM_MSI config HAVE_KVM_CPU_RELAX_INTERCEPT bool -config KVM_VFIO +config HAVE_KVM_ARCH_VFIO bool +config KVM_VFIO + def_bool y + depends on HAVE_KVM_ARCH_VFIO + depends on VFIO + config HAVE_KVM_INVALID_WAKEUPS bool base-commit: 0bb80ecc33a8fb5a682236443c1e740d5c917d1d -- 2.42.0