On Wed, 21 Jul 2021 19:16:09 +0300 Yishai Hadas <yishaih@xxxxxxxxxx> wrote: > From: Max Gurtovoy <mgurtovoy@xxxxxxxxxx> > > 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@xxxxxxxxxx> > Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > Signed-off-by: Yishai Hadas <yishaih@xxxxxxxxxx> > --- > 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