Re: [PATCH 12/12] vfio/pci: Introduce vfio_pci_core.ko
From: Alex Williamson <hidden>
Date: 2021-07-27 21:54:46
Also in:
kvm, linux-kbuild, linux-pci, linux-s390
On Wed, 21 Jul 2021 19:16:09 +0300 Yishai Hadas [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Max Gurtovoy <mgurtovoy@nvidia.com> Now that vfio_pci has been split into two source modules, one focusing on the "struct pci_driver" (vfio_pci.c) and a toolbox library of code (vfio_pci_core.c), complete the split and move them into two different kernel modules. As before vfio_pci.ko continues to present the same interface under sysfs and this change will have no functional impact. Splitting into another module and adding exports allows creating new HW specific VFIO PCI drivers that can implement device specific functionality, such as VFIO migration interfaces or specialized device requirements. Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Yishai Hadas <yishaih@nvidia.com> --- drivers/vfio/pci/Kconfig | 30 ++++++++------ drivers/vfio/pci/Makefile | 8 ++-- drivers/vfio/pci/vfio_pci.c | 14 ++----- drivers/vfio/pci/vfio_pci_config.c | 2 +- drivers/vfio/pci/vfio_pci_core.c | 41 ++++++++++++++++--- drivers/vfio/pci/vfio_pci_igd.c | 2 +- drivers/vfio/pci/vfio_pci_intrs.c | 2 +- drivers/vfio/pci/vfio_pci_rdwr.c | 2 +- drivers/vfio/pci/vfio_pci_zdev.c | 2 +- .../pci => include/linux}/vfio_pci_core.h | 2 - 10 files changed, 66 insertions(+), 39 deletions(-) rename {drivers/vfio/pci => include/linux}/vfio_pci_core.h (99%)diff --git a/drivers/vfio/pci/Kconfig b/drivers/vfio/pci/Kconfig index afdab7d71e98..18898ae49919 100644 --- a/drivers/vfio/pci/Kconfig +++ b/drivers/vfio/pci/Kconfig@@ -1,19 +1,31 @@ # SPDX-License-Identifier: GPL-2.0-only -config VFIO_PCI +config VFIO_PCI_CORE tristate "VFIO support for PCI devices" depends on PCI depends on MMU select VFIO_VIRQFD select IRQ_BYPASS_MANAGER help - Support for the PCI VFIO bus driver. This is required to make - use of PCI drivers using the VFIO framework. + Support for using PCI devices with VFIO. + +if VFIO_PCI_CORE +config VFIO_PCI_MMAP + def_bool y if !S390 + +config VFIO_PCI_INTX + def_bool y if !S390 + +config VFIO_PCI + tristate "Generic VFIO support for any PCI device" + help + Support for the generic PCI VFIO bus driver which can connect any + PCI device to the VFIO framework. If you don't know what to do here, say N.
I'm still not happy with how this is likely to break users and even downstreams when upgrading to a Kconfig with this change. A previously selected VFIO_PCI comes out disabled unless the user is keen enough to enable VFIO_PCI_CORE. I think I'd prefer to sacrifice the purity of the menus to pull VFIO_PCI out of the if block and have it select VFIO_PCI_CORE. Thanks, Alex