diff mbox series

[RFC] virtio: Change order of appling runstate to device and bus

Message ID 20191220125245.7679-1-antonkuchin@yandex-team.ru (mailing list archive)
State New, archived
Headers show
Series [RFC] virtio: Change order of appling runstate to device and bus | expand

Commit Message

Anton Kuchin Dec. 20, 2019, 12:52 p.m. UTC
On transition to running first apply state to bus and then to device
so device can access bus functions correctly. When going to stopped
notify device first and then the bus.

Signed-off-by: Anton Kuchin <antonkuchin@yandex-team.ru>
---
 hw/virtio/virtio.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Michael S. Tsirkin Jan. 6, 2020, 12:43 p.m. UTC | #1
On Fri, Dec 20, 2019 at 03:52:45PM +0300, Anton Kuchin wrote:
> On transition to running first apply state to bus and then to device
> so device can access bus functions correctly. When going to stopped
> notify device first and then the bus.
> 
> Signed-off-by: Anton Kuchin <antonkuchin@yandex-team.ru>

I kind of like this but this has the potential to break lots of things.
How was this tested?

> ---
>  hw/virtio/virtio.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
> index 04716b5f6c..2ea2edba10 100644
> --- a/hw/virtio/virtio.c
> +++ b/hw/virtio/virtio.c
> @@ -3096,7 +3096,7 @@ static void virtio_vmstate_change(void *opaque, int running, RunState state)
>      bool backend_run = running && virtio_device_started(vdev, vdev->status);
>      vdev->vm_running = running;
>  
> -    if (backend_run) {
> +    if (!backend_run) {
>          virtio_set_status(vdev, vdev->status);
>      }
>  
> @@ -3104,7 +3104,7 @@ static void virtio_vmstate_change(void *opaque, int running, RunState state)
>          k->vmstate_change(qbus->parent, backend_run);
>      }
>  
> -    if (!backend_run) {
> +    if (backend_run) {
>          virtio_set_status(vdev, vdev->status);
>      }
>  }
> -- 
> 2.20.1
diff mbox series

Patch

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 04716b5f6c..2ea2edba10 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -3096,7 +3096,7 @@  static void virtio_vmstate_change(void *opaque, int running, RunState state)
     bool backend_run = running && virtio_device_started(vdev, vdev->status);
     vdev->vm_running = running;
 
-    if (backend_run) {
+    if (!backend_run) {
         virtio_set_status(vdev, vdev->status);
     }
 
@@ -3104,7 +3104,7 @@  static void virtio_vmstate_change(void *opaque, int running, RunState state)
         k->vmstate_change(qbus->parent, backend_run);
     }
 
-    if (!backend_run) {
+    if (backend_run) {
         virtio_set_status(vdev, vdev->status);
     }
 }