All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger@redhat.com>
To: Joao Martins <joao.m.martins@oracle.com>, qemu-devel@nongnu.org
Cc: Yi Liu <yi.l.liu@intel.com>,
	Zhenzhong Duan <zhenzhong.duan@intel.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Cedric Le Goater <clg@redhat.com>,
	Jason Gunthorpe <jgg@nvidia.com>,
	Avihai Horon <avihaih@nvidia.com>
Subject: Re: [PATCH v5 01/13] vfio/pci: Extract mdev check into an helper
Date: Tue, 23 Jul 2024 09:00:40 +0200	[thread overview]
Message-ID: <50cf5507-ca71-47ac-bc24-8845982b99ad@redhat.com> (raw)
In-Reply-To: <20240719120501.81279-2-joao.m.martins@oracle.com>



On 7/19/24 14:04, Joao Martins wrote:
> In preparation to skip initialization of the HostIOMMUDevice for mdev,
> extract the checks that validate if a device is an mdev into helpers.
>
> A vfio_device_is_mdev() is created, and subsystems consult VFIODevice::mdev
> to check if it's mdev or not.
>
> Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>

Eric
> ---
>  include/hw/vfio/vfio-common.h |  2 ++
>  hw/vfio/helpers.c             | 14 ++++++++++++++
>  hw/vfio/pci.c                 | 12 +++---------
>  3 files changed, 19 insertions(+), 9 deletions(-)
>
> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
> index e8ddf92bb185..98acae8c1c97 100644
> --- a/include/hw/vfio/vfio-common.h
> +++ b/include/hw/vfio/vfio-common.h
> @@ -116,6 +116,7 @@ typedef struct VFIODevice {
>      DeviceState *dev;
>      int fd;
>      int type;
> +    bool mdev;
>      bool reset_works;
>      bool needs_reset;
>      bool no_mmap;
> @@ -231,6 +232,7 @@ void vfio_region_exit(VFIORegion *region);
>  void vfio_region_finalize(VFIORegion *region);
>  void vfio_reset_handler(void *opaque);
>  struct vfio_device_info *vfio_get_device_info(int fd);
> +bool vfio_device_is_mdev(VFIODevice *vbasedev);
>  bool vfio_attach_device(char *name, VFIODevice *vbasedev,
>                          AddressSpace *as, Error **errp);
>  void vfio_detach_device(VFIODevice *vbasedev);
> diff --git a/hw/vfio/helpers.c b/hw/vfio/helpers.c
> index b14edd46edc9..7e23e9080c9d 100644
> --- a/hw/vfio/helpers.c
> +++ b/hw/vfio/helpers.c
> @@ -675,3 +675,17 @@ int vfio_device_get_aw_bits(VFIODevice *vdev)
>  
>      return HOST_IOMMU_DEVICE_CAP_AW_BITS_MAX;
>  }
> +
> +bool vfio_device_is_mdev(VFIODevice *vbasedev)
> +{
> +    g_autofree char *subsys = NULL;
> +    g_autofree char *tmp = NULL;
> +
> +    if (!vbasedev->sysfsdev) {
> +        return false;
> +    }
> +
> +    tmp = g_strdup_printf("%s/subsystem", vbasedev->sysfsdev);
> +    subsys = realpath(tmp, NULL);
> +    return subsys && (strcmp(subsys, "/sys/bus/mdev") == 0);
> +}
> diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
> index e03d9f3ba546..b34e91468a53 100644
> --- a/hw/vfio/pci.c
> +++ b/hw/vfio/pci.c
> @@ -2963,12 +2963,9 @@ static void vfio_realize(PCIDevice *pdev, Error **errp)
>      ERRP_GUARD();
>      VFIOPCIDevice *vdev = VFIO_PCI(pdev);
>      VFIODevice *vbasedev = &vdev->vbasedev;
> -    char *subsys;
>      int i, ret;
> -    bool is_mdev;
>      char uuid[UUID_STR_LEN];
>      g_autofree char *name = NULL;
> -    g_autofree char *tmp = NULL;
>  
>      if (vbasedev->fd < 0 && !vbasedev->sysfsdev) {
>          if (!(~vdev->host.domain || ~vdev->host.bus ||
> @@ -2997,14 +2994,11 @@ static void vfio_realize(PCIDevice *pdev, Error **errp)
>       * stays in sync with the active working set of the guest driver.  Prevent
>       * the x-balloon-allowed option unless this is minimally an mdev device.
>       */
> -    tmp = g_strdup_printf("%s/subsystem", vbasedev->sysfsdev);
> -    subsys = realpath(tmp, NULL);
> -    is_mdev = subsys && (strcmp(subsys, "/sys/bus/mdev") == 0);
> -    free(subsys);
> +    vbasedev->mdev = vfio_device_is_mdev(vbasedev);
>  
> -    trace_vfio_mdev(vbasedev->name, is_mdev);
> +    trace_vfio_mdev(vbasedev->name, vbasedev->mdev);
>  
> -    if (vbasedev->ram_block_discard_allowed && !is_mdev) {
> +    if (vbasedev->ram_block_discard_allowed && !vbasedev->mdev) {
>          error_setg(errp, "x-balloon-allowed only potentially compatible "
>                     "with mdev devices");
>          goto error;



  parent reply	other threads:[~2024-07-23  7:01 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-19 12:04 [PATCH v5 00/13] hw/iommufd: IOMMUFD Dirty Tracking Joao Martins
2024-07-19 12:04 ` [PATCH v5 01/13] vfio/pci: Extract mdev check into an helper Joao Martins
2024-07-19 14:09   ` Cédric Le Goater
2024-07-22  5:13   ` Duan, Zhenzhong
2024-07-23  7:00   ` Eric Auger [this message]
2024-07-19 12:04 ` [PATCH v5 02/13] vfio/iommufd: Don't initialize nor set a HOST_IOMMU_DEVICE with mdev Joao Martins
2024-07-19 12:04 ` [PATCH v5 03/13] backends/iommufd: Extend iommufd_backend_get_device_info() to fetch HW capabilities Joao Martins
2024-07-19 12:04 ` [PATCH v5 04/13] vfio/iommufd: Return errno in iommufd_cdev_attach_ioas_hwpt() Joao Martins
2024-07-19 12:04 ` [PATCH v5 05/13] vfio/iommufd: Introduce auto domain creation Joao Martins
2024-07-22  5:16   ` Duan, Zhenzhong
2024-07-22  8:50     ` Joao Martins
2024-07-22 14:21       ` Cédric Le Goater
2024-07-23  2:36         ` Duan, Zhenzhong
2024-07-23  4:36       ` Duan, Zhenzhong
2024-07-19 12:04 ` [PATCH v5 06/13] vfio/{iommufd,container}: Remove caps::aw_bits Joao Martins
2024-07-22  5:22   ` Duan, Zhenzhong
2024-07-22  8:53     ` Joao Martins
2024-07-23  5:30       ` Duan, Zhenzhong
2024-07-19 12:04 ` [PATCH v5 07/13] vfio/iommufd: Add hw_caps field to HostIOMMUDeviceCaps Joao Martins
2024-07-22 14:06   ` Cédric Le Goater
2024-07-19 12:04 ` [PATCH v5 08/13] vfio/{iommufd, container}: Invoke HostIOMMUDevice::realize() during attach_device() Joao Martins via
2024-07-19 14:10   ` [PATCH v5 08/13] vfio/{iommufd,container}: " Cédric Le Goater
2024-07-22  5:32   ` Duan, Zhenzhong
2024-07-19 12:04 ` [PATCH v5 09/13] vfio/iommufd: Probe and request hwpt dirty tracking capability Joao Martins
2024-07-22  6:05   ` Duan, Zhenzhong
2024-07-22  8:58     ` Joao Martins
2024-07-22 14:09       ` Joao Martins
2024-07-22 14:13         ` Joao Martins
2024-07-23  3:07           ` Duan, Zhenzhong
2024-07-19 12:04 ` [PATCH v5 10/13] vfio/iommufd: Implement VFIOIOMMUClass::set_dirty_tracking support Joao Martins
2024-07-22  6:15   ` Duan, Zhenzhong
2024-07-19 12:04 ` [PATCH v5 11/13] vfio/iommufd: Implement VFIOIOMMUClass::query_dirty_bitmap support Joao Martins
2024-07-22  6:16   ` Duan, Zhenzhong
2024-07-19 12:05 ` [PATCH v5 12/13] vfio/migration: Don't block migration device dirty tracking is unsupported Joao Martins
2024-07-19 14:17   ` Cédric Le Goater
2024-07-19 14:24     ` Joao Martins
2024-07-19 15:32       ` Joao Martins
2024-07-19 17:26       ` Joao Martins
2024-07-22 14:53         ` Cédric Le Goater
2024-07-22 15:01           ` Joao Martins
2024-07-22 15:13             ` Cédric Le Goater
2024-07-22 15:42               ` Joao Martins
2024-07-22 15:58                 ` Cédric Le Goater
2024-07-22 16:29                   ` Joao Martins
2024-07-22 17:04                     ` Cédric Le Goater
2024-07-22 17:15                       ` Cédric Le Goater
2024-07-22 18:08                         ` Joao Martins
2024-07-22 18:01                       ` Joao Martins
2024-07-23  6:38                         ` Cédric Le Goater
2024-07-19 12:05 ` [PATCH v5 13/13] vfio/common: Allow disabling device dirty page tracking Joao Martins
2024-07-19 12:13 ` [PATCH v5 00/13] hw/iommufd: IOMMUFD Dirty Tracking Joao Martins
2024-07-19 22:19 ` [PATCH v5.1 12/13] vfio/migration: Don't block migration device dirty tracking is unsupported Joao Martins
2024-07-22 13:51 ` [PATCH v5 00/13] hw/iommufd: IOMMUFD Dirty Tracking Cédric Le Goater

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=50cf5507-ca71-47ac-bc24-8845982b99ad@redhat.com \
    --to=eric.auger@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=avihaih@nvidia.com \
    --cc=clg@redhat.com \
    --cc=jgg@nvidia.com \
    --cc=joao.m.martins@oracle.com \
    --cc=qemu-devel@nongnu.org \
    --cc=yi.l.liu@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.