qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@redhat.com>
To: Zhenzhong Duan <zhenzhong.duan@intel.com>, qemu-devel@nongnu.org
Cc: alex.williamson@redhat.com, jgg@nvidia.com, nicolinc@nvidia.com,
	joao.m.martins@oracle.com, eric.auger@redhat.com,
	peterx@redhat.com, jasowang@redhat.com, kevin.tian@intel.com,
	yi.l.liu@intel.com, yi.y.sun@intel.com, chao.p.peng@intel.com
Subject: Re: [PATCH v6 18/21] vfio: Make VFIOContainerBase poiner parameter const in VFIOIOMMUOps callbacks
Date: Tue, 14 Nov 2023 15:05:12 +0100	[thread overview]
Message-ID: <66c63ea1-4c61-4804-a53f-b74e49c73adb@redhat.com> (raw)
In-Reply-To: <20231114100955.1961974-19-zhenzhong.duan@intel.com>

On 11/14/23 11:09, Zhenzhong Duan wrote:
> Some of the callbacks in VFIOIOMMUOps pass VFIOContainerBase poiner,
> those callbacks only need read access to the sub object of VFIOContainerBase.
> So make VFIOContainerBase, VFIOContainer and VFIOIOMMUFDContainer as const
> in these callbacks.
> 
> Local functions called by those callbacks also need same changes to avoid
> build error.
> 
> Suggested-by: Cédric Le Goater <clg@redhat.com>
> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>


Reviewed-by: Cédric Le Goater <clg@redhat.com>

Thanks,

C.


> ---
>   include/hw/vfio/vfio-common.h         | 12 ++++++----
>   include/hw/vfio/vfio-container-base.h | 12 ++++++----
>   hw/vfio/common.c                      |  9 +++----
>   hw/vfio/container-base.c              |  2 +-
>   hw/vfio/container.c                   | 34 ++++++++++++++-------------
>   hw/vfio/iommufd.c                     |  8 +++----
>   6 files changed, 42 insertions(+), 35 deletions(-)
> 
> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
> index 567e5f7bea..7954531d05 100644
> --- a/include/hw/vfio/vfio-common.h
> +++ b/include/hw/vfio/vfio-common.h
> @@ -244,13 +244,15 @@ bool vfio_migration_realize(VFIODevice *vbasedev, Error **errp);
>   void vfio_migration_exit(VFIODevice *vbasedev);
>   
>   int vfio_bitmap_alloc(VFIOBitmap *vbmap, hwaddr size);
> -bool vfio_devices_all_running_and_mig_active(VFIOContainerBase *bcontainer);
> -bool vfio_devices_all_device_dirty_tracking(VFIOContainerBase *bcontainer);
> -int vfio_devices_query_dirty_bitmap(VFIOContainerBase *bcontainer,
> +bool
> +vfio_devices_all_running_and_mig_active(const VFIOContainerBase *bcontainer);
> +bool
> +vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer);
> +int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>                                       VFIOBitmap *vbmap, hwaddr iova,
>                                       hwaddr size);
> -int vfio_get_dirty_bitmap(VFIOContainerBase *bcontainer, uint64_t iova,
> -                                 uint64_t size, ram_addr_t ram_addr);
> +int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
> +                          uint64_t size, ram_addr_t ram_addr);
>   
>   int vfio_device_get_name(VFIODevice *vbasedev, Error **errp);
>   void vfio_device_set_fd(VFIODevice *vbasedev, const char *str, Error **errp);
> diff --git a/include/hw/vfio/vfio-container-base.h b/include/hw/vfio/vfio-container-base.h
> index 45bb19c767..2ae297ccda 100644
> --- a/include/hw/vfio/vfio-container-base.h
> +++ b/include/hw/vfio/vfio-container-base.h
> @@ -82,7 +82,7 @@ void vfio_container_del_section_window(VFIOContainerBase *bcontainer,
>                                          MemoryRegionSection *section);
>   int vfio_container_set_dirty_page_tracking(VFIOContainerBase *bcontainer,
>                                              bool start);
> -int vfio_container_query_dirty_bitmap(VFIOContainerBase *bcontainer,
> +int vfio_container_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>                                         VFIOBitmap *vbmap,
>                                         hwaddr iova, hwaddr size);
>   
> @@ -93,18 +93,20 @@ void vfio_container_destroy(VFIOContainerBase *bcontainer);
>   
>   struct VFIOIOMMUOps {
>       /* basic feature */
> -    int (*dma_map)(VFIOContainerBase *bcontainer,
> +    int (*dma_map)(const VFIOContainerBase *bcontainer,
>                      hwaddr iova, ram_addr_t size,
>                      void *vaddr, bool readonly);
> -    int (*dma_unmap)(VFIOContainerBase *bcontainer,
> +    int (*dma_unmap)(const VFIOContainerBase *bcontainer,
>                        hwaddr iova, ram_addr_t size,
>                        IOMMUTLBEntry *iotlb);
>       int (*attach_device)(const char *name, VFIODevice *vbasedev,
>                            AddressSpace *as, Error **errp);
>       void (*detach_device)(VFIODevice *vbasedev);
>       /* migration feature */
> -    int (*set_dirty_page_tracking)(VFIOContainerBase *bcontainer, bool start);
> -    int (*query_dirty_bitmap)(VFIOContainerBase *bcontainer, VFIOBitmap *vbmap,
> +    int (*set_dirty_page_tracking)(const VFIOContainerBase *bcontainer,
> +                                   bool start);
> +    int (*query_dirty_bitmap)(const VFIOContainerBase *bcontainer,
> +                              VFIOBitmap *vbmap,
>                                 hwaddr iova, hwaddr size);
>       /* PCI specific */
>       int (*pci_hot_reset)(VFIODevice *vbasedev, bool single);
> diff --git a/hw/vfio/common.c b/hw/vfio/common.c
> index 6569732b7a..08a3e57672 100644
> --- a/hw/vfio/common.c
> +++ b/hw/vfio/common.c
> @@ -204,7 +204,7 @@ static bool vfio_devices_all_dirty_tracking(VFIOContainerBase *bcontainer)
>       return true;
>   }
>   
> -bool vfio_devices_all_device_dirty_tracking(VFIOContainerBase *bcontainer)
> +bool vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer)
>   {
>       VFIODevice *vbasedev;
>   
> @@ -221,7 +221,8 @@ bool vfio_devices_all_device_dirty_tracking(VFIOContainerBase *bcontainer)
>    * Check if all VFIO devices are running and migration is active, which is
>    * essentially equivalent to the migration being in pre-copy phase.
>    */
> -bool vfio_devices_all_running_and_mig_active(VFIOContainerBase *bcontainer)
> +bool
> +vfio_devices_all_running_and_mig_active(const VFIOContainerBase *bcontainer)
>   {
>       VFIODevice *vbasedev;
>   
> @@ -1139,7 +1140,7 @@ static int vfio_device_dma_logging_report(VFIODevice *vbasedev, hwaddr iova,
>       return 0;
>   }
>   
> -int vfio_devices_query_dirty_bitmap(VFIOContainerBase *bcontainer,
> +int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>                                       VFIOBitmap *vbmap, hwaddr iova,
>                                       hwaddr size)
>   {
> @@ -1162,7 +1163,7 @@ int vfio_devices_query_dirty_bitmap(VFIOContainerBase *bcontainer,
>       return 0;
>   }
>   
> -int vfio_get_dirty_bitmap(VFIOContainerBase *bcontainer, uint64_t iova,
> +int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
>                             uint64_t size, ram_addr_t ram_addr)
>   {
>       bool all_device_dirty_tracking =
> diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c
> index eee2dcfe76..1ffd25bbfa 100644
> --- a/hw/vfio/container-base.c
> +++ b/hw/vfio/container-base.c
> @@ -63,7 +63,7 @@ int vfio_container_set_dirty_page_tracking(VFIOContainerBase *bcontainer,
>       return bcontainer->ops->set_dirty_page_tracking(bcontainer, start);
>   }
>   
> -int vfio_container_query_dirty_bitmap(VFIOContainerBase *bcontainer,
> +int vfio_container_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>                                         VFIOBitmap *vbmap,
>                                         hwaddr iova, hwaddr size)
>   {
> diff --git a/hw/vfio/container.c b/hw/vfio/container.c
> index 1dbf9b9a17..b22feb8ded 100644
> --- a/hw/vfio/container.c
> +++ b/hw/vfio/container.c
> @@ -61,11 +61,11 @@ static int vfio_ram_block_discard_disable(VFIOContainer *container, bool state)
>       }
>   }
>   
> -static int vfio_dma_unmap_bitmap(VFIOContainer *container,
> +static int vfio_dma_unmap_bitmap(const VFIOContainer *container,
>                                    hwaddr iova, ram_addr_t size,
>                                    IOMMUTLBEntry *iotlb)
>   {
> -    VFIOContainerBase *bcontainer = &container->bcontainer;
> +    const VFIOContainerBase *bcontainer = &container->bcontainer;
>       struct vfio_iommu_type1_dma_unmap *unmap;
>       struct vfio_bitmap *bitmap;
>       VFIOBitmap vbmap;
> @@ -117,11 +117,12 @@ unmap_exit:
>   /*
>    * DMA - Mapping and unmapping for the "type1" IOMMU interface used on x86
>    */
> -static int vfio_legacy_dma_unmap(VFIOContainerBase *bcontainer, hwaddr iova,
> -                                 ram_addr_t size, IOMMUTLBEntry *iotlb)
> +static int vfio_legacy_dma_unmap(const VFIOContainerBase *bcontainer,
> +                                 hwaddr iova, ram_addr_t size,
> +                                 IOMMUTLBEntry *iotlb)
>   {
> -    VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> -                                            bcontainer);
> +    const VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> +                                                  bcontainer);
>       struct vfio_iommu_type1_dma_unmap unmap = {
>           .argsz = sizeof(unmap),
>           .flags = 0,
> @@ -174,11 +175,11 @@ static int vfio_legacy_dma_unmap(VFIOContainerBase *bcontainer, hwaddr iova,
>       return 0;
>   }
>   
> -static int vfio_legacy_dma_map(VFIOContainerBase *bcontainer, hwaddr iova,
> +static int vfio_legacy_dma_map(const VFIOContainerBase *bcontainer, hwaddr iova,
>                                  ram_addr_t size, void *vaddr, bool readonly)
>   {
> -    VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> -                                            bcontainer);
> +    const VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> +                                                  bcontainer);
>       struct vfio_iommu_type1_dma_map map = {
>           .argsz = sizeof(map),
>           .flags = VFIO_DMA_MAP_FLAG_READ,
> @@ -207,11 +208,12 @@ static int vfio_legacy_dma_map(VFIOContainerBase *bcontainer, hwaddr iova,
>       return -errno;
>   }
>   
> -static int vfio_legacy_set_dirty_page_tracking(VFIOContainerBase *bcontainer,
> -                                               bool start)
> +static int
> +vfio_legacy_set_dirty_page_tracking(const VFIOContainerBase *bcontainer,
> +                                    bool start)
>   {
> -    VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> -                                            bcontainer);
> +    const VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> +                                                  bcontainer);
>       int ret;
>       struct vfio_iommu_type1_dirty_bitmap dirty = {
>           .argsz = sizeof(dirty),
> @@ -233,12 +235,12 @@ static int vfio_legacy_set_dirty_page_tracking(VFIOContainerBase *bcontainer,
>       return ret;
>   }
>   
> -static int vfio_legacy_query_dirty_bitmap(VFIOContainerBase *bcontainer,
> +static int vfio_legacy_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>                                             VFIOBitmap *vbmap,
>                                             hwaddr iova, hwaddr size)
>   {
> -    VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> -                                            bcontainer);
> +    const VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> +                                                  bcontainer);
>       struct vfio_iommu_type1_dirty_bitmap *dbitmap;
>       struct vfio_iommu_type1_dirty_bitmap_get *range;
>       int ret;
> diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
> index e08a217057..bc45dd1842 100644
> --- a/hw/vfio/iommufd.c
> +++ b/hw/vfio/iommufd.c
> @@ -26,10 +26,10 @@
>   #include "qemu/chardev_open.h"
>   #include "pci.h"
>   
> -static int iommufd_cdev_map(VFIOContainerBase *bcontainer, hwaddr iova,
> +static int iommufd_cdev_map(const VFIOContainerBase *bcontainer, hwaddr iova,
>                               ram_addr_t size, void *vaddr, bool readonly)
>   {
> -    VFIOIOMMUFDContainer *container =
> +    const VFIOIOMMUFDContainer *container =
>           container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer);
>   
>       return iommufd_backend_map_dma(container->be,
> @@ -37,11 +37,11 @@ static int iommufd_cdev_map(VFIOContainerBase *bcontainer, hwaddr iova,
>                                      iova, size, vaddr, readonly);
>   }
>   
> -static int iommufd_cdev_unmap(VFIOContainerBase *bcontainer,
> +static int iommufd_cdev_unmap(const VFIOContainerBase *bcontainer,
>                                 hwaddr iova, ram_addr_t size,
>                                 IOMMUTLBEntry *iotlb)
>   {
> -    VFIOIOMMUFDContainer *container =
> +    const VFIOIOMMUFDContainer *container =
>           container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer);
>   
>       /* TODO: Handle dma_unmap_bitmap with iotlb args (migration) */



  reply	other threads:[~2023-11-14 14:05 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-14 10:09 [PATCH v6 00/21] vfio: Adopt iommufd Zhenzhong Duan
2023-11-14 10:09 ` [PATCH v6 01/21] backends/iommufd: Introduce the iommufd object Zhenzhong Duan
2023-11-14 13:28   ` Cédric Le Goater
2023-11-15  4:06     ` Duan, Zhenzhong
2023-11-15  8:15       ` Cédric Le Goater
2023-11-15 12:52   ` Eric Auger
2023-11-16  4:04     ` Duan, Zhenzhong
2023-11-16  8:32       ` Eric Auger
2023-11-16  8:47         ` Duan, Zhenzhong
2023-11-17 11:09   ` Cédric Le Goater
2023-11-17 11:39     ` Duan, Zhenzhong
2023-11-17 12:56       ` Cédric Le Goater
2023-11-17 13:29       ` Eric Auger
2023-11-17 13:56         ` Cédric Le Goater
2023-11-20  3:06           ` Duan, Zhenzhong
2023-11-20  8:24             ` Cédric Le Goater
2023-11-20 10:07               ` Duan, Zhenzhong
2023-11-20 17:08                 ` Cédric Le Goater
2023-11-21  3:26                   ` Duan, Zhenzhong
2023-11-21  8:05                     ` Cédric Le Goater
2023-11-21  8:39                       ` Duan, Zhenzhong
2023-11-14 10:09 ` [PATCH v6 02/21] util/char_dev: Add open_cdev() Zhenzhong Duan
2023-11-14 13:29   ` Cédric Le Goater
2023-11-15 13:23   ` Eric Auger
2023-11-14 10:09 ` [PATCH v6 03/21] vfio/common: return early if space isn't empty Zhenzhong Duan
2023-11-14 13:29   ` Cédric Le Goater
2023-11-15 13:28   ` Eric Auger
2023-11-14 10:09 ` [PATCH v6 04/21] vfio/iommufd: Implement the iommufd backend Zhenzhong Duan
2023-11-14 13:36   ` Cédric Le Goater
2023-11-14 10:09 ` [PATCH v6 05/21] vfio/iommufd: Relax assert check for " Zhenzhong Duan
2023-11-15 13:56   ` Eric Auger
2023-11-14 10:09 ` [PATCH v6 06/21] vfio/iommufd: Add support for iova_ranges and pgsizes Zhenzhong Duan
2023-11-14 13:46   ` Cédric Le Goater
2023-11-15  2:36     ` Duan, Zhenzhong
2023-11-15 16:25     ` Eric Auger
2023-11-14 10:09 ` [PATCH v6 07/21] vfio/pci: Extract out a helper vfio_pci_get_pci_hot_reset_info Zhenzhong Duan
2023-11-15 17:00   ` Eric Auger
2023-11-14 10:09 ` [PATCH v6 08/21] vfio/pci: Introduce a vfio pci hot reset interface Zhenzhong Duan
2023-11-14 13:51   ` Cédric Le Goater
2023-11-15  2:55     ` Duan, Zhenzhong
2023-11-15 17:54   ` Eric Auger
2023-11-14 10:09 ` [PATCH v6 09/21] vfio/iommufd: Enable pci hot reset through iommufd cdev interface Zhenzhong Duan
2023-11-17 13:53   ` Eric Auger
2023-11-20  4:15     ` Duan, Zhenzhong
2023-11-14 10:09 ` [PATCH v6 10/21] vfio/pci: Allow the selection of a given iommu backend Zhenzhong Duan
2023-11-14 13:57   ` Cédric Le Goater
2023-11-14 10:09 ` [PATCH v6 11/21] vfio/pci: Make vfio cdev pre-openable by passing a file handle Zhenzhong Duan
2023-11-14 14:08   ` Cédric Le Goater
2023-11-15 12:09   ` Philippe Mathieu-Daudé
2023-11-15 13:05     ` Cédric Le Goater
2023-11-16  2:15       ` Duan, Zhenzhong
2023-11-16  7:25         ` Cédric Le Goater
2023-11-16  7:43           ` Duan, Zhenzhong
2023-11-14 10:09 ` [PATCH v6 12/21] vfio/platform: Allow the selection of a given iommu backend Zhenzhong Duan
2023-11-14 14:03   ` Cédric Le Goater
2023-11-17 14:55   ` Eric Auger
2023-11-14 10:09 ` [PATCH v6 13/21] vfio/platform: Make vfio cdev pre-openable by passing a file handle Zhenzhong Duan
2023-11-14 14:22   ` Cédric Le Goater
2023-11-14 10:09 ` [PATCH v6 14/21] vfio/ap: Allow the selection of a given iommu backend Zhenzhong Duan
2023-11-14 14:03   ` Cédric Le Goater
2023-11-14 10:09 ` [PATCH v6 15/21] vfio/ap: Make vfio cdev pre-openable by passing a file handle Zhenzhong Duan
2023-11-14 14:04   ` Cédric Le Goater
2023-11-14 10:09 ` [PATCH v6 16/21] vfio/ccw: Allow the selection of a given iommu backend Zhenzhong Duan
2023-11-14 14:04   ` Cédric Le Goater
2023-11-15 18:45   ` Eric Farman
2023-11-14 10:09 ` [PATCH v6 17/21] vfio/ccw: Make vfio cdev pre-openable by passing a file handle Zhenzhong Duan
2023-11-14 14:04   ` Cédric Le Goater
2023-11-15 18:46   ` Eric Farman
2023-11-14 10:09 ` [PATCH v6 18/21] vfio: Make VFIOContainerBase poiner parameter const in VFIOIOMMUOps callbacks Zhenzhong Duan
2023-11-14 14:05   ` Cédric Le Goater [this message]
2023-11-17 14:58   ` Eric Auger
2023-11-14 10:09 ` [PATCH v6 19/21] hw/arm: Activate IOMMUFD for virt machines Zhenzhong Duan
2023-11-16  9:17   ` Eric Auger
2023-11-14 10:09 ` [PATCH v6 20/21] kconfig: Activate IOMMUFD for s390x machines Zhenzhong Duan
2023-11-15 18:47   ` Eric Farman
2023-11-14 10:09 ` [PATCH v6 21/21] hw/i386: Activate IOMMUFD for q35 machines Zhenzhong Duan
2023-11-16  9:17   ` Eric Auger
2023-11-14 14:51 ` [PATCH v6 00/21] vfio: Adopt iommufd Cédric Le Goater
2023-11-15  4:16   ` Duan, Zhenzhong
2023-11-20  9:15 ` Eric Auger
2023-11-20 10:09   ` Duan, Zhenzhong
2023-11-20 11:22     ` Eric Auger

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=66c63ea1-4c61-4804-a53f-b74e49c73adb@redhat.com \
    --to=clg@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=chao.p.peng@intel.com \
    --cc=eric.auger@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=jgg@nvidia.com \
    --cc=joao.m.martins@oracle.com \
    --cc=kevin.tian@intel.com \
    --cc=nicolinc@nvidia.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=yi.l.liu@intel.com \
    --cc=yi.y.sun@intel.com \
    --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).