qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@redhat.com>
To: qemu-devel@nongnu.org, Alex Williamson <alex.williamson@redhat.com>
Cc: Avihai Horon <avihaih@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Zhenzhong Duan <zhenzhong.duan@intel.com>,
	John Levon <john.levon@nutanix.com>,
	Joao Martins <joao.m.martins@oracle.com>
Subject: Re: [PATCH v3 00/37] vfio: Spring cleanup
Date: Fri, 25 Apr 2025 09:57:31 +0200	[thread overview]
Message-ID: <0342e4c4-d40e-4daa-b96d-a0af66534429@redhat.com> (raw)
In-Reply-To: <20250422160224.199714-1-clg@redhat.com>

On 4/22/25 18:01, Cédric Le Goater wrote:
> Hello,
> 
> Several large extensions were merged in VFIO recently: migration
> support with dirty tracking, support for different host IOMMU backend
> devices, multifd support, etc. This adds up to the previous
> extensions: vfio-platform, AP, CCW. The result is that VFIO is now a
> subsystem of over +16,000 lines of code :
> 
>    QEMU 2.0  :   3988 total
>                   ...
>    QEMU 10.0 :  16607 total
> 
> Organization is weak, naming inconsistent, the vfio-common.h header
> file and common.c are quite messy. It's time to address the technical
> debt before adding new features.
> 
> This proposal reorganizes some of the VFIO files to isolate features,
> introduces new files and renames services to better reflect the
> namespace they belong to. This is code reshuffling and there are no
> intentional functional changes. If more could be done, please propose !
> Timing seems right.
> 
> 
> I have taken care to preserve all existing copyright notices in the
> file headers. I have added one on behalf of my current employer for
> newly created files. However, original authors may wish to include
> their own notices as well. If so, please respond to the patch, and I
> will update the patch in the next spin or before applying.
> 
> Here is a (short) list requiring your attention :
>    
>    * include/hw/vfio/vfio-migration.h
>    * hw/vfio/vfio-migration-internal.h
>      Kirti Wankhede and Avihai Horon, NVIDIA
>    
>    * hw/vfio/vfio-iommufd.h
>      Joao Martins and Yi Liu, Oracle and Intel
>    
>    * include/hw/vfio/vfio-region.h
>    * hw/vfio/region.c
>      Eric Auger, may be we could reduce the list ?
> 
> I think the remaining new files are correctly covered but I am human,
> so please review and let me know.
> 
> I hope we can merge this when the QEMU 10.1 cycle starts and then
> address the two large series waiting : live update and vfio-user.
> 
> 
> What next in terms of cleanups :
> 
>   - container.c is quite messy
>   - the pci* files need some love too (add vfio- prefix ?)
>   - improve overall documentation, structs and routines documentation
>     would be great
>   - isolate all the low level routines (kvm ioctls) into helpers.c
>     to improve build ?
>   - improve build to reduce the number of files built per target
>     https://lore.kernel.org/qemu-devel/20250308230917.18907-1-philmd@linaro.org
>   - continue the never ending quest of adding 'Error **' parameters,
>     Look for migration_file_set_error, in MemoryListener handlers :
>        vfio_listener_region_add
>        vfio_listener_log_global_stop
>        vfio_listener_log_sync
>     and in callback routines for IOMMU notifiers :
>        vfio_iommu_map_notify
>        vfio_iommu_map_dirty_notify
>     memory_region_iommu_replay() would be a start.
>   - remove vfio-platform (start of QEMU 10.2 cycle ~ September 2025)
> 
> Thanks,
> 
> C.
> 
> 
> Changes in v3:
> 
>   - Fixed commit log typos
>   - Removed hw/vfio/vfio-migration.h include from
>     hw/vfio/migration-multifd.c
>   - Added hw/vfio/vfio-region.h include in hw/vfio/pci.h
>   - Adjusted Copyright in hw/vfio/vfio-cpr.h
>   - Renamed vfio_container_vioc_query_dirty_bitmap() to
>     vfio_container_iommu_query_dirty_bitmap()
>   - Improved hw/vfio/vfio-device.h header description
>   - Fixed code alignment when renaming VFIODevice related services
>   
> Changes in v2:
> 
>   - Dropped vfio_migration_set_error()
>     https://lore.kernel.org/qemu-devel/20250324123315.637827-1-clg@redhat.com/
>   - Dropped R-b trailers on patches which were modified too much
>     (context changes are ok)
>   - Improved commit logs of patches adding new files
>   - Fixed top comment in header files
>   - Used a 'vfio_migration_' prefix instead of 'vfio_mig_'
>   - Made vfio_migration_add_bytes_transferred() internal
>   - Added extra patch for vfio_device_state_is_running/precopy()
>   - Moved vfio_reset_handler() in device.c
>   - Moved "dirty tracking" related services into container-base.c and
>     improved naming
>   - Introduced listener.* files instead of dirty-tracking.*
>   - Introduced vfio_listener_un/register() routines
> 
> 
> Cédric Le Goater (37):
>    vfio: Move vfio_mig_active() into migration.c
>    vfio: Rename vfio_reset_bytes_transferred()
>    vfio: Introduce a new header file for external migration services
>    vfio: Make vfio_un/block_multiple_devices_migration() static
>    vfio: Make vfio_viommu_preset() static
>    vfio: Introduce a new header file for internal migration services
>    vfio: Move vfio_device_state_is_running/precopy() into migration.c
>    vfio: Introduce a new header file for VFIOdisplay declarations
>    vfio: Move VFIOHostDMAWindow definition into spapr.c
>    vfio: Introduce a new header file for VFIOIOMMUFD declarations
>    vfio: Introduce new files for VFIORegion definitions and declarations
>    vfio: Introduce a new header file for VFIOcontainer declarations
>    vfio: Make vfio_group_list static
>    vfio: Move VFIOAddressSpace helpers into container-base.c
>    vfio: Move Host IOMMU type declarations into their respective files
>    vfio: Introduce a new header file for helper services
>    vfio: Move vfio_get_info_dma_avail() into helpers.c
>    vfio: Move vfio_kvm_device_add/del_fd() to helpers.c
>    vfio: Move vfio_get_device_info() to helpers.c
>    vfio: Introduce a new file for VFIODevice definitions
>    vfio: Introduce new files for CPR definitions and declarations
>    vfio: Move vfio_kvm_device_fd() into helpers.c
>    vfio: Move vfio_device_list into device.c
>    vfio: Move vfio_de/attach_device() into device.c
>    vfio: Move vfio_reset_handler() into device.c
>    vfio: Move dirty tracking related services into container-base.c
>    vfio: Make vfio_devices_query_dirty_bitmap() static
>    vfio: Make vfio_container_query_dirty_bitmap() static
>    vfio: Rename vfio_devices_all_dirty_tracking_started()
>    vfio: Rename vfio_devices_all_device_dirty_tracking()
>    vfio: Rename vfio_get_dirty_bitmap()
>    vfio: Introduce new files for VFIO MemoryListener
>    vfio: Rename RAM discard related services
>    vfio: Introduce vfio_listener_un/register() routines
>    vfio: Rename vfio-common.h to vfio-device.h
>    vfio: Rename VFIODevice related services
>    vfio: Rename VFIOContainer related services
> 
>   hw/vfio/migration-multifd.h           |   2 +-
>   hw/vfio/pci.h                         |   4 +-
>   hw/vfio/vfio-cpr.h                    |  15 +
>   hw/vfio/vfio-display.h                |  42 ++
>   hw/vfio/vfio-helpers.h                |  35 ++
>   hw/vfio/vfio-iommufd.h                |  34 ++
>   hw/vfio/vfio-listener.h               |  15 +
>   hw/vfio/vfio-migration-internal.h     |  74 +++
>   include/hw/s390x/vfio-ccw.h           |   2 +-
>   include/hw/vfio/vfio-common.h         | 346 -------------
>   include/hw/vfio/vfio-container-base.h |  12 +-
>   include/hw/vfio/vfio-container.h      |  36 ++
>   include/hw/vfio/vfio-device.h         | 149 ++++++
>   include/hw/vfio/vfio-migration.h      |  16 +
>   include/hw/vfio/vfio-platform.h       |   4 +-
>   include/hw/vfio/vfio-region.h         |  47 ++
>   backends/iommufd.c                    |   2 +-
>   hw/core/sysbus-fdt.c                  |   1 +
>   hw/ppc/spapr_pci_vfio.c               |   6 +-
>   hw/s390x/s390-pci-vfio.c              |   3 +-
>   hw/vfio/ap.c                          |  14 +-
>   hw/vfio/ccw.c                         |  30 +-
>   hw/vfio/container-base.c              | 192 ++++++-
>   hw/vfio/container.c                   | 123 ++---
>   hw/vfio/cpr.c                         |   3 +-
>   hw/vfio/device.c                      | 405 +++++++++++++++
>   hw/vfio/display.c                     |  10 +-
>   hw/vfio/helpers.c                     | 702 +++-----------------------
>   hw/vfio/igd.c                         |  10 +-
>   hw/vfio/iommufd.c                     |  24 +-
>   hw/vfio/{common.c => listener.c}      | 455 +----------------
>   hw/vfio/migration-multifd.c           |   7 +-
>   hw/vfio/migration.c                   | 111 +++-
>   hw/vfio/pci.c                         |  70 +--
>   hw/vfio/platform.c                    |  15 +-
>   hw/vfio/region.c                      | 395 +++++++++++++++
>   hw/vfio/spapr.c                       |  10 +-
>   migration/target.c                    |   8 +-
>   hw/vfio/meson.build                   |  10 +-
>   hw/vfio/trace-events                  |  36 +-
>   40 files changed, 1875 insertions(+), 1600 deletions(-)
>   create mode 100644 hw/vfio/vfio-cpr.h
>   create mode 100644 hw/vfio/vfio-display.h
>   create mode 100644 hw/vfio/vfio-helpers.h
>   create mode 100644 hw/vfio/vfio-iommufd.h
>   create mode 100644 hw/vfio/vfio-listener.h
>   create mode 100644 hw/vfio/vfio-migration-internal.h
>   delete mode 100644 include/hw/vfio/vfio-common.h
>   create mode 100644 include/hw/vfio/vfio-container.h
>   create mode 100644 include/hw/vfio/vfio-device.h
>   create mode 100644 include/hw/vfio/vfio-migration.h
>   create mode 100644 include/hw/vfio/vfio-region.h
>   create mode 100644 hw/vfio/device.c
>   rename hw/vfio/{common.c => listener.c} (76%)
>   create mode 100644 hw/vfio/region.c
> 

Rebased on HEAD and applied to vfio-next.

Thanks,

C.




      parent reply	other threads:[~2025-04-25  7:58 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-22 16:01 [PATCH v3 00/37] vfio: Spring cleanup Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 01/37] vfio: Move vfio_mig_active() into migration.c Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 02/37] vfio: Rename vfio_reset_bytes_transferred() Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 03/37] vfio: Introduce a new header file for external migration services Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 04/37] vfio: Make vfio_un/block_multiple_devices_migration() static Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 05/37] vfio: Make vfio_viommu_preset() static Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 06/37] vfio: Introduce a new header file for internal migration services Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 07/37] vfio: Move vfio_device_state_is_running/precopy() into migration.c Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 08/37] vfio: Introduce a new header file for VFIOdisplay declarations Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 09/37] vfio: Move VFIOHostDMAWindow definition into spapr.c Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 10/37] vfio: Introduce a new header file for VFIOIOMMUFD declarations Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 11/37] vfio: Introduce new files for VFIORegion definitions and declarations Cédric Le Goater
2025-04-22 16:01 ` [PATCH v3 12/37] vfio: Introduce a new header file for VFIOcontainer declarations Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 13/37] vfio: Make vfio_group_list static Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 14/37] vfio: Move VFIOAddressSpace helpers into container-base.c Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 15/37] vfio: Move Host IOMMU type declarations into their respective files Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 16/37] vfio: Introduce a new header file for helper services Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 17/37] vfio: Move vfio_get_info_dma_avail() into helpers.c Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 18/37] vfio: Move vfio_kvm_device_add/del_fd() to helpers.c Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 19/37] vfio: Move vfio_get_device_info() " Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 20/37] vfio: Introduce a new file for VFIODevice definitions Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 21/37] vfio: Introduce new files for CPR definitions and declarations Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 22/37] vfio: Move vfio_kvm_device_fd() into helpers.c Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 23/37] vfio: Move vfio_device_list into device.c Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 24/37] vfio: Move vfio_de/attach_device() " Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 25/37] vfio: Move vfio_reset_handler() " Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 26/37] vfio: Move dirty tracking related services into container-base.c Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 27/37] vfio: Make vfio_devices_query_dirty_bitmap() static Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 28/37] vfio: Make vfio_container_query_dirty_bitmap() static Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 29/37] vfio: Rename vfio_devices_all_dirty_tracking_started() Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 30/37] vfio: Rename vfio_devices_all_device_dirty_tracking() Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 31/37] vfio: Rename vfio_get_dirty_bitmap() Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 32/37] vfio: Introduce new files for VFIO MemoryListener Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 33/37] vfio: Rename RAM discard related services Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 34/37] vfio: Introduce vfio_listener_un/register() routines Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 35/37] vfio: Rename vfio-common.h to vfio-device.h Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 36/37] vfio: Rename VFIODevice related services Cédric Le Goater
2025-04-22 16:02 ` [PATCH v3 37/37] vfio: Rename VFIOContainer " Cédric Le Goater
2025-04-22 16:55 ` [PATCH v3 00/37] vfio: Spring cleanup Cédric Le Goater
2025-04-25  7:57 ` Cédric Le Goater [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0342e4c4-d40e-4daa-b96d-a0af66534429@redhat.com \
    --to=clg@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=avihaih@nvidia.com \
    --cc=eric.auger@redhat.com \
    --cc=joao.m.martins@oracle.com \
    --cc=john.levon@nutanix.com \
    --cc=qemu-devel@nongnu.org \
    --cc=zhenzhong.duan@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).