All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Burakov, Anatoly" <anatoly.burakov@intel.com>
To: Mingjin Ye <mingjinx.ye@intel.com>, <dev@dpdk.org>
Cc: <qiming.yang@intel.com>, <stable@dpdk.org>
Subject: Re: [PATCH] vfio: add get device info API
Date: Fri, 24 Nov 2023 15:09:03 +0100	[thread overview]
Message-ID: <cfce6179-1667-27ac-e34c-219d1f05243e@intel.com> (raw)
In-Reply-To: <20231114104816.527818-1-mingjinx.ye@intel.com>

On 11/14/2023 11:48 AM, Mingjin Ye wrote:
> This patch adds an API to support getting device information.
> 
> The driver can use the "rte_vfio_get_device_info" helper to get
> device information from EAL.
> 
> Cc: stable@dpdk.org
> 
> Signed-off-by: Mingjin Ye <mingjinx.ye@intel.com>
> ---
>   lib/eal/include/rte_vfio.h | 26 ++++++++++++++++++++++++++
>   lib/eal/linux/eal_vfio.c   | 19 +++++++++++++++++++
>   lib/eal/version.map        |  1 +
>   3 files changed, 46 insertions(+)
> 
> diff --git a/lib/eal/include/rte_vfio.h b/lib/eal/include/rte_vfio.h
> index 3487c4f2a2..b3f55963e3 100644
> --- a/lib/eal/include/rte_vfio.h
> +++ b/lib/eal/include/rte_vfio.h
> @@ -212,6 +212,32 @@ int
>   rte_vfio_get_group_num(const char *sysfs_base,
>   		      const char *dev_addr, int *iommu_group_num);
>   
> +/**
> + * Get device information
> + *
> + * This function is only relevant to linux and will return
> + * an error on BSD.
> + *
> + * @param sysfs_base
> + *   sysfs path prefix.
> + *
> + * @param dev_addr
> + *   device location.
> + *
> + * @param vfio_dev_fd
> + *   VFIO fd.
> + *
> + * @param device_info
> + *   Device information.
> + *
> + * @return
> + *   0 on success.
> + *   <0 on failure.
> + */
> +int
> +rte_vfio_get_device_info(const char *sysfs_base, const char *dev_addr,
> +			int *vfio_dev_fd, struct vfio_device_info *device_info);
> +
>   /**
>    * Open a new VFIO container fd
>    *
> diff --git a/lib/eal/linux/eal_vfio.c b/lib/eal/linux/eal_vfio.c
> index ad3c1654b2..5810d9fcd7 100644
> --- a/lib/eal/linux/eal_vfio.c
> +++ b/lib/eal/linux/eal_vfio.c
> @@ -1222,6 +1222,25 @@ vfio_set_iommu_type(int vfio_container_fd)
>   	return NULL;
>   }
>   
> +int
> +rte_vfio_get_device_info(const char *sysfs_base, const char *dev_addr,
> +			int *vfio_dev_fd, struct vfio_device_info *device_info)
> +{
> +	if (!device_info || *vfio_dev_fd < 0)
> +		return -1;

Do we not need to check other parameters? E.g. sysfs_base, dev_addr, 
vfio_dev_fd itself (could be NULL dereference).

> +
> +	if (*vfio_dev_fd == 0) {
> +		if (rte_vfio_setup_device(sysfs_base, dev_addr,
> +				vfio_dev_fd, device_info))
> +			return -1;
> +	} else {
> +		if (ioctl(*vfio_dev_fd, VFIO_DEVICE_GET_INFO, &device_info))
> +			return -1;
> +	}

Couldn't this just be an `else if`?

Would also be nice to have some DEBUG output here.

With all of the above addressed,

Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>

> +
> +	return 0;
> +}
> +
>   int
>   vfio_has_supported_extensions(int vfio_container_fd)
>   {
> diff --git a/lib/eal/version.map b/lib/eal/version.map
> index e00a844805..8b4a9c237e 100644
> --- a/lib/eal/version.map
> +++ b/lib/eal/version.map
> @@ -300,6 +300,7 @@ DPDK_24 {
>   	rte_vfio_noiommu_is_enabled; # WINDOWS_NO_EXPORT
>   	rte_vfio_release_device; # WINDOWS_NO_EXPORT
>   	rte_vfio_setup_device; # WINDOWS_NO_EXPORT
> +	rte_vfio_get_device_info; # WINDOWS_NO_EXPORT
>   	rte_zmalloc;
>   	rte_zmalloc_socket;
>   

-- 
Thanks,
Anatoly


  parent reply	other threads:[~2023-11-24 14:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-14 10:48 [PATCH] vfio: add get device info API Mingjin Ye
2023-11-15  0:12 ` Stephen Hemminger
2023-11-15  7:54   ` Ye, MingjinX
2023-11-15 15:09     ` Stephen Hemminger
2023-11-24 14:09 ` Burakov, Anatoly [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-11-14 10:23 Mingjin Ye
2023-11-15  6:13 ` Chenbo Xia

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=cfce6179-1667-27ac-e34c-219d1f05243e@intel.com \
    --to=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    --cc=mingjinx.ye@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=stable@dpdk.org \
    /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.