[PATCH 08/40] vdpa: add back vhost_vdpa_net_first_nc_vdpa

Si-Wei Liu posted 40 patches 11 months, 3 weeks ago
[PATCH 08/40] vdpa: add back vhost_vdpa_net_first_nc_vdpa
Posted by Si-Wei Liu 11 months, 3 weeks ago
Previous commits had it removed. Now adding it back because
this function will be needed by next patches.

Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
---
 net/vhost-vdpa.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
index dbfa192..c9bfc6f 100644
--- a/net/vhost-vdpa.c
+++ b/net/vhost-vdpa.c
@@ -287,6 +287,16 @@ static ssize_t vhost_vdpa_receive(NetClientState *nc, const uint8_t *buf,
     return size;
 }
 
+
+/** From any vdpa net client, get the netclient of the first queue pair */
+static VhostVDPAState *vhost_vdpa_net_first_nc_vdpa(VhostVDPAState *s)
+{
+    NICState *nic = qemu_get_nic(s->nc.peer);
+    NetClientState *nc0 = qemu_get_peer(nic->ncs, 0);
+
+    return DO_UPCAST(VhostVDPAState, nc, nc0);
+}
+
 static void vhost_vdpa_net_log_global_enable(VhostVDPAState *s, bool enable)
 {
     struct vhost_vdpa *v = &s->vhost_vdpa;
@@ -566,7 +576,7 @@ dma_map_err:
 
 static int vhost_vdpa_net_cvq_start(NetClientState *nc)
 {
-    VhostVDPAState *s;
+    VhostVDPAState *s, *s0;
     struct vhost_vdpa *v;
     int64_t cvq_group;
     int r;
@@ -577,7 +587,8 @@ static int vhost_vdpa_net_cvq_start(NetClientState *nc)
     s = DO_UPCAST(VhostVDPAState, nc, nc);
     v = &s->vhost_vdpa;
 
-    v->shadow_vqs_enabled = v->shared->shadow_data;
+    s0 = vhost_vdpa_net_first_nc_vdpa(s);
+    v->shadow_vqs_enabled = s0->vhost_vdpa.shadow_vqs_enabled;
     s->vhost_vdpa.address_space_id = VHOST_VDPA_GUEST_PA_ASID;
 
     if (v->shared->shadow_data) {
-- 
1.8.3.1
Re: [PATCH 08/40] vdpa: add back vhost_vdpa_net_first_nc_vdpa
Posted by Jason Wang 10 months, 2 weeks ago
On Fri, Dec 8, 2023 at 2:52 AM Si-Wei Liu <si-wei.liu@oracle.com> wrote:
>
> Previous commits had it removed. Now adding it back because
> this function will be needed by next patches.

Need some description to explain why. Because it should not be needed
as we have a "parent" structure now, anything that is common could be
stored there?

Thanks
Re: [PATCH 08/40] vdpa: add back vhost_vdpa_net_first_nc_vdpa
Posted by Eugenio Perez Martin 11 months, 3 weeks ago
On Thu, Dec 7, 2023 at 7:52 PM Si-Wei Liu <si-wei.liu@oracle.com> wrote:
>
> Previous commits had it removed. Now adding it back because
> this function will be needed by next patches.
>
> Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
> ---
>  net/vhost-vdpa.c | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> index dbfa192..c9bfc6f 100644
> --- a/net/vhost-vdpa.c
> +++ b/net/vhost-vdpa.c
> @@ -287,6 +287,16 @@ static ssize_t vhost_vdpa_receive(NetClientState *nc, const uint8_t *buf,
>      return size;
>  }
>
> +

Extra newline.

> +/** From any vdpa net client, get the netclient of the first queue pair */
> +static VhostVDPAState *vhost_vdpa_net_first_nc_vdpa(VhostVDPAState *s)
> +{
> +    NICState *nic = qemu_get_nic(s->nc.peer);
> +    NetClientState *nc0 = qemu_get_peer(nic->ncs, 0);
> +
> +    return DO_UPCAST(VhostVDPAState, nc, nc0);
> +}
> +
>  static void vhost_vdpa_net_log_global_enable(VhostVDPAState *s, bool enable)
>  {
>      struct vhost_vdpa *v = &s->vhost_vdpa;
> @@ -566,7 +576,7 @@ dma_map_err:
>
>  static int vhost_vdpa_net_cvq_start(NetClientState *nc)
>  {
> -    VhostVDPAState *s;
> +    VhostVDPAState *s, *s0;
>      struct vhost_vdpa *v;
>      int64_t cvq_group;
>      int r;
> @@ -577,7 +587,8 @@ static int vhost_vdpa_net_cvq_start(NetClientState *nc)
>      s = DO_UPCAST(VhostVDPAState, nc, nc);
>      v = &s->vhost_vdpa;
>
> -    v->shadow_vqs_enabled = v->shared->shadow_data;
> +    s0 = vhost_vdpa_net_first_nc_vdpa(s);
> +    v->shadow_vqs_enabled = s0->vhost_vdpa.shadow_vqs_enabled;
>      s->vhost_vdpa.address_space_id = VHOST_VDPA_GUEST_PA_ASID;

I'm wondering if shared->shadow_data is more correct now.

Either way:

Reviewed-by: Eugenio Pérez <eperezma@redhat.com>

Thanks!

>
>      if (v->shared->shadow_data) {
> --
> 1.8.3.1
>
>