qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] vdpa-dev: Fix the issue of device status not updating when configuration interruption is triggered
@ 2024-04-07  3:22 lyx634449800
  2024-04-07  3:45 ` Jason Wang
  0 siblings, 1 reply; 3+ messages in thread
From: lyx634449800 @ 2024-04-07  3:22 UTC (permalink / raw)
  To: eperezma, sgarzare, mst
  Cc: qemu-stable, qemu-devel, kwolf, jasowang, yuxue.liu

The set_config callback function vhost_vdpa_device_get_config in
vdpa-dev does not fetch the current device status from the hardware
device, causing the GUEST OS to not receive the latest device status
information.

The hardware updates the config status of the vdpa device and then
notifies the OS. The GUEST OS receives an interrupt notification,
triggering a get_config access in the kernel, which then enters qemu
internally. Ultimately, the vhost_vdpa_device_get_config function of
vdpa-dev is called

One scenario encountered is when the device needs to bring down the
vdpa net device. After modifying the status field of virtio_net_config
in the hardware, it sends an interrupt notification. However, the guest
OS always receives the STATUS field as VIRTIO_NET_S_LINK_UP.

Signed-off-by: Yuxue Liu <yuxue.liu@jaguarmicro.com>
---
 hw/virtio/vdpa-dev.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c
index 13e87f06f6..64b96b226c 100644
--- a/hw/virtio/vdpa-dev.c
+++ b/hw/virtio/vdpa-dev.c
@@ -195,7 +195,14 @@ static void
 vhost_vdpa_device_get_config(VirtIODevice *vdev, uint8_t *config)
 {
     VhostVdpaDevice *s = VHOST_VDPA_DEVICE(vdev);
+    int ret;
 
+    ret = vhost_dev_get_config(&s->dev, s->config, s->config_size,
+                            NULL);
+    if (ret < 0) {
+        error_report("get device config space failed");
+        return;
+    }
     memcpy(config, s->config, s->config_size);
 }
 
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] vdpa-dev: Fix the issue of device status not updating when configuration interruption is triggered
  2024-04-07  3:22 [PATCH] vdpa-dev: Fix the issue of device status not updating when configuration interruption is triggered lyx634449800
@ 2024-04-07  3:45 ` Jason Wang
  2024-04-08  2:00   ` [PATCH v2] " lyx634449800
  0 siblings, 1 reply; 3+ messages in thread
From: Jason Wang @ 2024-04-07  3:45 UTC (permalink / raw)
  To: lyx634449800; +Cc: eperezma, sgarzare, mst, qemu-stable, qemu-devel, kwolf

On Sun, Apr 7, 2024 at 11:22 AM lyx634449800 <yuxue.liu@jaguarmicro.com> wrote:
>
> The set_config callback function vhost_vdpa_device_get_config in
> vdpa-dev does not fetch the current device status from the hardware
> device, causing the GUEST OS to not receive the latest device status

nit: no need for upper case here.

> information.
>
> The hardware updates the config status of the vdpa device and then
> notifies the OS. The GUEST OS receives an interrupt notification,
> triggering a get_config access in the kernel, which then enters qemu
> internally. Ultimately, the vhost_vdpa_device_get_config function of
> vdpa-dev is called
>
> One scenario encountered is when the device needs to bring down the
> vdpa net device. After modifying the status field of virtio_net_config
> in the hardware, it sends an interrupt notification. However, the guest
> OS always receives the STATUS field as VIRTIO_NET_S_LINK_UP.
>
> Signed-off-by: Yuxue Liu <yuxue.liu@jaguarmicro.com>

This aligns with the vhost-net support for vDPA.

Acked-by: Jason Wang <jasowang@redhat.com>

Thanks

> ---
>  hw/virtio/vdpa-dev.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c
> index 13e87f06f6..64b96b226c 100644
> --- a/hw/virtio/vdpa-dev.c
> +++ b/hw/virtio/vdpa-dev.c
> @@ -195,7 +195,14 @@ static void
>  vhost_vdpa_device_get_config(VirtIODevice *vdev, uint8_t *config)
>  {
>      VhostVdpaDevice *s = VHOST_VDPA_DEVICE(vdev);
> +    int ret;
>
> +    ret = vhost_dev_get_config(&s->dev, s->config, s->config_size,
> +                            NULL);
> +    if (ret < 0) {
> +        error_report("get device config space failed");
> +        return;
> +    }
>      memcpy(config, s->config, s->config_size);
>  }
>
> --
> 2.43.0
>



^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH v2] vdpa-dev: Fix the issue of device status not updating when configuration interruption is triggered
  2024-04-07  3:45 ` Jason Wang
@ 2024-04-08  2:00   ` lyx634449800
  0 siblings, 0 replies; 3+ messages in thread
From: lyx634449800 @ 2024-04-08  2:00 UTC (permalink / raw)
  To: jasowang, eperezma, mst, sgarzare
  Cc: kwolf, qemu-devel, qemu-stable, yuxue.liu

The set_config callback function vhost_vdpa_device_get_config in
vdpa-dev does not fetch the current device status from the hardware
device, causing the guest os to not receive the latest device status
information.

The hardware updates the config status of the vdpa device and then
notifies the os. The guest os receives an interrupt notification,
triggering a get_config access in the kernel, which then enters qemu
internally. Ultimately, the vhost_vdpa_device_get_config function of
vdpa-dev is called

One scenario encountered is when the device needs to bring down the
vdpa net device. After modifying the status field of virtio_net_config
in the hardware, it sends an interrupt notification. However, the guest
os always receives the STATUS field as VIRTIO_NET_S_LINK_UP.

Signed-off-by: Yuxue Liu <yuxue.liu@jaguarmicro.com>
Acked-by: Jason Wang <jasowang@redhat.com>
---
V2: Amending the capitalization issue in the last commit message

 hw/virtio/vdpa-dev.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c
index 13e87f06f6..64b96b226c 100644
--- a/hw/virtio/vdpa-dev.c
+++ b/hw/virtio/vdpa-dev.c
@@ -195,7 +195,14 @@ static void
 vhost_vdpa_device_get_config(VirtIODevice *vdev, uint8_t *config)
 {
     VhostVdpaDevice *s = VHOST_VDPA_DEVICE(vdev);
+    int ret;
 
+    ret = vhost_dev_get_config(&s->dev, s->config, s->config_size,
+                            NULL);
+    if (ret < 0) {
+        error_report("get device config space failed");
+        return;
+    }
     memcpy(config, s->config, s->config_size);
 }
 
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-04-08  2:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-07  3:22 [PATCH] vdpa-dev: Fix the issue of device status not updating when configuration interruption is triggered lyx634449800
2024-04-07  3:45 ` Jason Wang
2024-04-08  2:00   ` [PATCH v2] " lyx634449800

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).