Re: [PATCH v2 4/4] vfio: Fold vfio_virqfd.ko into vfio.ko

Cornelia Huck
2022-10-05T16:37:29Z

On Mon, Oct 03 2022, Jason Gunthorpe <jgg@nvidia.com> wrote:

> This is only 1.8k, putting it in its own module is going to waste more
> space rounding up to a PAGE_SIZE than it is worth. Put it in the main
> vfio.ko module now that kbuild can support multiple .c files.
>
> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> ---
> drivers/vfio/Makefile | 4 +---
> drivers/vfio/vfio.h | 13 +++++++++++++
> drivers/vfio/vfio_main.c | 7 +++++++
> drivers/vfio/virqfd.c | 16 ++--------------
> 4 files changed, 23 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/vfio/Makefile b/drivers/vfio/Makefile
> index 50b8e8e3fb10dd..0721ed4831c92f 100644
> --- a/drivers/vfio/Makefile
> +++ b/drivers/vfio/Makefile
> @@ -1,13 +1,11 @@
> # SPDX-License-Identifier: GPL-2.0
> -vfio_virqfd-y := virqfd.o
> -
> obj-$(CONFIG_VFIO) += vfio.o
>
> vfio-y += vfio_main.o \
> iova_bitmap.o \
> container.o
> +vfio-$(CONFIG_VFIO_VIRQFD) += virqfd.o

I think you need to make VFIO_VIRQFD bool instead of tristate now?

>
> -obj-$(CONFIG_VFIO_VIRQFD) += vfio_virqfd.o
> obj-$(CONFIG_VFIO_IOMMU_TYPE1) += vfio_iommu_type1.o
> obj-$(CONFIG_VFIO_IOMMU_SPAPR_TCE) += vfio_iommu_spapr_tce.o
> obj-$(CONFIG_VFIO_PCI) += pci/

(...)

> diff --git a/drivers/vfio/virqfd.c b/drivers/vfio/virqfd.c
> index 414e98d82b02e5..0ff3c1519df0bd 100644
> --- a/drivers/vfio/virqfd.c
> +++ b/drivers/vfio/virqfd.c
> @@ -13,14 +13,10 @@
> #include <linux/module.h>
> #include <linux/slab.h>

And this needs an #include "vfio.h", I think?

>
> -#define DRIVER_VERSION "0.1"
> -#define DRIVER_AUTHOR "Alex Williamson <alex.williamson@redhat.com>"
> -#define DRIVER_DESC "IRQFD support for VFIO bus drivers"
> -
> static struct workqueue_struct *vfio_irqfd_cleanup_wq;
> static DEFINE_SPINLOCK(virqfd_lock);
>
> -static int __init vfio_virqfd_init(void)
> +int __init vfio_virqfd_init(void)
> {
> vfio_irqfd_cleanup_wq =
> create_singlethread_workqueue("vfio-irqfd-cleanup");
> @@ -30,7 +26,7 @@ static int __init vfio_virqfd_init(void)
> return 0;
> }
>
> -static void __exit vfio_virqfd_exit(void)
> +void vfio_virqfd_exit(void)
> {
> destroy_workqueue(vfio_irqfd_cleanup_wq);
> }
> @@ -216,11 +212,3 @@ void vfio_virqfd_disable(struct virqfd **pvirqfd)
> flush_workqueue(vfio_irqfd_cleanup_wq);
> }
> EXPORT_SYMBOL_GPL(vfio_virqfd_disable);
> -
> -module_init(vfio_virqfd_init);
> -module_exit(vfio_virqfd_exit);
> -
> -MODULE_VERSION(DRIVER_VERSION);
> -MODULE_LICENSE("GPL v2");
> -MODULE_AUTHOR(DRIVER_AUTHOR);
> -MODULE_DESCRIPTION(DRIVER_DESC);