From: Jason Wang <jasowang@redhat.com>
To: Parav Pandit <parav@nvidia.com>,
virtualization@lists.linux-foundation.org
Cc: elic@nvidia.com, mst@redhat.com
Subject: Re: [PATCH linux-next v3 1/6] vdpa: Introduce and use vdpa device get, set config helpers
Date: Tue, 22 Jun 2021 15:08:09 +0800 [thread overview]
Message-ID: <b17a9a6b-04eb-af29-949e-a3bc8ab7c132@redhat.com> (raw)
In-Reply-To: <20210616191155.102303-2-parav@nvidia.com>
在 2021/6/17 上午3:11, Parav Pandit 写道:
> Subsequent patches enable get and set configuration either
> via management device or via vdpa device' config ops.
>
> This requires synchronization between multiple callers to get and set
> config callbacks. Features setting also influence the layout of the
> configuration fields endianness.
>
> To avoid exposing synchronization primitives to callers, introduce
> helper for setting the configuration and use it.
>
> Signed-off-by: Parav Pandit <parav@nvidia.com>
> Reviewed-by: Eli Cohen <elic@nvidia.com>
Acked-by: Jason Wang <jasowang@redhat.com>
> ---
> changelog:
> v1->v2
> - new patch to have synchronized access to features and config space
> ---
> drivers/vdpa/vdpa.c | 36 ++++++++++++++++++++++++++++++++++++
> drivers/vhost/vdpa.c | 3 +--
> include/linux/vdpa.h | 18 ++++--------------
> 3 files changed, 41 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c
> index bb3f1d1f0422..bc44cdc34114 100644
> --- a/drivers/vdpa/vdpa.c
> +++ b/drivers/vdpa/vdpa.c
> @@ -284,6 +284,42 @@ void vdpa_mgmtdev_unregister(struct vdpa_mgmt_dev *mdev)
> }
> EXPORT_SYMBOL_GPL(vdpa_mgmtdev_unregister);
>
> +/**
> + * vdpa_get_config - Get one or more device configuration fields.
> + * @vdev: vdpa device to operate on
> + * @offset: starting byte offset of the field
> + * @buf: buffer pointer to read to
> + * @len: length of the configuration fields in bytes
> + */
> +void vdpa_get_config(struct vdpa_device *vdev, unsigned int offset,
> + void *buf, unsigned int len)
> +{
> + const struct vdpa_config_ops *ops = vdev->config;
> +
> + /*
> + * Config accesses aren't supposed to trigger before features are set.
> + * If it does happen we assume a legacy guest.
> + */
> + if (!vdev->features_valid)
> + vdpa_set_features(vdev, 0);
> + ops->get_config(vdev, offset, buf, len);
> +}
> +EXPORT_SYMBOL_GPL(vdpa_get_config);
> +
> +/**
> + * vdpa_set_config - Set one or more device configuration fields.
> + * @vdev: vdpa device to operate on
> + * @offset: starting byte offset of the field
> + * @buf: buffer pointer to read from
> + * @length: length of the configuration fields in bytes
> + */
> +void vdpa_set_config(struct vdpa_device *vdev, unsigned int offset,
> + void *buf, unsigned int length)
> +{
> + vdev->config->set_config(vdev, offset, buf, length);
> +}
> +EXPORT_SYMBOL_GPL(vdpa_set_config);
> +
> static bool mgmtdev_handle_match(const struct vdpa_mgmt_dev *mdev,
> const char *busname, const char *devname)
> {
> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
> index fb41db3da611..908b4fb251b3 100644
> --- a/drivers/vhost/vdpa.c
> +++ b/drivers/vhost/vdpa.c
> @@ -231,7 +231,6 @@ static long vhost_vdpa_set_config(struct vhost_vdpa *v,
> struct vhost_vdpa_config __user *c)
> {
> struct vdpa_device *vdpa = v->vdpa;
> - const struct vdpa_config_ops *ops = vdpa->config;
> struct vhost_vdpa_config config;
> unsigned long size = offsetof(struct vhost_vdpa_config, buf);
> u8 *buf;
> @@ -245,7 +244,7 @@ static long vhost_vdpa_set_config(struct vhost_vdpa *v,
> if (IS_ERR(buf))
> return PTR_ERR(buf);
>
> - ops->set_config(vdpa, config.off, buf, config.len);
> + vdpa_set_config(vdpa, config.off, buf, config.len);
>
> kvfree(buf);
> return 0;
> diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h
> index f311d227aa1b..993d99519452 100644
> --- a/include/linux/vdpa.h
> +++ b/include/linux/vdpa.h
> @@ -332,20 +332,10 @@ static inline int vdpa_set_features(struct vdpa_device *vdev, u64 features)
> return ops->set_features(vdev, features);
> }
>
> -
> -static inline void vdpa_get_config(struct vdpa_device *vdev, unsigned offset,
> - void *buf, unsigned int len)
> -{
> - const struct vdpa_config_ops *ops = vdev->config;
> -
> - /*
> - * Config accesses aren't supposed to trigger before features are set.
> - * If it does happen we assume a legacy guest.
> - */
> - if (!vdev->features_valid)
> - vdpa_set_features(vdev, 0);
> - ops->get_config(vdev, offset, buf, len);
> -}
> +void vdpa_get_config(struct vdpa_device *vdev, unsigned int offset,
> + void *buf, unsigned int len);
> +void vdpa_set_config(struct vdpa_device *dev, unsigned int offset,
> + void *buf, unsigned int length);
>
> /**
> * struct vdpa_mgmtdev_ops - vdpa device ops
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2021-06-22 7:08 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-16 19:11 [PATCH linux-next v3 0/6] vdpa: enable user to set mac, mtu Parav Pandit
2021-06-16 19:11 ` [PATCH linux-next v3 1/6] vdpa: Introduce and use vdpa device get, set config helpers Parav Pandit
2021-06-22 7:08 ` Jason Wang [this message]
2021-06-16 19:11 ` [PATCH linux-next v3 2/6] vdpa: Introduce query of device config layout Parav Pandit
2021-06-22 7:20 ` Jason Wang
2021-06-22 14:03 ` Parav Pandit
2021-06-23 4:08 ` Jason Wang
2021-06-23 4:22 ` Parav Pandit
2021-06-24 5:43 ` Jason Wang
2021-06-24 6:29 ` Parav Pandit
2021-06-24 7:05 ` Jason Wang
2021-06-24 7:59 ` Parav Pandit
2021-06-25 3:28 ` Jason Wang
2021-06-25 6:45 ` Parav Pandit
2021-06-28 5:03 ` Jason Wang
2021-06-28 10:56 ` Parav Pandit
2021-06-29 3:52 ` Jason Wang
2021-06-29 9:49 ` Parav Pandit
2021-06-30 4:31 ` Jason Wang
2021-06-30 6:03 ` Parav Pandit
2021-07-01 3:34 ` Jason Wang
2021-07-01 7:00 ` Parav Pandit
2021-07-01 7:43 ` Jason Wang
2021-07-02 6:04 ` Parav Pandit
2021-07-05 4:35 ` Jason Wang
2021-07-06 17:07 ` Parav Pandit
2021-07-07 4:03 ` Jason Wang
2021-06-28 22:39 ` Michael S. Tsirkin
2021-06-29 3:41 ` Jason Wang
2021-06-29 20:01 ` Michael S. Tsirkin
2021-06-30 3:46 ` Jason Wang
2021-06-16 19:11 ` [PATCH linux-next v3 3/6] vdpa: Enable user to set mac and mtu of vdpa device Parav Pandit
2021-06-22 7:43 ` Jason Wang
2021-06-22 14:09 ` Parav Pandit
2021-06-16 19:11 ` [PATCH linux-next v3 4/6] vdpa_sim_net: Enable user to set mac address and mtu Parav Pandit
2021-06-16 19:11 ` [PATCH linux-next v3 5/6] vdpa/mlx5: Support configuration of MAC Parav Pandit
2021-06-16 19:11 ` [PATCH linux-next v3 6/6] vdpa/mlx5: Forward only packets with allowed MAC address Parav Pandit
2021-08-05 9:57 ` [PATCH linux-next v3 0/6] vdpa: enable user to set mac, mtu Michael S. Tsirkin
2021-08-05 10:13 ` Parav Pandit via Virtualization
2021-08-05 12:05 ` Michael S. Tsirkin
2021-08-06 2:50 ` Jason Wang
2021-08-06 8:42 ` Michael S. Tsirkin
2021-08-06 8:55 ` Parav Pandit via Virtualization
2021-08-09 3:07 ` Jason Wang
2021-08-09 3:13 ` Parav Pandit via Virtualization
2021-08-09 3:29 ` Jason Wang
[not found] ` <20210809052121.GA209158@mtl-vdi-166.wap.labs.mlnx>
2021-08-09 5:42 ` Parav Pandit via Virtualization
[not found] ` <20210809055748.GA210406@mtl-vdi-166.wap.labs.mlnx>
2021-08-09 6:01 ` Parav Pandit via Virtualization
[not found] ` <20210809060746.GA210718@mtl-vdi-166.wap.labs.mlnx>
2021-08-09 6:10 ` Parav Pandit via Virtualization
2021-08-09 7:05 ` Jason Wang
2021-08-16 20:51 ` Michael S. Tsirkin
2021-08-09 9:40 ` Michael S. Tsirkin
2021-08-09 9:51 ` Parav Pandit via Virtualization
2021-08-16 20:54 ` Michael S. Tsirkin
2021-08-18 3:14 ` Parav Pandit via Virtualization
2021-08-18 4:31 ` Jason Wang
2021-08-18 4:36 ` Parav Pandit via Virtualization
2021-08-19 4:18 ` Jason Wang
2021-08-18 17:33 ` Michael S. Tsirkin
2021-08-19 4:22 ` Jason Wang
2021-08-19 5:23 ` Parav Pandit via Virtualization
2021-08-19 7:15 ` Jason Wang
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=b17a9a6b-04eb-af29-949e-a3bc8ab7c132@redhat.com \
--to=jasowang@redhat.com \
--cc=elic@nvidia.com \
--cc=mst@redhat.com \
--cc=parav@nvidia.com \
--cc=virtualization@lists.linux-foundation.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 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).