Message ID | 6ae72f609a21cfc56bf655cd4bcded5d07691ce7.1712647890.git.mst@redhat.com |
---|---|
State | New |
Headers | show |
Series | [PULL,1/7] Revert "hw/virtio: Add support for VDPA network simulation devices" | expand |
09.04.2024 10:32, Michael S. Tsirkin пишет: > From: lyx634449800 <yuxue.liu@jaguarmicro.com> > > 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> > Message-Id: <20240408020003.1979-1-yuxue.liu@jaguarmicro.com> > Reviewed-by: Michael S. Tsirkin <mst@redhat.com> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Ditto, is this a -stable material (for 8.2)? Thanks, /mjt > 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); > } >
09.04.2024 20:43, Michael Tokarev: > 09.04.2024 10:32, Michael S. Tsirkin: >> From: lyx634449800 <yuxue.liu@jaguarmicro.com> >> >> 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> >> Message-Id: <20240408020003.1979-1-yuxue.liu@jaguarmicro.com> >> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> >> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > Ditto, is this a -stable material (for 8.2)? Yes it is, it has already been Cc'ed to qemu-stable. Please excuse me for the noise. /mjt
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); }